--- /dev/null
+#-*- coding: utf-8 -*-
+
+module NosOignons
+ class Reminder < Struct.new(:days, :subject, :template)
+ class << self
+ def all
+ return @all if @all
+
+ @all = []
+ @all << Reminder.new(
+ 30,
+ '[Nos oignons] Renouvellement de votre cotisation',
+ <<-END_OF_ERB.gsub(/^ /, ''))
+ Salut <%= member.name %>,
+
+ La date anniversaire de votre adhésion à Nos oignons est dans <%= days %> jours.
+ Il est donc temps de renouveller votre cotisation si vous souhaitez rester
+ membre de l'association. Si vous avez besoin de plus d'informations sur
+ comment faire, écrivez au conseil d'administration. Répondre à cet email
+ devrait faire l'affaire.
+
+ Au passage, est-ce que vous pourriez vérifier que l'adresse postale est
+ toujours bonne ? Voici celle que nous avons retenu :
+
+ <%= member.address.gsub(/^/, ' ') %>
+
+ Si ce n'est plus le cas, c'est chouette de le signaler.
+
+ Au plaisir de continuer l'aventure de Nos oignons avec vous,
+ --
+ Le robot du conseil d'administration
+ END_OF_ERB
+ @all << Reminder.new(
+ 10,
+ '[Nos oignons] Renouvellement de votre cotisation (rappel)',
+ <<-END_OF_ERB.gsub(/^ /, ''))
+ Salut <%= member.name %>,
+
+ La date anniversaire de ton adhésion à Nos oignons est dans <%= days %> jours.
+ Si vous ne renouvellez pas votre cotisation d'ici là, vous perdrez la qualité
+ de membre de Nos oignons.
+
+ Pour plus d'informations sur comment faire pour renouveller sa cotisation,
+ c'est possible d'écrire au conseil d'administration. Répondre à ce mail
+ devrait fonctionner.
+
+ À bientôt ?
+ --
+ Le robot du conseil d'administration
+ END_OF_ERB
+ @all << Reminder.new(
+ 2,
+ '[Nos oignons] Renouvellement de votre cotisation (dernier rappel)',
+ <<-END_OF_ERB.gsub(/^ /, ''))
+ Salut <%= member.name %>,
+
+ Dans <%= days %> jours, c'est la date anniversaire de ton adhésion à Nos oignons.
+ Vu que vous n'avez pas renouvellé votre cotisation, cela signifie que vous
+ allez bientôt quitter l'association…
+
+ Mais il n'est pas encore trop tard pour le faire !
+
+ Des questions ? Mieux vaut les poser au conseil d'administration. En répondant à
+ cet email par exemple.
+
+ Et sinon… bonne route ! :)
+
+ Bien à vous,
+ --
+ Le robot du conseil d'administration
+ END_OF_ERB
+ @all
+ end
+ end
+
+ def send(member)
+ locals = { :member => member, :days => days }
+ body = ERB.new(template).result(OpenStruct.new(locals).instance_eval { binding })
+ mail = Mail.new :charset => 'utf-8',
+ :from => NosOignons::BOARD_EMAIL,
+ :to => member.email,
+ :subject => subject,
+ :body => body
+ mail.deliver
+ end
+ end
+end