@@ -23,6 +23,13 @@ def send_email(address, subject, text)
23
23
mail . deliver
24
24
end
25
25
26
+ def send_lapse_warning_email ( email , full_name , last_payment )
27
+ vars = { 'name' => firstname ( full_name ) ,
28
+ 'date' => last_payment . strftime ( '%Y-%m-%d' ) }
29
+ template = Erubis ::Eruby . new ( File . read ( '../emails/lapse_warning.erb' ) )
30
+ send_email ( email , "Your London Hackspace membership wilk lapse in 7 days" , template . result ( vars ) )
31
+ end
32
+
26
33
def send_unsubscribe_email ( email , full_name , last_payment )
27
34
vars = { 'name' => firstname ( full_name ) ,
28
35
'date' => last_payment . strftime ( '%Y-%m-%d' ) }
@@ -97,6 +104,19 @@ def send_subscribe_email(email, full_name)
97
104
end
98
105
end
99
106
107
+ db . exec ( "SELECT users.*, (SELECT max(timestamp) FROM transactions WHERE user_id = users.id) AS lastsubscription
108
+ FROM users
109
+ WHERE users.subscribed = true
110
+ AND (SELECT max(timestamp) FROM transactions WHERE user_id = users.id) < now() - interval '1 month' - interval '7 days'
111
+ AND (SELECT max(timestamp) FROM transactions WHERE user_id = users.id) > now() - interval '1 month' - interval '8 days'"
112
+ ) do |result |
113
+
114
+ result . each do |user |
115
+ puts "Warning #{ user [ 'full_name' ] } of membership soon to lapse"
116
+ send_lapse_warning_email ( user [ 'email' ] , user [ 'full_name' ] , Time . parse ( user [ 'lastsubscription' ] ) )
117
+ end
118
+ end
119
+
100
120
db . exec ( "SELECT users.*, (SELECT max(timestamp) FROM transactions WHERE user_id = users.id) AS lastsubscription
101
121
FROM users
102
122
WHERE users.subscribed = true
0 commit comments