<?php
require __DIR__ . '/vendor/autoload.php';
use App\Kernel;
use Symfony\Component\Dotenv\Dotenv;

(new Dotenv())->bootEnv(__DIR__ . '/.env');
$kernel = new Kernel($_SERVER['APP_ENV'], (bool)$_SERVER['APP_DEBUG']);
$kernel->boot();
$container = $kernel->getContainer();

$em         = $container->get('doctrine')->getManager();
$doctorRepo = $em->getRepository(\App\Doctor\Entity\Doctor::class);
$clinicRepo = $em->getRepository(\App\Clinic\Entity\Clinic::class);

$plainPassword = 'Test1234';
$passwordHash  = password_hash($plainPassword, PASSWORD_BCRYPT, ['cost' => 13]);

function makeUser(string $mobile, array $roles, $em, string $hash): \App\Auth\Entity\User {
    $u = new \App\Auth\Entity\User($mobile);
    $u->setRoles($roles);
    $u->setPasswordHash($hash);
    $em->persist($u);
    return $u;
}

echo "=== ساخت کاربران تستی ===\n\n";

// ── ۱) دکتر در چند کلینیک ──────────────────────────────────────────
$u1 = makeUser('09100000011', ['ROLE_DOCTOR'], $em, $passwordHash);
$em->flush();

$d1 = new \App\Doctor\Entity\Doctor($u1, 'دکتر آرمان رضایی');
$d1->setDegree('specialist')->setInfo('متخصص قلب و عروق');
$em->persist($d1);
$em->flush();

$clinic1 = $clinicRepo->find(1);
$clinic2 = $clinicRepo->find(2);
if ($clinic1) $clinic1->getDoctors()->add($d1);
if ($clinic2) $clinic2->getDoctors()->add($d1);
$em->flush();

echo "✅ کاربر ۱: دکتر در چند کلینیک\n";
echo "   موبایل: 09100000011  |  پسورد: Test1234\n";
echo "   نقش: ROLE_DOCTOR\n";
echo "   contexts: مطب شخصی + " . ($clinic1?->getName() ?? 'کلینیک ۱') . " + " . ($clinic2?->getName() ?? 'کلینیک ۲') . "\n\n";

// ── ۲) صاحب کلینیک ─────────────────────────────────────────────────
$u2 = makeUser('09100000022', ['ROLE_CLINIC'], $em, $passwordHash);
$em->flush();

$c2 = new \App\Clinic\Entity\Clinic($u2);
$c2->setName('کلینیک تست پگاه');
$em->persist($c2);
$em->flush();

echo "✅ کاربر ۲: صاحب کلینیک\n";
echo "   موبایل: 09100000022  |  پسورد: Test1234\n";
echo "   نقش: ROLE_CLINIC\n";
echo "   contexts: کلینیک تست پگاه  (uuid=" . $c2->getUuid() . ")\n\n";

// ── ۳) منشی ────────────────────────────────────────────────────────
$u3 = makeUser('09100000033', ['ROLE_SECRETARY'], $em, $passwordHash);
$em->flush();

$doctor182 = $doctorRepo->find(182);
if ($doctor182) {
    $sec = new \App\Secretary\Entity\DoctorSecretary($doctor182, $u3);
    $sec->setActive(true);
    $em->persist($sec);
    $em->flush();
    echo "✅ کاربر ۳: منشی\n";
    echo "   موبایل: 09100000033  |  پسورد: Test1234\n";
    echo "   نقش: ROLE_SECRETARY\n";
    echo "   contexts: مطب " . $doctor182->getName() . "\n\n";
} else {
    echo "⚠️  دکتر ۱۸۲ یافت نشد\n\n";
}

// ── ۴) دکتر + صاحب کلینیک ──────────────────────────────────────────
$u4 = makeUser('09100000044', ['ROLE_DOCTOR', 'ROLE_CLINIC'], $em, $passwordHash);
$em->flush();

$d4 = new \App\Doctor\Entity\Doctor($u4, 'دکتر سامان علوی');
$d4->setDegree('specialist')->setInfo('متخصص ارتوپدی');
$em->persist($d4);

$c4 = new \App\Clinic\Entity\Clinic($u4);
$c4->setName('کلینیک تخصصی علوی');
$em->persist($c4);
$em->flush();

echo "✅ کاربر ۴: دکتر + صاحب کلینیک\n";
echo "   موبایل: 09100000044  |  پسورد: Test1234\n";
echo "   نقش: ROLE_DOCTOR + ROLE_CLINIC\n";
echo "   contexts: مطب شخصی دکتر سامان + کلینیک تخصصی علوی (uuid=" . $c4->getUuid() . ")\n\n";

echo "=== تمام ===\n";
