]> nos-oignons.net Git - gestion-adh.git/blobdiff - lib/nos_oignons/reminder.rb
Implement send-membership-reminders
[gestion-adh.git] / lib / nos_oignons / reminder.rb
diff --git a/lib/nos_oignons/reminder.rb b/lib/nos_oignons/reminder.rb
new file mode 100644 (file)
index 0000000..068a667
--- /dev/null
@@ -0,0 +1,87 @@
+#-*- 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