Search code examples
laravelroutescontrollerlaravel-blade

the patient card is not displaying permanently


I'm trying to create a patient card which is automatically added to the "seated waiting" zone at the beginning it showed me the card and in a fraction of a second it disappeared how can I display the card permanently? when I asked ChatGPT he told me that it's a redirection problem but I don't see where this problem is

here is my controller

public function storePatient(Request $request)
{
    $validatedData = $request->validate([
        'nom' => 'required|string|max:255',
        'nomJeuneFille' => 'nullable|string|max:255',
        'lieuNaissance' => 'required|string|max:255',
        'telephone' => 'required|string|max:255',
        'email' => 'nullable|email|max:255',
        'prenom' => 'required|string|max:255',
        'dateNaissance' => 'required|date',
        'adresse' => 'required|string|max:255',
        'numeroAssurance' => 'required|string|max:255',
        'sexe' => 'required',
    ]);

    $patient = Patient::create($validatedData);

    $dateNaissance = new DateTime($patient->dateNaissance);
    $aujourdhui = new DateTime();
    $diff = $dateNaissance->diff($aujourdhui);
    $age = $diff->y;

    $icone = ($patient->sexe === 'homme') ? 'male.png' : 'femelle.png';

    $cartePatient = "<div class='carte-patient'>
                        <p>Nom: {$patient->nom} {$patient->prenom}</p>
                        <p>Âge: {$age}</p>
                        <img src='images/{$icone}' alt='Genre'>
                    </div>";

    $cartesPatients = session()->has('cartesPatients') ? session('cartesPatients') : [];
    $cartesPatients[] = $cartePatient;


    return back()->with(['success' => 'Patient ajouté avec succès.', 'cartesPatients' => $cartesPatients]);
}

my routes:

<?php

use App\Http\Controllers\AdminController;
use App\Http\Controllers\ChangerMotDePasseController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\SallesController;
use Illuminate\Support\Facades\Route;

Route::get('/', [LoginController::class,'login'])->name('Login.login');
Route::post('/', [LoginController::class,'loginPost']);
Route::get('/logout', [LoginController::class,'logout'])->name('logout');

Route::middleware(['auth'])->group(function () {
    Route::get('/administrateur', [AdminController::class,'index'])->name('Admin.index');
    Route::post('/administrateur', [AdminController::class,'store']);
    Route::post('/unites-fonctionnelles', [AdminController::class, 'storeUniteFonctionnelle'])->name('unites-fonctionnellesStore');;
    Route::get('/changer_mot_de_passe', [ChangerMotDePasseController::class,'index'])->name('ChangerMdp.index');
    Route::post('/changer-mot-de-passe', [ChangerMotDePasseController::class, 'update'])->name('postChangerMotDePasse');
    Route::get('/salles', [SallesController::class,'index'])->name('Salles.index');
    Route::get('/medecins', [AdminController::class,'getMedecins'])->name('Admin.getMedecins');
    Route::get('/infirmiers', [AdminController::class,'getInfirmiers'])->name('Admin.getInfirmiers');
    Route::get('/admin', [AdminController::class,'getAdmins'])->name('Admin.getAdmins');
    Route::get('/logoutP', [SallesController::class,'logoutP'])->name('logoutP');
    Route::get('/logout', [SallesController::class,'logout'])->name('logout');
    Route::get('/options', [SallesController::class, 'getOptions']);
    Route::post('/ajouter-patient', [SallesController::class, 'storePatient'])->name('AjouterPatient');
});

and this is where the card is supposed to be:

<div class="zone_attente">
                        <p class="titre">Zone d'attente</p>
                        <div class="attente_assise" id="attenteAssise">
                            <p class="titre_secondaire">Attente assise</p>
                            @if(session()->has('cartePatient'))
                            <div class="attenteAssise">
                                {!! session('cartePatient') !!}
                            </div>
                            @endif
                        </div>
                        <div class="attente_couchee">
                            <p class="titre_secondaire">Attente couchée</p>
                            <div class="attenteCouchee"></div>
                        </div>
                    </div>

Solution

  • try this

    public function storePatient(Request $request)
    {
        // Your validation code...
    
        $patient = Patient::create($validatedData);
    
        // Build the patient card HTML
        $dateNaissance = new DateTime($patient->dateNaissance);
        $aujourdhui = new DateTime();
        $diff = $dateNaissance->diff($aujourdhui);
        $age = $diff->y;
        $icone = ($patient->sexe === 'homme') ? 'male.png' : 'femelle.png';
        $cartePatient = "<div class='carte-patient'>
                            <p>Nom: {$patient->nom} {$patient->prenom}</p>
                            <p>Âge: {$age}</p>
                            <img src='images/{$icone}' alt='Genre'>
                        </div>";
    
        // Store the patient card in the session
        $cartesPatients = session()->has('cartesPatients') ? session('cartesPatients') : [];
        $cartesPatients[] = $cartePatient;
        session(['cartesPatients' => $cartesPatients]);
    
        return back()->with(['success' => 'Patient ajouté avec succès.']);
    }
    

    for view

    public function storePatient(Request $request)
    {
        // Your validation code...
    
        $patient = Patient::create($validatedData);
    
        // Build the patient card HTML
        $dateNaissance = new DateTime($patient->dateNaissance);
        $aujourdhui = new DateTime();
        $diff = $dateNaissance->diff($aujourdhui);
        $age = $diff->y;
        $icone = ($patient->sexe === 'homme') ? 'male.png' : 'femelle.png';
        $cartePatient = "<div class='carte-patient'>
                            <p>Nom: {$patient->nom} {$patient->prenom}</p>
                            <p>Âge: {$age}</p>
                            <img src='images/{$icone}' alt='Genre'>
                        </div>";
    
        // Store the patient card in the session
        $cartesPatients = session()->has('cartesPatients') ? session('cartesPatients') : [];
        $cartesPatients[] = $cartePatient;
        session(['cartesPatients' => $cartesPatients]);
    
        return back()->with(['success' => 'Patient ajouté avec succès.']);
    }