Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 66
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
AnswerController
0.00% covered (danger)
0.00%
0 / 66
0.00% covered (danger)
0.00%
0 / 6
110
0.00% covered (danger)
0.00%
0 / 1
 index
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
6
 create
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 store
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
6
 edit
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 update
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
6
 destroy
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
6
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
14class AnswerController extends Controller
15{
16    /**
17     * Display a listing of the resource.
18     *
19     * @param \Illuminate\Http\Request $request
20     * @return \Illuminate\Contracts\View\View
21     */
22    public function index(Request $request): \Illuminate\Contracts\View\View
23    {
24        /** @var \App\Models\Question $questionModel */
25        $questionModel = $request->question;
26
27        /** @var \Illuminate\Database\Eloquent\Builder $answers */
28        $answers = Answer::query()->where('question_id', $questionModel->id);
29
30        if ($request->search) {
31            $this->searchQuery(
32                $answers,
33                $request->search,
34                null,
35                'answer',
36            );
37        }
38
39        $this->sortQuery($answers);
40        $searchFields = trans('Réponse');
41
42        $answerModels = $answers->paginate(12);
43
44        return view('answers.index', compact('answerModels', 'questionModel', 'searchFields'));
45    }
46
47    /**
48     * Show the form for creating a new resource.
49     *
50     * @param \Illuminate\Http\Request $request
51     * @param \App\Models\Answer       $answer
52     * @return \Illuminate\Contracts\View\View
53     */
54    public function create(Request $request, Answer $answer): \Illuminate\Contracts\View\View
55    {
56        /** @var \App\Models\Question $questionModel */
57        $questionModel = $request->question;
58
59        return view('answers.create', [
60            'answerModel' => $answer,
61            'questionModel' => $questionModel
62        ]);
63    }
64
65    /**
66     * Store a newly created resource in storage.
67     *
68     * @param \App\Http\Requests\Answers\StoreAnswerRequest $request
69     * @return \Illuminate\Http\RedirectResponse
70     */
71    public function store(StoreAnswerRequest $request): \Illuminate\Http\RedirectResponse
72    {
73        return DB::transaction(function () use ($request) {
74            $answer = new Answer();
75            $answer->fill($request->validated());
76            if ($answer->saveOrFail()) {
77                return redirect()
78                    ->route('answers.edit', $answer)
79                    ->with('success', trans(
80                        ':model a été créé.',
81                        ['model' => Str::singular(trans('models.classes.answers'))]
82                    ));
83            }
84            return redirect()
85                ->back()
86                ->with('error', trans(
87                    ':model n\'a pas été créé.',
88                    ['model' => Str::singular(trans('models.classes.answers'))]
89                ));
90        });
91    }
92
93    /**
94     * Show the form for editing the specified resource.
95     *
96     * @param \App\Models\Question $question
97     * @param \App\Models\Answer   $answers
98     * @return \Illuminate\Contracts\View\View
99     */
100    public function edit(Question $question, Answer $answers): \Illuminate\Contracts\View\View
101    {
102        return view('answers.edit', [
103            'answerModel' => $answers,
104            'questionModel' => $question
105        ]);
106    }
107
108    /**
109     * Update a spacific resource in storage.
110     *
111     * @param \App\Http\Requests\Answers\UpdateAnswerRequest $request
112     * @param \App\Models\Question                           $question
113     * @param \App\Models\Answer                             $answer
114     * @return \Illuminate\Http\RedirectResponse
115     */
116    public function update(
117        UpdateAnswerRequest $request,
118        Question $question,
119        Answer $answer
120    ): \Illuminate\Http\RedirectResponse {
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}