64 lines
2.5 KiB
PHP
64 lines
2.5 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use App\Models\Classe;
|
||
|
|
use App\Models\Etablissement;
|
||
|
|
use App\Models\User;
|
||
|
|
use Illuminate\Http\RedirectResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Facades\Auth;
|
||
|
|
use Illuminate\Support\Facades\DB;
|
||
|
|
use Illuminate\Support\Facades\Hash;
|
||
|
|
|
||
|
|
class InscriptionController extends Controller
|
||
|
|
{
|
||
|
|
public function store(Request $request): RedirectResponse
|
||
|
|
{
|
||
|
|
$donnees = $request->validate([
|
||
|
|
'prenom' => ['required', 'string', 'max:100'],
|
||
|
|
'nom' => ['required', 'string', 'max:100'],
|
||
|
|
'email' => ['required', 'email', 'unique:users,email'],
|
||
|
|
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||
|
|
'etablissement_nom_liste' => ['required', 'string'],
|
||
|
|
'etablissement_nom' => ['required_if:etablissement_nom_liste,autre', 'nullable', 'string', 'max:150'],
|
||
|
|
'etablissement_ville' => ['required_if:etablissement_nom_liste,autre', 'nullable', 'string', 'max:100'],
|
||
|
|
'etablissement_uai' => ['nullable', 'string', 'max:20'],
|
||
|
|
'formation' => ['nullable', 'string', 'max:100'],
|
||
|
|
'classe' => ['required', 'string', 'max:100'],
|
||
|
|
]);
|
||
|
|
|
||
|
|
[$prof, $classe] = DB::transaction(function () use ($donnees) {
|
||
|
|
$etablissement = $donnees['etablissement_nom_liste'] === 'autre'
|
||
|
|
? Etablissement::firstOrCreate(
|
||
|
|
['nom' => $donnees['etablissement_nom']],
|
||
|
|
['ville' => $donnees['etablissement_ville'], 'uai' => $donnees['etablissement_uai'] ?? null],
|
||
|
|
)
|
||
|
|
: Etablissement::firstOrCreate(['nom' => $donnees['etablissement_nom_liste']]);
|
||
|
|
|
||
|
|
$prof = User::create([
|
||
|
|
'name' => trim($donnees['prenom'].' '.$donnees['nom']),
|
||
|
|
'email' => $donnees['email'],
|
||
|
|
'password' => Hash::make($donnees['password']),
|
||
|
|
'etablissement_id' => $etablissement->id,
|
||
|
|
]);
|
||
|
|
|
||
|
|
$classe = Classe::create([
|
||
|
|
'etablissement_id' => $etablissement->id,
|
||
|
|
'user_id' => $prof->id,
|
||
|
|
'nom' => $donnees['classe'],
|
||
|
|
'formation' => $donnees['formation'] ?? null,
|
||
|
|
]);
|
||
|
|
|
||
|
|
return [$prof, $classe];
|
||
|
|
});
|
||
|
|
|
||
|
|
Auth::guard('web')->login($prof);
|
||
|
|
$request->session()->regenerate();
|
||
|
|
$request->session()->put('jeton_session_web', $prof->demarreNouvelleSession());
|
||
|
|
|
||
|
|
return redirect()->route('mes-classes.show', $classe)
|
||
|
|
->with('classe_creee', true);
|
||
|
|
}
|
||
|
|
}
|