85 lines
2.7 KiB
PHP
85 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\ContactType;
|
|
use App\Http\Requests\Bo\Ajax\SendContactMessageRequest;
|
|
use App\Mail\ContactMail;
|
|
use App\Models\Dossier;
|
|
use App\Models\Format;
|
|
use App\Models\Recherche;
|
|
use App\Models\Sujet;
|
|
use Illuminate\Contracts\Database\Eloquent\Builder;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class CommonController extends Controller
|
|
{
|
|
/**
|
|
* Show main interface
|
|
*
|
|
* @return \Illuminate\Contracts\Support\Renderable
|
|
*/
|
|
public function showInterface()
|
|
{
|
|
/** @var \App\Models\User */
|
|
$user = auth()->user();
|
|
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */
|
|
$sujets = $user->sujets;
|
|
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Recherche> */
|
|
$recherches = Recherche::query()->whereHas('user', function (Builder $q) use ($user) {
|
|
$q->where('id', $user->id);
|
|
})->with('sujet')
|
|
->limit(10)
|
|
->orderBy('created_at', 'desc')
|
|
->get();
|
|
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> */
|
|
$dossiers = Dossier::whereHas('users', function ($q) use ($user) {
|
|
$q->where('user_id', $user->id);
|
|
})->with('sujet')->get();
|
|
|
|
return view('home')->with([
|
|
'sujets' => $sujets,
|
|
'recherches' => $recherches,
|
|
'dossiers' => $dossiers
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Envoi d'un message
|
|
*
|
|
* @param \App\Http\Requests\Bo\Ajax\SendContactMessageRequest $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function sendMessage(SendContactMessageRequest $request): JsonResponse
|
|
{
|
|
/** @var \App\Models\User $user */
|
|
$user = auth()->user();
|
|
foreach (config('mail.contactsList.admin') as $mail) {
|
|
Mail::to($mail)
|
|
->send(new ContactMail(ContactType::from($request->type), $request->url, $request->message, $user));
|
|
}
|
|
|
|
return response()->json(['status' => 'OK']);
|
|
}
|
|
|
|
/**
|
|
* Get data by sujet
|
|
*
|
|
* @param \App\Models\Sujet $sujet
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getDatasBySujet(Sujet $sujet): JsonResponse
|
|
{
|
|
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Format> */
|
|
$formats = Format::withoutGlobalScope('App\Scopes\SystemScope')
|
|
->where('system', 1)->get();
|
|
$formats = $formats->merge($sujet->formats);
|
|
|
|
return response()->json([
|
|
'typesvue' => $sujet->typeVues,
|
|
'typesvariantes' => $sujet->variantes,
|
|
'formats' => $formats
|
|
]);
|
|
}
|
|
}
|