Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
AnswerController
n/a
0 / 0
n/a
0 / 0
10
n/a
0 / 0
 index
n/a
0 / 0
n/a
0 / 0
2
 create
n/a
0 / 0
n/a
0 / 0
1
 store
n/a
0 / 0
n/a
0 / 0
2
 edit
n/a
0 / 0
n/a
0 / 0
1
 update
n/a
0 / 0
n/a
0 / 0
2
 destroy
n/a
0 / 0
n/a
0 / 0
2
1<?php
2
3namespace App\Http\Controllers;
4
5use App\Http\Controllers\Controller;
6use App\Http\Requests\Answers\StoreAnswerRequest;
7use App\Http\Requests\Answers\UpdateAnswerRequest;
8use App\Models\Answer;
9use App\Models\Question;
10use Illuminate\Http\Request;
11use Illuminate\Support\Facades\DB;
12use Illuminate\Support\Str;
13
14/**
15 * @codeCoverageIgnore
16 */
17class AnswerController extends Controller
18{
19    /**
20     * Display a listing of the resource.
21     *
22     * @param \Illuminate\Http\Request $request
23     * @return \Illuminate\Http\Response
24     */
25    public function index(Request $request)
26    {
27        /** @var \App\Models\Question $questionModel */
28        $questionModel = $request->question;
29
30        /** @var \Illuminate\Database\Eloquent\Builder $answers */
31        $answers = Answer::query()->where('question_id', $questionModel->id);
32
33        if ($request->search) {
34            $this->searchQuery(
35                $answers,
36                $request->search,
37                null,
38                'answer',
39            );
40        }
41
42        $this->sortQuery($answers);
43        $searchFields = trans('Réponse');
44
45        $answerModels = $answers->paginate(12);
46
47        return view('answers.index', compact('answerModels', 'questionModel', 'searchFields'));
48    }
49
50    /**
51     * Show the form for creating a new resource.
52     *
53     * @param \Illuminate\Http\Request $request
54     * @param \App\Models\Answer       $answer
55     * @return \Illuminate\Http\Response
56     */
57    public function create(Request $request, Answer $answer)
58    {
59        /** @var \App\Models\Question $questionModel */
60        $questionModel = $request->question;
61
62        return view('answers.create', [
63            'answerModel' => $answer,
64            'questionModel' => $questionModel
65        ]);
66    }
67
68    /**
69     * Store a newly created resource in storage.
70     *
71     * @param \App\Http\Requests\Answers\StoreAnswerRequest $request
72     * @return \Illuminate\Http\Response
73     */
74    public function store(StoreAnswerRequest $request)
75    {
76        return DB::transaction(function () use ($request) {
77            $answer = new Answer();
78            $answer->fill($request->validated());
79            if ($answer->saveOrFail()) {
80                return redirect()
81                    ->route('answers.edit', $answer)
82                    ->with('success', trans(
83                        ':model a été créé.',
84                        ['model' => Str::singular(trans('models.classes.answers'))]
85                    ));
86            }
87            return redirect()
88                ->back()
89                ->with('error', trans(
90                    ':model n\'a pas été créé.',
91                    ['model' => Str::singular(trans('models.classes.answers'))]
92                ));
93        });
94    }
95
96    /**
97     * Show the form for editing the specified resource.
98     *
99     * @param \App\Models\Question $question
100     * @param \App\Models\Answer   $answers
101     * @return \Illuminate\Http\Response
102     */
103    public function edit(Question $question, Answer $answers)
104    {
105        return view('answers.edit', [
106            'answerModel' => $answers,
107            'questionModel' => $question
108        ]);
109    }
110
111    /**
112     * Update a spacific resource in storage.
113     *
114     * @param \App\Http\Requests\Answers\UpdateAnswerRequest $request
115     * @param \App\Models\Question                           $question
116     * @param \App\Models\Answer                             $answer
117     * @return \Illuminate\Http\Response
118     */
119    public function update(UpdateAnswerRequest $request, Question $question, Answer $answer)
120    {
121        return DB::transaction(function () use ($request, $question, $answer) {
122            $answer->fill($request->validated());
123            if ($answer->saveOrFail()) {
124                return redirect()
125                    ->route('questions.answers.edit', ['question' => $question, 'answer' => $answer])
126                    ->with('success', trans(
127                        ':model a été mis à jour.',
128                        ['model' => Str::singular(trans('models.classes.answers'))]
129                    ));
130            }
131            return redirect()
132                ->back()
133                ->with('error', trans(
134                    ':model n\'a pas été mis à jour.',
135                    ['model' => Str::singular(trans('models.classes.answers'))]
136                ));
137        });
138    }
139
140    /**
141     * Remove the specified resource from storage.
142     *
143     * @param \App\Models\Question $question
144     * @param \App\Models\Answer   $answer
145     * @return \Illuminate\Http\RedirectResponse
146     */
147    public function destroy(Question $question, Answer $answer): \Illuminate\Http\RedirectResponse
148    {
149        if ($answer->deleteOrFail()) {
150            return redirect()->route('questions.answers.index', $question)
151                ->with('success', trans(
152                    ':model a été supprimé.',
153                    ['model' => Str::singular(trans('models.classes.answers'))]
154                ));
155        }
156        return redirect()->back()
157            ->with('error', trans(
158                ':model n\'a pas pu être supprimé.',
159                ['model' => Str::singular(trans('models.classes.answers'))]
160            ));
161    }
162}