fix: find destinations by hotel code in favor of ids

This commit is contained in:
Björn Fromme
2024-12-03 10:22:05 +01:00
parent 40a9f24435
commit 30274121c1
3 changed files with 12 additions and 31 deletions
@@ -2,8 +2,6 @@
namespace App\Controller\HouseManager\Feedback; namespace App\Controller\HouseManager\Feedback;
use App\BusProNet\DataProvider\HotelDataProvider;
use App\BusProNet\Model\Hotel;
use App\Entity\User; use App\Entity\User;
use App\Repository\DispositionRepository; use App\Repository\DispositionRepository;
use Knp\Component\Pager\PaginatorInterface; use Knp\Component\Pager\PaginatorInterface;
@@ -17,7 +15,6 @@ class IndexController extends AbstractController
{ {
public function __construct( public function __construct(
private readonly DispositionRepository $dispositionRepository, private readonly DispositionRepository $dispositionRepository,
private readonly HotelDataProvider $hotelDataProvider,
private readonly PaginatorInterface $paginator private readonly PaginatorInterface $paginator
) { ) {
} }
@@ -29,18 +26,9 @@ class IndexController extends AbstractController
/** @var User $user */ /** @var User $user */
$user = $this->getUser(); $user = $this->getUser();
$hotels = $this
->hotelDataProvider
->findByCode($user->getHotelCode())
;
$hotelBusProIds = array_map(function (Hotel $hotel) {
return $hotel->getBusProId();
}, $hotels);
$query = $this $query = $this
->dispositionRepository ->dispositionRepository
->getDispositionsWithPendingFeedbackQuery($hotelBusProIds) ->getDispositionsWithPendingFeedbackQuery($user->getHotelCode())
; ;
$pagination = $this->paginator->paginate( $pagination = $this->paginator->paginate(
@@ -3,7 +3,6 @@
namespace App\Controller\HouseManager; namespace App\Controller\HouseManager;
use App\BusProNet\DataProvider\HotelDataProvider; use App\BusProNet\DataProvider\HotelDataProvider;
use App\BusProNet\Model\Hotel;
use App\Entity\User; use App\Entity\User;
use App\Repository\DispositionRepository; use App\Repository\DispositionRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@@ -31,18 +30,14 @@ class IndexController extends AbstractController
->findByCode($user->getHotelCode()) ->findByCode($user->getHotelCode())
; ;
$hotelBusProIds = array_map(function (Hotel $hotel) {
return $hotel->getBusProId();
}, $hotels);
$newDispositions = $this $newDispositions = $this
->dispositionRepository ->dispositionRepository
->findNewDispositionsByHotelBusProIds($hotelBusProIds) ->findNewDispositionsByHotelCode($user->getHotelCode())
; ;
$pendingFeedbacks = $this $pendingFeedbacks = $this
->dispositionRepository ->dispositionRepository
->findDispositionsWithPendingFeedbackByHotelBusProIds($hotelBusProIds) ->findDispositionsWithPendingFeedbackByHotelCode($user->getHotelCode())
; ;
return $this->render('house_manager/index.html.twig', [ return $this->render('house_manager/index.html.twig', [
+9 -11
View File
@@ -5,10 +5,8 @@ namespace App\Repository;
use App\Entity\Assignment; use App\Entity\Assignment;
use App\Entity\Disposition; use App\Entity\Disposition;
use App\Entity\Teamer; use App\Entity\Teamer;
use App\Entity\Upload;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query; use Doctrine\ORM\Query;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\Persistence\ManagerRegistry; use Doctrine\Persistence\ManagerRegistry;
/** /**
@@ -150,7 +148,7 @@ class DispositionRepository extends ServiceEntityRepository
; ;
} }
public function findNewDispositionsByHotelBusProIds(array $hotelBusProIds): array public function findNewDispositionsByHotelCode(string $hotelCode): array
{ {
$qb = $this->createQueryBuilder('disposition'); $qb = $this->createQueryBuilder('disposition');
@@ -159,12 +157,12 @@ class DispositionRepository extends ServiceEntityRepository
->innerJoin('disposition.assignment', 'assignment') ->innerJoin('disposition.assignment', 'assignment')
->innerJoin('assignment.destination', 'destination') ->innerJoin('assignment.destination', 'destination')
->where($qb->expr()->andX( ->where($qb->expr()->andX(
$qb->expr()->in('destination.hotelBusProId', ':hotelBusProIds'), $qb->expr()->like('destination.hotelCode', ':hotelCode'),
$qb->expr()->gte('destination.dateTo', ':dateTo'), $qb->expr()->gte('destination.dateTo', ':dateTo'),
$qb->expr()->eq('disposition.status', ':status') $qb->expr()->eq('disposition.status', ':status')
)) ))
->orderBy('destination.dateFrom', 'ASC') ->orderBy('destination.dateFrom', 'ASC')
->setParameter('hotelBusProIds', $hotelBusProIds) ->setParameter('hotelCode', '%'.$hotelCode.'%')
->setParameter('dateTo', new \DateTimeImmutable()) ->setParameter('dateTo', new \DateTimeImmutable())
->setParameter('status', Disposition::STATUS_CONFIRMED) ->setParameter('status', Disposition::STATUS_CONFIRMED)
->getQuery() ->getQuery()
@@ -172,7 +170,7 @@ class DispositionRepository extends ServiceEntityRepository
; ;
} }
public function getDispositionsWithPendingFeedbackQuery(array $hotelBusProIds = null): Query public function getDispositionsWithPendingFeedbackQuery(?string $hotelCode = null): Query
{ {
$qb = $this->createQueryBuilder('disposition'); $qb = $this->createQueryBuilder('disposition');
@@ -196,10 +194,10 @@ class DispositionRepository extends ServiceEntityRepository
->setParameter('dateTo', new \DateTimeImmutable()) ->setParameter('dateTo', new \DateTimeImmutable())
; ;
if (null !== $hotelBusProIds) { if (null !== $hotelCode) {
$qb $qb
->andWhere($qb->expr()->in('destination.hotelBusProId', ':hotelBusProIds')) ->andWhere($qb->expr()->like('destination.hotelCode', ':hotelCode'))
->setParameter('hotelBusProIds', $hotelBusProIds) ->setParameter('hotelCode', '%'.$hotelCode.'%')
; ;
} }
@@ -214,10 +212,10 @@ class DispositionRepository extends ServiceEntityRepository
; ;
} }
public function findDispositionsWithPendingFeedbackByHotelBusProIds(array $hotelBusProIds): array public function findDispositionsWithPendingFeedbackByHotelCode(string $hotelCode): array
{ {
return $this return $this
->getDispositionsWithPendingFeedbackQuery($hotelBusProIds) ->getDispositionsWithPendingFeedbackQuery($hotelCode)
->getResult() ->getResult()
; ;
} }