class SupportController < ApplicationController layout "new_application" def index setup_context end def create if direct_message? && create_commentaire flash.notice = "Votre message a été envoyé sur la messagerie de votre dossier." redirect_to users_dossier_recapitulatif_path(dossier) elsif create_conversation flash.notice = "Votre message a été envoyé." redirect_to root_path else setup_context flash.now.alert = "Une erreur est survenue. Vous pouvez nous contactez à #{helpers.mail_to(CONTACT_EMAIL)}." render :index end end private def setup_context @dossier_id = dossier&.id @tags = tags @options = Helpscout::FormAdapter::OPTIONS end def create_conversation Helpscout::FormAdapter.new( subject: params[:subject], email: email, text: params[:text], file: params[:file], dossier_id: dossier&.id, browser: browser_name, tags: tags ).send_form end def create_commentaire dossier.commentaires.create( email: email, file: params[:file], body: "[#{params[:subject]}]

#{params[:text]}" ) end def tags [params[:tags], params[:type]].flatten.compact .map { |tag| tag.split(',') } .flatten .reject(&:blank?).uniq end def browser_name if browser.known? "#{browser.name} #{browser.version} (#{browser.platform.name})" end end def direct_message? user_signed_in? && params[:type] == Helpscout::FormAdapter::TYPE_INSTRUCTION && dossier.present? && !dossier.brouillon? end def dossier @dossier ||= current_user&.dossiers&.find_by(id: params[:dossier_id]) end def email logged_user ? logged_user.email : params[:email] end end