module MailTemplateConcern extend ActiveSupport::Concern include TagsSubstitutionConcern module Actions SHOW = :show ASK_QUESTION = :ask_question REPLY = :reply end def subject_for_dossier(dossier) replace_tags(subject, dossier) end def body_for_dossier(dossier) replace_tags(body, dossier) end def actions_for_dossier(dossier) [MailTemplateConcern::Actions::SHOW, MailTemplateConcern::Actions::ASK_QUESTION] end def update_rich_body self.rich_body = self.body end included do has_rich_text :rich_body before_save :update_rich_body end module ClassMethods def default_for_procedure(procedure) template_name = default_template_name_for_procedure(procedure) rich_body = ActionController::Base.render template: template_name trix_rich_body = rich_body.gsub(/(?)\n/, '') new(subject: const_get(:DEFAULT_SUBJECT), rich_body: trix_rich_body, procedure: procedure) end def default_template_name_for_procedure(procedure) const_get(:DEFAULT_TEMPLATE_NAME) end end def dossier_tags TagsSubstitutionConcern::DOSSIER_TAGS + TagsSubstitutionConcern::DOSSIER_TAGS_FOR_MAIL end end