Files
Azmog fc267aeb9e feat: ajoute un compte de démo seedé et l'antisèche d'oral
- DemoSeeder : membre demo@cesizen.fr / Demo123! + 18 saisies sur 4 semaines
  (émotions variées, Joie dominante) pour une démo aux rapports déjà fournis
- Antiseche_Oral_CESIZen.md : déroulé 20 min avec démo live intégrée + script

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:44:02 +02:00

86 lines
3.0 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Emotion;
use App\Models\Role;
use App\Models\SaisieTracker;
use App\Models\Tracker;
use App\Models\Utilisateur;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class DemoSeeder extends Seeder
{
/**
* Compte membre de démonstration + journal pré-rempli.
*
* Sert à la soutenance : permet de montrer un journal et des rapports
* (camembert + courbe) déjà fournis, sans avoir à saisir en direct.
* Identifiants : demo@cesizen.fr / Demo123!
*/
public function run(): void
{
$roleMembre = Role::where('nom', 'membre')->firstOrFail();
$demo = Utilisateur::firstOrCreate(
['email' => 'demo@cesizen.fr'],
[
'nom' => 'Démo',
'prenom' => 'Camille',
'email' => 'demo@cesizen.fr',
'password' => Hash::make('Demo123!'),
'role_id' => $roleMembre->id,
'est_actif' => true,
'consentement_rgpd' => true,
]
);
$tracker = Tracker::firstOrCreate(
['utilisateur_id' => $demo->id],
['nom' => 'Mon journal']
);
// Idempotent : si le journal de démo est déjà rempli, on ne duplique pas.
if (SaisieTracker::where('tracker_id', $tracker->id)->exists()) {
return;
}
// Émotions de base (niveau 1) -> couleurs distinctes pour un camembert lisible.
$emotions = Emotion::where('niveau', 1)->pluck('id', 'nom');
// 18 saisies réparties sur les 4 dernières semaines (Joie dominante).
// [jours avant aujourd'hui, émotion, intensité (1-10), note]
$plan = [
[25, 'Joie', 7, 'Bonne nouvelle au travail.'],
[24, 'Surprise', 6, null],
[22, 'Tristesse', 4, 'Journée un peu morose.'],
[20, 'Joie', 8, 'Sortie entre amis.'],
[19, 'Peur', 5, 'Stress avant une présentation.'],
[17, 'Colère', 6, 'Transports en retard.'],
[15, 'Joie', 7, null],
[14, 'Joie', 9, 'Week-end ressourçant.'],
[12, 'Tristesse', 3, null],
[11, 'Surprise', 7, 'Visite imprévue.'],
[9, 'Peur', 4, null],
[8, 'Joie', 8, 'Objectif atteint.'],
[6, 'Dégoût', 5, null],
[5, 'Joie', 7, 'Belle journée.'],
[3, 'Colère', 4, 'Petite contrariété.'],
[2, 'Joie', 8, 'Café avec un proche.'],
[1, 'Peur', 5, 'Nuit agitée.'],
[0, 'Joie', 9, 'Je me sens bien aujourd\'hui.'],
];
foreach ($plan as [$daysAgo, $nom, $intensite, $note]) {
SaisieTracker::create([
'tracker_id' => $tracker->id,
'emotion_id' => $emotions[$nom],
'intensite' => $intensite,
'note' => $note,
'date_saisie' => now()->subDays($daysAgo)->setTime(20, 0),
]);
}
}
}