ldc-legaulois/app/Http/Controllers/Club/SurveyController.php
2024-09-26 12:49:05 +02:00

54 lines
2 KiB
PHP

<?php
namespace App\Http\Controllers\Club;
use App\Http\Controllers\Controller;
use App\Http\Requests\Club\Surveys\StoreSurveyAnswerRequest;
use App\Models\NewsClub;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class SurveyController extends Controller
{
/**
* Display the showing page for an article (whatever the type).
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Contracts\View\View
*/
public function show(Request $request): \Illuminate\Contracts\View\View
{
/** @var \App\Models\Customer $customerModel */
$customerModel = auth('club')->user();
$newsClubModel = NewsClub::query()
->where('published', true)
->where('slug', $request->news_club_slug)
->first();
$customerSurveyAnswers = $customerModel->surveyAnswers
->filter(function ($surveyAnswer) use ($newsClubModel) {
return $surveyAnswer->newsClub->getKey() === $newsClubModel->getKey();
});
return view('club.pages.surveys.show', compact('newsClubModel', 'customerSurveyAnswers'));
}
/**
* Store answers from a club customer.
*
* @param \App\Http\Requests\Club\Surveys\StoreSurveyAnswerRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(StoreSurveyAnswerRequest $request): \Illuminate\Http\RedirectResponse
{
return DB::transaction(function () use ($request) {
/** @var \App\Models\Customer $customerModel */
$customerModel = auth('club')->user();
$newsClubModel = NewsClub::query()
->where('published', true)
->where('id', $request->validated()['news_club_id'])
->first();
$customerModel->surveyAnswers()->sync(collect($request->validated()['answers']));
return redirect()->route('club.news.show', $newsClubModel->slug)
->with('success', trans('Votre réponse à bien été enregistrée !'));
});
}
}