module Instructeurs
  class BatchOperationsController < ApplicationController
    before_action :set_procedure
    before_action :ensure_ownership!

    def create
      batch = BatchOperation.safe_create!(batch_operation_params)
      flash[:alert] = "Le traitement de masse n'a pas été lancé. Vérifiez que l'action demandée est possible pour les dossiers sélectionnés" if batch.blank?
      redirect_back(fallback_location: instructeur_procedure_url(@procedure.id))
    end

    private

    def batch_operation_params
      params.require(:batch_operation)
        .permit(:operation, :motivation, :justificatif_motivation, dossier_ids: [])
        .merge(dossier_ids: params['batch_operation']['dossier_ids'].join(',').split(',').uniq)
        .merge(instructeur: current_instructeur)
    end

    def set_procedure
      @procedure = Procedure.find(params[:procedure_id])
    end

    def ensure_ownership!
      if !current_instructeur.procedures.exists?(@procedure.id)
        flash[:alert] = "Vous n’avez pas accès à cette démarche"
        redirect_to root_path
      end
    end
  end
end