getGenMode(); if ($genMode == ExampleDataConfig::GENMODE_EXAMPLE) { return "'Example' generation mode is not supported yet!"; } $this->entityManager->beginTransaction(); try { if ($config->getGenRoomCategories()) { $this->GenerateRoomCategories(); } if ($config->getGenAvailability()) { $this->GenerateAvailability($config); } if ($config->getGenFaretables()) { $this->GenerateFares($config); } $this->entityManager->flush(); $this->entityManager->commit(); } catch (\Throwable $th) { $this->entityManager->rollback(); throw $th; } return "OK"; } private function GenerateRoomCategories(): bool { //TODOME. return true; } private function GenerateAvailability(ExampleDataConfig $config): bool { $roomCategoryList = $this->roomCategoryRepository->findAll(); foreach ($roomCategoryList as $room) { //TODOME: Make amounts configurable. $amount = random_int(0, 7); $this->roomAvailabilityRepository->bulkEditRoomAvailabilityForCategoryOnPeriod( $room, $config->getStartDate(), $config->getEndDate(), $amount, useTransactions: false ); } return true; } private function GenerateFares(ExampleDataConfig $config): bool { $generationTime = new DateTime(); $strGenTime = $generationTime->format('d-m-Y H:i:s'); $roomCategoryList = $this->roomCategoryRepository->findAll(); foreach ($roomCategoryList as $room) { $list = $this->fareTableRepository->findFareTable($room->getId(), $config->getStartDate(), $config->getEndDate()); if (count($list) > 0) { //TODOME: Log info. continue; } $fareTable = new FareTable(); $fareTable->setStartDate($config->getStartDate()); $fareTable->setEndDate($config->getEndDate()); $fareTable->setRoomCategory($room); $fareTable->setComment("Autogenerated " . $strGenTime); $this->entityManager->persist($fareTable); for ($i = 1; $i < $room->getMaxGuestNum(); $i++) { $roomFare = new RoomFare(); $roomFare->setGuestNumber($i); $roomFare->setFareTable($fareTable); //TODOME: Make amounts configurable. // Random price per person. $amount = random_int(10, 25) * $i * 100; $roomFare->setFareAmount($amount); $this->entityManager->persist($roomFare); } } return true; } }