forked from Somnia/SomniaRooms
FareTable y RoomFares
- Implementación modelo tarifarios y tarifas. - Implementación inicial servicio precios.
This commit is contained in:
@@ -20,11 +20,12 @@ class FareTableCrudController extends AbstractCrudController
|
||||
{
|
||||
//$catRepo = $this->entityManager->getRepository(SomeEntity::class);
|
||||
|
||||
yield TextField::new('comment')->setLabel('Name');
|
||||
|
||||
yield AssociationField::new('roomCategory');
|
||||
|
||||
yield DateField::new('startDate');
|
||||
yield DateField::new('endDate');
|
||||
|
||||
yield TextField::new('comment');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
|
||||
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
|
||||
use EasyCorp\Bundle\EasyAdminBundle\Field\MoneyField;
|
||||
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
|
||||
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
|
||||
|
||||
class RoomFareCrudController extends AbstractCrudController
|
||||
{
|
||||
@@ -27,6 +28,8 @@ class RoomFareCrudController extends AbstractCrudController
|
||||
|
||||
yield NumberField::new ('guestNumber');
|
||||
yield MoneyField::new ('fareAmount')->setCurrency('EUR');
|
||||
|
||||
yield TextField::new('dayType')->setMaxLength(2);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Repository\FareTableRepository;
|
||||
use App\Repository\RoomAvailabilityRepository;
|
||||
use App\Repository\RoomCategoryRepository;
|
||||
use App\Service\PricesService;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
class SearchRoomsController extends AbstractController
|
||||
{
|
||||
#[Route('/search/availability', name: 'app_search_availability')]
|
||||
public function getAvailabilityForPeriod(Request $request, RoomAvailabilityRepository $repoAvailability): Response
|
||||
{
|
||||
$payload = $request->toArray();
|
||||
if (\is_null($payload)) {
|
||||
throw new \Exception('Invalid Payload', 400);
|
||||
}
|
||||
$filter = $payload["filter"];
|
||||
|
||||
$startDate = new \DateTime($filter["startDate"]);
|
||||
$endDate = new \DateTime($filter["endDate"]);
|
||||
|
||||
$rs = $repoAvailability->getAvailabilityForPeriod($startDate, $endDate);
|
||||
|
||||
return $this->json($rs);
|
||||
}
|
||||
|
||||
#[Route('/search/availabilityDetails', name: 'app_search_availabilityDetails')]
|
||||
public function getAvailabilityForPeriodDetails(Request $request, RoomAvailabilityRepository $repoAvailability): Response
|
||||
{
|
||||
$payload = $request->toArray();
|
||||
if (\is_null($payload)) {
|
||||
throw new \Exception('Invalid Payload', 400);
|
||||
}
|
||||
$filter = $payload["filter"];
|
||||
|
||||
$startDate = new \DateTime($filter["startDate"]);
|
||||
$endDate = new \DateTime($filter["endDate"]);
|
||||
|
||||
$rs = $repoAvailability->getAvailabilityForPeriodDetails($startDate, $endDate);
|
||||
|
||||
return $this->json($rs);
|
||||
}
|
||||
|
||||
#[Route('/search/fares', name: 'app_search_faresForCategory')]
|
||||
public function getFaresForCategoryOnPeriod(Request $request, RoomCategoryRepository $repoCat): Response
|
||||
{
|
||||
$payload = $request->toArray();
|
||||
if (\is_null($payload)) {
|
||||
throw new \Exception('Invalid Payload', 400);
|
||||
}
|
||||
$filter = $payload["filter"];
|
||||
|
||||
$catId = $filter["roomCategory"];
|
||||
if ($repoCat->find($catId) === null) {
|
||||
throw new \Exception('Invalid Category', 400);
|
||||
}
|
||||
|
||||
$startDate = new \DateTime($filter["startDate"]);
|
||||
$endDate = new \DateTime($filter["endDate"]);
|
||||
|
||||
$daysDiff = $startDate->diff($endDate)->days;
|
||||
if (!$daysDiff || $startDate > $endDate) {
|
||||
throw new \Exception('Invalid time interval', 400);
|
||||
}
|
||||
|
||||
return $this->json(["prices" => $dailyPrices]);
|
||||
}
|
||||
|
||||
#[Route('/search/debug', name: 'app_search_faresDebug')]
|
||||
public function faresDebug(Request $request, PricesService $priceService, FareTableRepository $repoFareTable, RoomCategoryRepository $repoCat): Response
|
||||
{
|
||||
$fareTable[] = $repoFareTable->find(1);
|
||||
$fareTable[] = $repoFareTable->find(2);
|
||||
$cat = $repoCat->find(4);
|
||||
|
||||
//$rs = $repoFareTable->getAllowedGuestNumberOnFareTableList($fareTable);
|
||||
$startDate = new \DateTime("2024-04-20");
|
||||
$endDate = new \DateTime("2024-04-21");
|
||||
|
||||
$rs = $priceService->getCategoryPricesForSearch($cat, $startDate, $endDate);
|
||||
|
||||
return $this->json($rs);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user