'Jean-Baptiste', 'last_name' => 'Ramanana', 'email' => 'jb.ramanana@thanasoft.com', 'phone' => '+261341235001', 'job_title' => 'Thanatopracteur Senior', 'hire_date' => '2020-08-01', 'active' => true, ], [ 'first_name' => 'Marie', 'last_name' => 'Andriamanantsoa', 'email' => 'marie.andriamanantsoa@thanasoft.com', 'phone' => '+261341235003', 'job_title' => 'Thanatopracteur Spécialisé', 'hire_date' => '2019-07-01', 'active' => true, ], [ 'first_name' => 'Paul', 'last_name' => 'Rakotomanga', 'email' => 'paul.rakotomanga@thanasoft.com', 'phone' => '+261341235005', 'job_title' => 'Thanatopracteur Junior', 'hire_date' => '2021-11-01', 'active' => true, ], [ 'first_name' => 'Sophie', 'last_name' => 'Andriatiana', 'email' => 'sophie.andriatiana@thanasoft.com', 'phone' => '+261341235007', 'job_title' => 'Thanatopracteur Expert', 'hire_date' => '2018-06-01', 'active' => true, ], [ 'first_name' => 'David', 'last_name' => 'Randriamahandry', 'email' => 'david.randriamahandry@thanasoft.com', 'phone' => '+261341235009', 'job_title' => 'Thanatopracteur', 'hire_date' => '2022-03-01', 'active' => true, ], [ 'first_name' => 'Lina', 'last_name' => 'Ramaniraka', 'email' => 'lina.ramaniraka@thanasoft.com', 'phone' => '+261341235011', 'job_title' => 'Thanatopracteur', 'hire_date' => '2023-10-01', 'active' => true, ], [ 'first_name' => 'Marc', 'last_name' => 'Andriamatsiroa', 'email' => 'marc.andriamatsiroa@thanasoft.com', 'phone' => '+261341235013', 'job_title' => 'Thanatopracteur Chief', 'hire_date' => '2018-01-01', 'active' => true, ], [ 'first_name' => 'Julie', 'last_name' => 'Rakotomalala', 'email' => 'julie.rakotomalala@thanasoft.com', 'phone' => '+261341235015', 'job_title' => 'Thanatopracteur Assistant', 'hire_date' => '2024-05-01', 'active' => true, ], ]; // Create employees and get their IDs $employeeIds = []; foreach ($employees as $employeeData) { $employee = \App\Models\Employee::create($employeeData); $employeeIds[] = $employee->id; } // Create thanatopractitioners linked to the employees $thanatopractitioners = [ [ 'employee_id' => $employeeIds[0], 'diploma_number' => 'TP-DIPL-001-2020', 'diploma_date' => '2020-06-15', 'authorization_number' => 'TP-AUTH-001-2020', 'authorization_issue_date' => '2020-07-01', 'authorization_expiry_date' => '2025-07-01', 'notes' => 'Thanatopracteur senior spécialisé en thanatopraxie générale et reconstructive.', ], [ 'employee_id' => $employeeIds[1], 'diploma_number' => 'TP-DIPL-002-2019', 'diploma_date' => '2019-05-10', 'authorization_number' => 'TP-AUTH-002-2019', 'authorization_issue_date' => '2019-06-01', 'authorization_expiry_date' => '2024-06-01', 'notes' => 'Spécialiste en thanatopraxie pédiatrique avec 5 ans d\'expérience.', ], [ 'employee_id' => $employeeIds[2], 'diploma_number' => 'TP-DIPL-003-2021', 'diploma_date' => '2021-09-22', 'authorization_number' => 'TP-AUTH-003-2021', 'authorization_issue_date' => '2021-10-01', 'authorization_expiry_date' => '2026-10-01', 'notes' => 'Thanatopracteur junior spécialisé en thanatopraxie esthétique.', ], [ 'employee_id' => $employeeIds[3], 'diploma_number' => 'TP-DIPL-004-2018', 'diploma_date' => '2018-04-05', 'authorization_number' => 'TP-AUTH-004-2018', 'authorization_issue_date' => '2018-05-01', 'authorization_expiry_date' => '2023-05-01', 'notes' => 'Expert en thanatopraxie reconstructive et histopathologie.', ], [ 'employee_id' => $employeeIds[4], 'diploma_number' => 'TP-DIPL-005-2022', 'diploma_date' => '2022-01-18', 'authorization_number' => 'TP-AUTH-005-2022', 'authorization_issue_date' => '2022-02-01', 'authorization_expiry_date' => '2027-02-01', 'notes' => 'Spécialiste en thanatopraxie traditionnelle et culturelle.', ], [ 'employee_id' => $employeeIds[5], 'diploma_number' => 'TP-DIPL-006-2023', 'diploma_date' => '2023-08-12', 'authorization_number' => 'TP-AUTH-006-2023', 'authorization_issue_date' => '2023-09-01', 'authorization_expiry_date' => '2028-09-01', 'notes' => 'Thanatopracteur nouvellement certifiée, spécialisée en techniques modernes.', ], [ 'employee_id' => $employeeIds[6], 'diploma_number' => 'TP-DIPL-007-2017', 'diploma_date' => '2017-11-30', 'authorization_number' => 'TP-AUTH-007-2017', 'authorization_issue_date' => '2018-01-01', 'authorization_expiry_date' => '2023-01-01', 'notes' => 'Responsable principal des thanatopracteurs, expert en histopathologie.', ], [ 'employee_id' => $employeeIds[7], 'diploma_number' => 'TP-DIPL-008-2024', 'diploma_date' => '2024-03-25', 'authorization_number' => 'TP-AUTH-008-2024', 'authorization_issue_date' => '2024-04-01', 'authorization_expiry_date' => '2029-04-01', 'notes' => 'Thanatopracteur assistante, en formation continue en thanatopraxie assistée.', ], ]; foreach ($thanatopractitioners as $thanatopractitionerData) { $thanatopractitioner = Thanatopractitioner::create($thanatopractitionerData); // Create some practitioner documents for each thanatopractitioner $this->createPractitionerDocuments($thanatopractitioner); } // Create inactive thanatopractitioners for testing $inactiveEmployee1 = \App\Models\Employee::create([ 'first_name' => 'Ancien', 'last_name' => 'Thanatopracteur', 'email' => 'ancien.thanato@thanasoft.com', 'phone' => '+261341235017', 'job_title' => 'Ancien Thanatopracteur', 'hire_date' => '2015-03-01', 'active' => false, ]); $inactive1 = Thanatopractitioner::create([ 'employee_id' => $inactiveEmployee1->id, 'diploma_number' => 'TP-DIPL-TEST-001', 'diploma_date' => '2015-01-01', 'authorization_number' => 'TP-AUTH-TEST-001', 'authorization_issue_date' => '2015-02-01', 'authorization_expiry_date' => '2020-02-01', 'notes' => 'Thanatopracteur inactif, autorisation expirée.', ]); $this->createPractitionerDocuments($inactive1); $inactiveEmployee2 = \App\Models\Employee::create([ 'first_name' => 'Thanatopracteur', 'last_name' => 'Suspendu', 'email' => 'thanato.suspendu@thanasoft.com', 'phone' => '+261341235019', 'job_title' => 'Thanatopracteur Suspendu', 'hire_date' => '2018-08-01', 'active' => false, ]); $inactive2 = Thanatopractitioner::create([ 'employee_id' => $inactiveEmployee2->id, 'diploma_number' => 'TP-DIPL-TEST-002', 'diploma_date' => '2018-06-01', 'authorization_number' => 'TP-AUTH-TEST-002', 'authorization_issue_date' => '2018-07-01', 'authorization_expiry_date' => '2023-07-01', 'notes' => 'Thanatopracteur temporairement suspendu.', ]); $this->createPractitionerDocuments($inactive2); } /** * Create practitioner documents for a thanatopractitioner. */ private function createPractitionerDocuments(Thanatopractitioner $thanatopractitioner): void { $documents = [ [ 'doc_type' => 'diploma', 'issue_date' => $thanatopractitioner->diploma_date, 'expiry_date' => date('Y-m-d', strtotime('+5 years', strtotime($thanatopractitioner->diploma_date))), 'status' => 'active', ], [ 'doc_type' => 'certification', 'issue_date' => date('Y-01-01'), 'expiry_date' => date('Y-12-31'), 'status' => 'active', ], ]; // Add specialized documents based on notes content if (strpos($thanatopractitioner->notes, 'reconstructive') !== false || strpos($thanatopractitioner->notes, 'histopathologie') !== false) { $documents[] = [ 'doc_type' => 'specialization', 'issue_date' => $thanatopractitioner->diploma_date, 'expiry_date' => date('Y-m-d', strtotime('+3 years', strtotime($thanatopractitioner->diploma_date))), 'status' => 'active', ]; } // Add expired documents for inactive thanatopractitioners $employee = $thanatopractitioner->employee; if ($employee->active === false) { $documents[] = [ 'doc_type' => 'expired_certificate', 'issue_date' => '2020-01-01', 'expiry_date' => '2023-01-01', 'status' => 'expired', ]; } foreach ($documents as $documentData) { PractitionerDocument::create(array_merge($documentData, [ 'practitioner_id' => $thanatopractitioner->id, 'file_id' => null, // Will be set when files table is implemented ])); } } }