| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- namespace App\Tests\Fixture;
- use DateTime;
- use App\Service\Utils\Uuid;
- use App\Entity\Access\Access;
- use App\Entity\Booking\Event;
- use App\Entity\Person\Person;
- use App\Entity\Education\Cycle;
- use App\Entity\Network\Network;
- use App\Entity\Core\ContactPoint;
- use App\Entity\Education\Education;
- use App\Enum\Booking\VisibilityEnum;
- use App\Enum\Organization\LegalEnum;
- use App\Entity\Billing\AccessBilling;
- use App\Entity\Billing\ResidenceArea;
- use App\Entity\Organization\Settings;
- use App\Entity\Billing\BillingSetting;
- use App\Entity\Organization\Subdomain;
- use App\Entity\Organization\Parameters;
- use App\Enum\Core\ContactPointTypeEnum;
- use Doctrine\Persistence\ObjectManager;
- use Doctrine\ORM\EntityManagerInterface;
- use App\Entity\Education\EducationTiming;
- use App\Entity\Organization\Organization;
- use App\Entity\Education\CycleByEducation;
- use App\Entity\Education\EducationStudent;
- use App\Entity\Network\NetworkOrganization;
- use Doctrine\Bundle\FixturesBundle\Fixture;
- use App\Enum\Organization\PrincipalTypeEnum;
- use App\Entity\Education\EducationCurriculum;
- use Doctrine\Common\DataFixtures\Purger\ORMPurger;
- use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
- use Symfony\Component\Serializer\Context\SerializerContextBuilder;
- class OrganizationFixtures extends Fixture implements FixtureGroupInterface
- {
- protected EntityManagerInterface $em;
- public static function getGroups(): array
- {
- return ['poc'];
- }
- /**
- * Delete all DB records before populating fixtures.
- *
- * @return void
- * @throws \Doctrine\DBAL\Exception
- */
- private function purgeDb()
- {
- if (!preg_match('/.*test.*/', $this->em->getConnection()->getDatabase())) {
- throw new \RuntimeException("The DB name shall contain 'test' in its name to be purge");
- }
- $this->em->getConnection()->exec('SET FOREIGN_KEY_CHECKS = 0;');
- $purger = new ORMPurger($this->em);
- $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
- $purger->purge();
- $this->em->getConnection()->exec('SET FOREIGN_KEY_CHECKS = 1;');
- }
- public function load(ObjectManager $em): void
- {
- // purge DB
- $this->em = $em;
- $this->purgeDb();
- // create an organization with a network, legal status accesses, Param , name, id and settings
- $network = new Network();
- $network->setName('NET');
- $em->persist($network);
- $contactPoint0 = new ContactPoint();
- $contactPoint0->setContactType(ContactPointTypeEnum::PRINCIPAL()->getValue());
- $em->persist($contactPoint0);
- // Create the root organization (opentalent)
- $root = new Organization();
- $root->setName('Root');
- $root->setLegalStatus(LegalEnum::COMMERCIAL_SOCIETY()->getValue());
- $root->setPrincipalType(PrincipalTypeEnum::NATIONAL_FEDERATION()->getValue());
- $root->addContactPoint($contactPoint0);
- // subdomain fixtures
- $subdomain = new Subdomain();
- $subdomain->setOrganization($root);
- $subdomain->setSubdomain('subdomain');
- $subdomain->setActive(true);
- $parameters = new Parameters();
- $parameters->setFinancialDate(new DateTime());
- $parameters->setMusicalDate(new DateTime());
- $parameters->setStartCourseDate(new DateTime());
- $parameters->setEndCourseDate(new DateTime());
- $parameters->setAverage(20);
- $parameters->setEditCriteriaNotationByAdminOnly(true);
- $parameters->setSmsSenderName('MySender');
- $parameters->setLogoDonorsMove(false);
- $parameters->setSubDomain('subdomain');
- $parameters->setWebsite('https://www.example.com');
- $parameters->setOtherWebsite('https://www.otherwebsite.com');
- $parameters->setCustomDomain('https://www.customdomain.com');
- $parameters->setDesactivateOpentalentSiteWeb(false);
- $parameters->setBulletinPeriod('SomePeriod');
- $parameters->setBulletinWithTeacher(false);
- $parameters->setBulletinPrintAddress(false);
- $parameters->setBulletinSignatureDirector(true);
- $parameters->setBulletinDisplayLevelAcquired(true);
- $parameters->setBulletinShowEducationWithoutEvaluation(false);
- $parameters->setBulletinViewTestResults(false);
- $parameters->setBulletinShowAbsences(false);
- $parameters->setBulletinShowAverages(true);
- $parameters->setBulletinOutput('SomeOutput');
- $parameters->setBulletinEditWithoutEvaluation(true);
- $parameters->setBulletinReceiver('STUDENTS_AND_THEIR_GUARDIANS');
- $parameters->setBulletinCriteriaSort('BY_CRITERIA_INSERT');
- $parameters->setUsernameSMS('username');
- $parameters->setPasswordSMS('password');
- $parameters->setShowAdherentList(true);
- $parameters->setStudentsAreAdherents(false);
- $parameters->setTimezone('Europe/Paris');
- $parameters->setEducationPeriodicity('ANNUAL');
- $parameters->setAdvancedEducationNotationType('BY_EDUCATION');
- $parameters->setSendAttendanceEmail(false);
- $parameters->setSendAttendanceSms(false);
- $parameters->setGenerateAttendanceReport(true);
- $parameters->setConsultPedagogicResult(true);
- $parameters->setConsultTeacherListing(true);
- $parameters->setPeriodValidation(true);
- $parameters->setNotifyAdministrationAbsence(false);
- $root->setParameters($parameters);
- $settings = new Settings();
- $settings->setProduct('school');
- $settings->setModules(['BillingAdministration']);
- $root->setSettings($settings);
- //create acesses with orga
- $access = new Access();
- $access->setOrganization($root);
- $access->setRoles(["ROLE_ADMIN","ROLE_ADMIN_CORE","ROLE_SUPER_ADMIN"]);
- $teacherAccess = new Access();
- $teacherAccess->setOrganization($root);
- $teacherAccess->setRoles(["ROLE_TEACHER"]);
- // create a person :
- $person = new Person();
- $person->addAccess($access);
- $person->setUsername('username');
- $person->setPassword('password');
- // create BillingSetting with an organization
- $billingSetting = new BillingSetting();
- $billingSetting->setOrganization($root);
- $em->persist($billingSetting);
- $residenceArea = new ResidenceArea();
- $residenceArea->setLabel('label');
- $residenceArea->setBillingSetting($billingSetting);
- //create an AccessBilling with an access
- $accessBilling = new AccessBilling();
- $accessBilling->setAccess($access);
- $accessBilling->setResidenceArea($residenceArea);
- $education = new Education();
- $educationCurriculum = new EducationCurriculum();
- $cycleByEducation = new CycleByEducation();
- $cycle = new Cycle();
- $cycle->setOrganization($root);
- $cycle->setLabel('cycle');
- $cycle->setCycleEnum('CYCLE_1');
- $cycle->setIsSystem(false);
- $cycle->addCycleByEducation($cycleByEducation);
- // Booking
- $now = new \DateTime('now');
- $start = $now->add(new \DateInterval('P1M'));
- $end = $now->add(new \DateInterval('P1M1D'));
- $event = new Event();
- $event->setOrganization($root);
- $event->setName('My Event');
- $event->setDatetimeStart($start);
- $event->setDatetimeEnd($end);
- $event->setVisibility(VisibilityEnum::PUBLIC_VISIBILITY());
- $event->setUuid(Uuid::uuid());
- $em->persist($root);
- $em->persist($event);
- $em->persist($person);
- $em->persist($access);
- $em->persist($accessBilling);
- $em->persist($billingSetting);
- $em->persist($residenceArea);
- $em->persist($subdomain);
- $em->persist($parameters);
- $em->flush();
- }
- }
|