module Manager
  class OutdatedProceduresController < Manager::ApplicationController
    def index
      @records_per_page = params[:records_per_page] || "10"
      resources = Procedure.all
        .where(procedure_expires_when_termine_enabled: false)
        .order(created_at: :asc)
        .page(params[:_page])
        .per(@records_per_page)
      page = Administrate::Page::Collection.new(dashboard)

      render locals: {
        resources: resources,
        page: page,
        show_search_bar: false
      }
    end

    def bulk_update
      # rubocop:disable Style/CollectionMethods
      procedure_ids = params[:procedure][:ids].select { |_id, selected| selected == "1" }
        .keys
      # rubocop:enable Style/CollectionMethods
      successes = procedure_ids.map do |id|
        procedure = Procedure.find(id)
        success = procedure.update(procedure_expires_when_termine_enabled: true)
        if success
          administration_emails = procedure.administrateurs.map(&:email)
          administration_emails.each do |email|
            AdministrateurMailer.notify_procedure_expires_when_termine_forced(email, procedure).deliver_later
          end
        end
        success
      end

      flash[:notice] = "L'archivage automatique a été activé sur les #{successes.size} procédure(s) choisies"
      redirect_to manager_outdated_procedures_path
    end
  end
end