54 lines
2 KiB
PHP
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 !'));
|
|
});
|
|
}
|
|
}
|