module NewUser class DossiersController < UserController before_action :ensure_ownership! def attestation send_data(dossier.attestation.pdf.read, filename: 'attestation.pdf', type: 'application/pdf') end def identite @dossier = dossier @user = current_user end def update_identite @dossier = dossier individual_updated = @dossier.individual.update(individual_params) dossier_updated = @dossier.update(dossier_params) if individual_updated && dossier_updated flash.notice = "Identité enregistrée" if @dossier.procedure.module_api_carto.use_api_carto redirect_to users_dossier_carte_path(@dossier.id) else redirect_to modifier_dossier_path(@dossier) end else flash.now.alert = @dossier.errors.full_messages render :identite end end def modifier @dossier = dossier_with_champs # TODO: remove when the champs are unifed if !@dossier.autorisation_donnees if dossier.procedure.for_individual redirect_to identite_dossier_path(@dossier) else redirect_to users_dossier_path(@dossier) end end end # FIXME: remove PiecesJustificativesService # delegate draft save logic to champ ? def update @dossier = dossier_with_champs errors = PiecesJustificativesService.upload!(@dossier, current_user, params) if champs_params[:dossier] && !@dossier.update(champs_params[:dossier]) errors += @dossier.errors.full_messages end if !draft? errors += @dossier.champs.select(&:mandatory_and_blank?) .map { |c| "Le champ #{c.libelle.truncate(200)} doit être rempli." } errors += PiecesJustificativesService.missing_pj_error_messages(@dossier) end if errors.present? flash.now.alert = errors render :modifier elsif draft? flash.now.notice = 'Votre brouillon a bien été sauvegardé.' render :modifier else @dossier.en_construction! redirect_to users_dossier_recapitulatif_path(@dossier) end end private # FIXME: require(:dossier) when all the champs are united def champs_params params.permit(dossier: { champs_attributes: [:id, :value, :piece_justificative_file, value: []] }) end def dossier Dossier.find(params[:id] || params[:dossier_id]) end def dossier_with_champs @dossier_with_champs ||= current_user.dossiers.includes(champs: :type_de_champ).find(params[:id]) end def ensure_ownership! if dossier.user != current_user flash[:alert] = "Vous n'avez pas accès à ce dossier" redirect_to root_path end end def individual_params params.require(:individual).permit(:gender, :nom, :prenom, :birthdate) end def dossier_params params.require(:dossier).permit(:autorisation_donnees) end def draft? params[:submit_action] == 'draft' end end end