module Manager
  class DossiersController < Manager::ApplicationController
    #
    # Administrate overrides
    #

    # Override this if you have certain roles that require a subset
    # this will be used to set the records shown on the `index` action.
    def scoped_resource
      if unfiltered_list?
        # Don't display discarded dossiers in the unfiltered list…
        Dossier.kept
      else
        # … but allow them to be searched and displayed.
        Dossier.with_discarded
      end
    end

    #
    # Custom actions
    #

    def discard
      dossier = Dossier.find(params[:id])
      dossier.discard_and_keep_track!(current_administration, :manager_request)

      logger.info("Le dossier #{dossier.id} est supprimé par #{current_administration.email}")
      flash[:notice] = "Le dossier #{dossier.id} a été supprimé."

      redirect_to manager_dossier_path(dossier)
    end

    def restore
      dossier = Dossier.with_discarded.find(params[:id])
      dossier.restore(current_administration)

      flash[:notice] = "Le dossier #{dossier.id} a été restauré."

      redirect_to manager_dossier_path(dossier)
    end

    def repasser_en_instruction
      dossier = Dossier.find(params[:id])
      dossier.repasser_en_instruction(current_administration)

      logger.info("Le dossier #{dossier.id} est repassé en instruction par #{current_administration.email}")
      flash[:notice] = "Le dossier #{dossier.id} est repassé en instruction."

      redirect_to manager_dossier_path(dossier)
    end

    private

    def unfiltered_list?
      action_name == "index" && !params[:search]
    end
  end
end