class Admin::AccompagnateursController < AdminController
  include SmartListing::Helper::ControllerExtensions
  helper SmartListing::Helper

  before_action :retrieve_procedure

  ASSIGN = 'assign'
  NOT_ASSIGN = 'not_assign'

  def show
    assign_scope = @procedure.gestionnaires

    @accompagnateurs_assign = smart_listing_create :accompagnateurs_assign,
      assign_scope,
      partial: "admin/accompagnateurs/list_assign",
      array: true

    not_assign_scope = current_administrateur.gestionnaires.where.not(id: assign_scope.ids)
    not_assign_scope = not_assign_scope.where("email LIKE ?", "%#{params[:filter]}%") if params[:filter]

    @accompagnateurs_not_assign = smart_listing_create :accompagnateurs_not_assign,
      not_assign_scope,
      partial: "admin/accompagnateurs/list_not_assign",
      array: true

    @gestionnaire ||= Gestionnaire.new
  end

  def update
    gestionnaire = Gestionnaire.find(params[:accompagnateur_id])
    procedure = Procedure.find(params[:procedure_id])
    to = params[:to]

    case to
    when ASSIGN
      if gestionnaire.assign_to_procedure(procedure)
        flash.notice = "L'accompagnateur a bien été affecté"
      else
        flash.alert = "L'accompagnateur a déjà été affecté"
      end
    when NOT_ASSIGN
      if gestionnaire.remove_from_procedure(procedure)
        flash.notice = "L'accompagnateur a bien été désaffecté"
      else
        flash.alert = "L'accompagnateur a déjà été désaffecté"
      end
    end

    redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id]
  end
end
