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;
use App\BusProNet\DataProvider\HotelDataProvider;
use App\BusProNet\Model\Hotel;
use App\Entity\User;
use App\Repository\DispositionRepository;
use Knp\Component\Pager\PaginatorInterface;
@@ -17,7 +15,6 @@ class IndexController extends AbstractController
{
public function __construct(
private readonly DispositionRepository $dispositionRepository,
private readonly HotelDataProvider $hotelDataProvider,
private readonly PaginatorInterface $paginator
) {
}
@@ -29,18 +26,9 @@ class IndexController extends AbstractController
/** @var User $user */
$user = $this->getUser();
$hotels = $this
->hotelDataProvider
->findByCode($user->getHotelCode())
;
$hotelBusProIds = array_map(function (Hotel $hotel) {
return $hotel->getBusProId();
}, $hotels);
$query = $this
->dispositionRepository
->getDispositionsWithPendingFeedbackQuery($hotelBusProIds)
->getDispositionsWithPendingFeedbackQuery($user->getHotelCode())
;
$pagination = $this->paginator->paginate(
@@ -3,7 +3,6 @@
namespace App\Controller\HouseManager;
use App\BusProNet\DataProvider\HotelDataProvider;
use App\BusProNet\Model\Hotel;
use App\Entity\User;
use App\Repository\DispositionRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@@ -31,18 +30,14 @@ class IndexController extends AbstractController
->findByCode($user->getHotelCode())
;
$hotelBusProIds = array_map(function (Hotel $hotel) {
return $hotel->getBusProId();
}, $hotels);
$newDispositions = $this
->dispositionRepository
->findNewDispositionsByHotelBusProIds($hotelBusProIds)
->findNewDispositionsByHotelCode($user->getHotelCode())
;
$pendingFeedbacks = $this
->dispositionRepository
->findDispositionsWithPendingFeedbackByHotelBusProIds($hotelBusProIds)
->findDispositionsWithPendingFeedbackByHotelCode($user->getHotelCode())
;
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\Disposition;
use App\Entity\Teamer;
use App\Entity\Upload;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query;
use Doctrine\ORM\Query\Expr\Join;
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');
@@ -159,12 +157,12 @@ class DispositionRepository extends ServiceEntityRepository
->innerJoin('disposition.assignment', 'assignment')
->innerJoin('assignment.destination', 'destination')
->where($qb->expr()->andX(
$qb->expr()->in('destination.hotelBusProId', ':hotelBusProIds'),
$qb->expr()->like('destination.hotelCode', ':hotelCode'),
$qb->expr()->gte('destination.dateTo', ':dateTo'),
$qb->expr()->eq('disposition.status', ':status')
))
->orderBy('destination.dateFrom', 'ASC')
->setParameter('hotelBusProIds', $hotelBusProIds)
->setParameter('hotelCode', '%'.$hotelCode.'%')
->setParameter('dateTo', new \DateTimeImmutable())
->setParameter('status', Disposition::STATUS_CONFIRMED)
->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');
@@ -196,10 +194,10 @@ class DispositionRepository extends ServiceEntityRepository
->setParameter('dateTo', new \DateTimeImmutable())
;
if (null !== $hotelBusProIds) {
if (null !== $hotelCode) {
$qb
->andWhere($qb->expr()->in('destination.hotelBusProId', ':hotelBusProIds'))
->setParameter('hotelBusProIds', $hotelBusProIds)
->andWhere($qb->expr()->like('destination.hotelCode', ':hotelCode'))
->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
->getDispositionsWithPendingFeedbackQuery($hotelBusProIds)
->getDispositionsWithPendingFeedbackQuery($hotelCode)
->getResult()
;
}