2021-11-25 16:26:55 +01:00
module Administrateurs
2018-04-19 16:15:44 +02:00
class ServicesController < AdministrateurController
def index
2018-04-23 10:42:30 +02:00
@services = services . ordered
2018-04-20 12:03:02 +02:00
@procedure = procedure
2018-04-19 16:15:44 +02:00
end
2018-04-19 10:44:14 +02:00
def new
2018-04-24 10:07:20 +02:00
@procedure = procedure
2018-10-30 15:16:47 +01:00
@service = Service . new
2018-04-19 10:44:14 +02:00
end
def create
2018-10-30 15:16:47 +01:00
@service = Service . new ( service_params )
@service . administrateur = current_administrateur
2018-04-19 10:44:14 +02:00
2018-10-30 15:16:47 +01:00
if @service . save
2020-07-07 12:31:52 +02:00
redirect_to admin_services_path ( procedure_id : params [ :procedure_id ] ) ,
2018-10-30 15:16:47 +01:00
notice : " #{ @service . nom } créé "
2018-04-19 10:44:14 +02:00
else
2018-07-19 15:29:06 +02:00
@procedure = procedure
2018-10-30 15:16:47 +01:00
flash [ :alert ] = @service . errors . full_messages
2018-04-19 10:44:14 +02:00
render :new
end
end
2018-04-19 18:12:48 +02:00
def edit
@service = service
2018-04-24 10:07:20 +02:00
@procedure = procedure
2018-04-19 18:12:48 +02:00
end
def update
@service = service
if @service . update ( service_params )
2020-07-07 12:31:52 +02:00
redirect_to admin_services_path ( procedure_id : params [ :procedure_id ] ) ,
2018-04-19 15:59:11 +02:00
notice : " #{ @service . nom } modifié "
2018-04-19 18:12:48 +02:00
else
2018-07-19 15:29:06 +02:00
@procedure = procedure
2018-04-19 18:12:48 +02:00
flash [ :alert ] = @service . errors . full_messages
render :edit
end
end
2018-04-20 12:03:02 +02:00
def add_to_procedure
procedure = current_administrateur . procedures . find ( procedure_params [ :id ] )
service = services . find ( procedure_params [ :service_id ] )
procedure . update ( service : service )
redirect_to admin_procedure_path ( procedure . id ) ,
notice : " service affecté : #{ procedure . service . nom } "
end
2018-04-23 15:32:27 +02:00
def destroy
service_to_destroy = service
if service_to_destroy . procedures . present?
if service_to_destroy . procedures . count == 1
2018-09-05 14:48:42 +02:00
message = " la démarche #{ service_to_destroy . procedures . first . libelle } utilise encore le service #{ service_to_destroy . nom } . Veuillez l'affecter à un autre service avant de pouvoir le supprimer "
2018-04-23 15:32:27 +02:00
else
2018-09-05 14:48:42 +02:00
message = " les démarches #{ service_to_destroy . procedures . map ( & :libelle ) . join ( ', ' ) } utilisent encore le service #{ service . nom } . Veuillez les affecter à un autre service avant de pouvoir le supprimer "
2018-04-23 15:32:27 +02:00
end
flash [ :alert ] = message
2020-07-07 12:31:52 +02:00
redirect_to admin_services_path ( procedure_id : params [ :procedure_id ] )
2018-04-23 15:32:27 +02:00
else
2022-08-02 11:44:47 +02:00
service_to_destroy . procedures . with_discarded . discarded . update ( service : nil )
2018-04-23 15:32:27 +02:00
service_to_destroy . destroy
2020-07-07 12:31:52 +02:00
redirect_to admin_services_path ( procedure_id : params [ :procedure_id ] ) ,
2018-04-23 15:32:27 +02:00
notice : " #{ service_to_destroy . nom } est supprimé "
end
end
2018-04-19 16:15:44 +02:00
private
2018-04-19 10:44:14 +02:00
def service_params
2022-07-19 12:41:10 +02:00
params . require ( :service ) . permit ( :nom , :organisme , :type_organisme , :email , :telephone , :horaires , :adresse , :siret )
2018-04-19 10:44:14 +02:00
end
2018-04-19 18:12:48 +02:00
def service
services . find ( params [ :id ] )
end
2018-04-19 16:15:44 +02:00
def services
2019-03-06 17:06:54 +01:00
service_ids = current_administrateur . service_ids
service_ids << maybe_procedure & . service_id
Service . where ( id : service_ids . compact . uniq )
2018-04-19 16:15:44 +02:00
end
2018-04-20 12:03:02 +02:00
def procedure_params
params . require ( :procedure ) . permit ( :id , :service_id )
end
2019-03-06 17:06:54 +01:00
def maybe_procedure
current_administrateur . procedures . find_by ( id : params [ :procedure_id ] )
end
2018-04-20 12:03:02 +02:00
def procedure
current_administrateur . procedures . find ( params [ :procedure_id ] )
end
2018-04-19 16:15:44 +02:00
end
end