#-*- coding: utf-8 -*-
#
# Système de gestion des adhésions de Nos oignons
# Copyright © 2013-2014 Nos oignons <contact@nos-oignons.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

require 'erb'
require 'ostruct'

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 renouveler 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 cas où vous faites un don régulier à l'association, merci de nous
            faire signe afin que nous transformions l'un de ses dons en cotisation
            au niveau comptable.

            <% unless member.address.nil? -%>
            Au passage, vous pouvez vérifier que l'adresse postale que vous nous
            avez fournie est toujours bonne (vous n'êtes pas obligé de nous en fournir une), 
            voici celle que nous avons :

            <%= member.address.gsub(/^/, '    ') %>

            <% end -%>
            
	    Au plaisir de continuer l'aventure de Nos oignons avec vous,
            -- 
            Le robot du conseil d'administration

                                  GNU AGPLv3 © Nos oignons <contact@nos-oignons.net>
                                   git clone https://nos-oignons.net/gestion-adh.git
          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 votre 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 renouveler 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

                                  GNU AGPLv3 © Nos oignons <contact@nos-oignons.net>
                                   git clone https://nos-oignons.net/gestion-adh.git
          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 votre 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

                                  GNU AGPLv3 © Nos oignons <contact@nos-oignons.net>
                                   git clone https://nos-oignons.net/gestion-adh.git
          END_OF_ERB
        @all
      end
    end

    def send(member)
      locals = { :member => member, :days => days }
      body = ERB.new(template, nil, '-').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
