summaryrefslogtreecommitdiff
path: root/app/controllers/scores_controller.rb
blob: 650c4e64d8de880caeab4956a0f6f3457367b0f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
Copyright 2019--2025 Marius PETER