bootEnv(__DIR__ . '/.env'); $kernel = new App\Kernel($_SERVER['APP_ENV'], (bool)$_SERVER['APP_DEBUG']); $kernel->boot(); $em = $kernel->getContainer()->get('doctrine')->getManager(); $conn = $em->getConnection(); $now = time(); // ── Helpers ────────────────────────────────────────────────────────────────── function slot(string $date, int $hour, int $minute = 0): int { return mktime($hour, $minute, 0, (int)date('m', strtotime($date)), (int)date('d', strtotime($date)), (int)date('Y', strtotime($date))); } function today(int $daysOffset = 0): string { return date('Y-m-d', strtotime(($daysOffset >= 0 ? "+$daysOffset" : "$daysOffset") . ' days')); } // ── Load entities ──────────────────────────────────────────────────────────── $doctor1 = $em->getRepository(\App\Doctor\Entity\Doctor::class)->find(1184); // آرمان رضایی $doctor4 = $em->getRepository(\App\Doctor\Entity\Doctor::class)->find(1185); // سامان علوی $clinic2 = $em->getRepository(\App\Clinic\Entity\Clinic::class)->find(203); // کلینیک تست پگاه $clinic4 = $em->getRepository(\App\Clinic\Entity\Clinic::class)->find(204); // کلینیک تخصصی علوی $spec3 = $em->getRepository(\App\Specialty\Entity\Specialty::class)->find(3); // قلب و عروق $spec10 = $em->getRepository(\App\Specialty\Entity\Specialty::class)->find(10); // نورولوژی $spec110= $em->getRepository(\App\Specialty\Entity\Specialty::class)->find(110); // ارتوپدی $spec111= $em->getRepository(\App\Specialty\Entity\Specialty::class)->find(111); // ارتوپدی عمومی // ── کاربر ۱: دکتر آرمان رضایی ─────────────────────────────────────────────── $doctor1->setGender('man') ->setDegree('specialist') ->setMedicalSystemCode('IR-12345') ->setMobileNumber('09100000011') ->setActivityTime(mktime(0,0,0,1,1,2010)) ->setInfo('متخصص قلب و عروق با بیش از ۱۴ سال سابقه بالینی. فارغ‌التحصیل دانشگاه علوم پزشکی تهران. عضو انجمن قلب ایران.') ->setDoctorRate(4.5) ->setDoctorRatePercentage(90.0) ->setActiveDoctorAppointment(true); // تخصص‌ها $doctor1->getSpecialties()->clear(); if ($spec3) $doctor1->getSpecialties()->add($spec3); if ($spec10) $doctor1->getSpecialties()->add($spec10); $em->flush(); // خدمات $conn->executeStatement('DELETE FROM doctor_expertise WHERE doctor_id = ?', [1184]); foreach ([101, 102, 103, 104, 105] as $svcId) { $conn->executeStatement('INSERT IGNORE INTO doctor_expertise (doctor_id, service_id) VALUES (?, ?)', [1184, $svcId]); } echo "✅ دکتر آرمان رضایی بروزرسانی شد\n"; // ── کاربر ۴: دکتر سامان علوی ──────────────────────────────────────────────── $doctor4->setGender('man') ->setDegree('specialist') ->setMedicalSystemCode('IR-67890') ->setMobileNumber('09100000044') ->setActivityTime(mktime(0,0,0,1,1,2012)) ->setInfo('متخصص ارتوپدی و جراحی مفاصل. فارغ‌التحصیل دانشگاه شهید بهشتی. تخصص ویژه در جراحی آرتروسکوپی زانو و تعویض مفصل.') ->setDoctorRate(4.7) ->setDoctorRatePercentage(94.0) ->setActiveDoctorAppointment(true); $doctor4->getSpecialties()->clear(); if ($spec110) $doctor4->getSpecialties()->add($spec110); if ($spec111) $doctor4->getSpecialties()->add($spec111); $em->flush(); $conn->executeStatement('DELETE FROM doctor_expertise WHERE doctor_id = ?', [1185]); foreach ([11101, 11105, 11201, 11401] as $svcId) { $conn->executeStatement('INSERT IGNORE INTO doctor_expertise (doctor_id, service_id) VALUES (?, ?)', [1185, $svcId]); } echo "✅ دکتر سامان علوی بروزرسانی شد\n"; // ── کلینیک تست پگاه (clinic_id=203) ──────────────────────────────────────── $clinic2->setName('کلینیک تخصصی قلب پگاه') ->setInfo('کلینیک تخصصی قلب و عروق با مجهزترین تجهیزات تشخیصی. ارائه خدمات نوار قلب، اکو، تست ورزش و مشاوره تخصصی.') ->setAddress('تهران، خیابان ولیعصر، بالاتر از پارک ساعی، پلاک ۱۲۰') ->setTelephone('02188001234') ->setCityId(108) ->setProvinceId(8) ->setLatitude(35.7219) ->setLongitude(51.3347) ->setIsActive(true) ->setIs247(false) ->setWorkingDays('شنبه تا چهارشنبه ۸-۱۶، پنجشنبه ۸-۱۲'); $em->flush(); // تخصص کلینیک $conn->executeStatement('DELETE FROM clinic_specialties WHERE clinic_id = ?', [203]); foreach ([3, 10] as $sId) { $conn->executeStatement('INSERT IGNORE INTO clinic_specialties (clinic_id, specialty_id) VALUES (?, ?)', [203, $sId]); } // دکتر آرمان را به این کلینیک اضافه کن (علاوه بر clinic id=1,2 که از قبل هست) $conn->executeStatement('INSERT IGNORE INTO clinic_doctors (clinic_id, doctor_id) VALUES (?, ?)', [203, 1184]); echo "✅ کلینیک تخصصی قلب پگاه بروزرسانی شد\n"; // ── کلینیک تخصصی علوی (clinic_id=204) ───────────────────────────────────── $clinic4->setName('کلینیک تخصصی ارتوپدی علوی') ->setInfo('کلینیک تخصصی ارتوپدی با امکانات جراحی آرتروسکوپی. ویزیت، رادیولوژی دیجیتال، MRI، فیزیوتراپی.') ->setAddress('تهران، سعادت‌آباد، میدان کاج، خیابان ۲۴ متری، پلاک ۸۵') ->setTelephone('02122345678') ->setCityId(108) ->setProvinceId(8) ->setLatitude(35.8065) ->setLongitude(51.3822) ->setIsActive(true) ->setIs247(false) ->setWorkingDays('شنبه تا پنجشنبه ۸-۱۸'); $em->flush(); $conn->executeStatement('DELETE FROM clinic_specialties WHERE clinic_id = ?', [204]); foreach ([110, 111] as $sId) { $conn->executeStatement('INSERT IGNORE INTO clinic_specialties (clinic_id, specialty_id) VALUES (?, ?)', [204, $sId]); } // دکتر سامان را به کلینیک خودش اضافه کن $conn->executeStatement('INSERT IGNORE INTO clinic_doctors (clinic_id, doctor_id) VALUES (?, ?)', [204, 1185]); echo "✅ کلینیک تخصصی ارتوپدی علوی بروزرسانی شد\n"; // ── نوبت‌ها ───────────────────────────────────────────────────────────────── // بیمارانی که از قبل وجود دارن $patientIds = [789, 790, 791, 792, 793, 794, 795, 796, 797, 798]; $uuid = fn() => sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) ); $insertAppt = function(int $doctorId, int $userId, int $slotStart, int $slotEnd, string $status) use ($conn, $uuid, $now): void { $conn->executeStatement( 'INSERT INTO appointments (uuid, slot_start, slot_end, status, doctor_id, user_id, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', [$uuid(), $slotStart, $slotEnd, $status, $doctorId, $userId, $now, $now] ); }; // ── نوبت‌های گذشته — دکتر آرمان رضایی (doctor_id=1184) ────────────────── $pastAppts = [ // [-7 تا -1 روز گذشته] [today(-7), 9, 0, 'visited', 789], [today(-7), 10, 0, 'visited', 790], [today(-6), 9, 0, 'cancelled_by_user', 791], [today(-6), 11, 0, 'visited', 792], [today(-5), 9, 0, 'visited', 793], [today(-5), 14, 0, 'no_show', 794], [today(-4), 9, 0, 'visited', 795], [today(-4), 10, 0, 'visited', 796], [today(-3), 9, 0, 'cancelled_by_doctor', 797], [today(-3), 11, 0, 'visited', 798], [today(-2), 9, 0, 'visited', 789], [today(-2), 10, 0, 'visited', 790], [today(-1), 9, 0, 'visited', 791], [today(-1), 11, 0, 'no_show', 792], ]; foreach ($pastAppts as [$date, $h, $m, $status, $patId]) { $start = slot($date, $h, $m); $insertAppt(1184, $patId, $start, $start + 1800, $status); } echo "✅ نوبت‌های گذشته دکتر آرمان ساخته شد (" . count($pastAppts) . " نوبت)\n"; // ── نوبت‌های آینده — دکتر آرمان رضایی (doctor_id=1184) ─────────────────── $futureAppts = [ [today(1), 9, 0, 'reserved', 793], [today(1), 10, 0, 'reserved', 794], [today(1), 11, 0, 'reserved', 795], [today(2), 9, 0, 'reserved', 796], [today(2), 10, 0, 'reserved', 797], [today(3), 9, 0, 'reserved', 798], [today(3), 14, 0, 'reserved', 789], [today(5), 9, 0, 'reserved', 790], [today(7), 10, 0, 'reserved', 791], [today(10),9, 0, 'reserved', 792], ]; foreach ($futureAppts as [$date, $h, $m, $status, $patId]) { $start = slot($date, $h, $m); $insertAppt(1184, $patId, $start, $start + 1800, $status); } echo "✅ نوبت‌های آینده دکتر آرمان ساخته شد (" . count($futureAppts) . " نوبت)\n"; // ── نوبت‌های گذشته — دکتر سامان علوی (doctor_id=1185) ─────────────────── $pastAppts4 = [ [today(-10), 10, 0, 'visited', 793], [today(-10), 11, 0, 'visited', 794], [today(-8), 9, 0, 'visited', 795], [today(-8), 14, 0, 'cancelled_by_user', 796], [today(-6), 9, 0, 'visited', 797], [today(-6), 10, 0, 'visited', 798], [today(-4), 9, 0, 'no_show', 789], [today(-4), 11, 0, 'visited', 790], [today(-2), 10, 0, 'visited', 791], [today(-1), 9, 0, 'visited', 792], ]; foreach ($pastAppts4 as [$date, $h, $m, $status, $patId]) { $start = slot($date, $h, $m); $insertAppt(1185, $patId, $start, $start + 2700, $status); // 45 دقیقه برای ارتوپد } echo "✅ نوبت‌های گذشته دکتر سامان ساخته شد (" . count($pastAppts4) . " نوبت)\n"; // ── نوبت‌های آینده — دکتر سامان علوی (doctor_id=1185) ──────────────────── $futureAppts4 = [ [today(1), 10, 0, 'reserved', 793], [today(1), 11, 0, 'reserved', 794], [today(2), 9, 0, 'reserved', 795], [today(2), 14, 0, 'reserved', 796], [today(3), 10, 0, 'reserved', 797], [today(4), 9, 0, 'reserved', 798], [today(6), 11, 0, 'reserved', 789], [today(8), 9, 0, 'reserved', 790], ]; foreach ($futureAppts4 as [$date, $h, $m, $status, $patId]) { $start = slot($date, $h, $m); $insertAppt(1185, $patId, $start, $start + 2700, $status); } echo "✅ نوبت‌های آینده دکتر سامان ساخته شد (" . count($futureAppts4) . " نوبت)\n"; echo "\n=== همه داده‌ها با موفقیت ساخته شدند ===\n\n"; // ── خلاصه نهایی ────────────────────────────────────────────────────────────── echo "┌─────────────────────────────────────────────────────────────────────┐\n"; echo "│ خلاصه کاربران تستی │\n"; echo "├─────────────────────────────────────────────────────────────────────┤\n"; echo "│ ادمین: 09120671713 / admin123 │\n"; echo "│ دکتر چند کلینیک: 09100000011 / Test1234 (دکتر آرمان رضایی) │\n"; echo "│ صاحب کلینیک: 09100000022 / Test1234 (کلینیک قلب پگاه) │\n"; echo "│ منشی: 09100000033 / Test1234 (منشی دکتر مهناز) │\n"; echo "│ دکتر+کلینیک: 09100000044 / Test1234 (دکتر سامان + کلینیک علوی)│\n"; echo "└─────────────────────────────────────────────────────────────────────┘\n";