class ScoresController < ApplicationController allow_unauthenticated_access before_action :set_tartiflette, only: [ :new, :create, :edit_all, :update_all ] before_action :scores_params, only: [ :create, :update_all ] def new end def create if TartifletteScoringService.scored?(@tartiflette, session) redirect_to root_path, alert: "Vous avez déja noté cette tartiflette." return end TartifletteScoringService.submit_scores(@tartiflette, scores_params, session) redirect_to root_path, notice: "Vos scores pour la tartiflette #{@tartiflette.scoring_id} ont été enregistrés." rescue StandardError => e redirect_to root_path, status: :unprocessable_entity, alert: "Erreur lors de l'enregistrement de vos scores : #{e.message}" end def edit_all @scores = @tartiflette.scores end def update_all scores_params.each do |score_id, score_params| score = @tartiflette.scores.find(score_id) score.update!(value: score_params[:value]) end redirect_to root_path, notice: "Vos scores pour la tartiflette #{@tartiflette.scoring_id} ont été mis à jour." rescue StandardError => e redirect_to edit_tartiflette_scores_path(@tartiflette), alert: "Erreur lors de l'enregistrement de vos scores : #{e.message}" end private def set_tartiflette @tartiflette = Tartiflette.find(params[:tartiflette_id]) end def scores_params params.require(:scores).permit!.to_h end end