feat: filter teamer by availability at selected date
This commit is contained in:
@@ -22,11 +22,8 @@ class TeamerFilterType extends AbstractType
|
||||
'label' => 'Name',
|
||||
'required' => false,
|
||||
])
|
||||
->add('dateFrom', DatepickerType::class, [
|
||||
'label' => 'verfügbar ab',
|
||||
])
|
||||
->add('dateTo', DatepickerType::class, [
|
||||
'label' => 'verfügbar bis',
|
||||
->add('availableAt', DatepickerType::class, [
|
||||
'label' => 'verfügbar am',
|
||||
])
|
||||
->add('pickupId', BpnPickupType::class, [
|
||||
'label' => 'Buszustieg',
|
||||
|
||||
@@ -2,13 +2,10 @@
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
use App\Entity\JobProfile;
|
||||
|
||||
class TeamerFilterDto extends AbstractFilterDto
|
||||
{
|
||||
protected ?string $name = null;
|
||||
protected ?\DateTimeImmutable $dateFrom = null;
|
||||
protected ?\DateTimeImmutable $dateTo = null;
|
||||
protected ?\DateTimeImmutable $availableAt = null;
|
||||
protected array $jobProfiles = [];
|
||||
protected string $pickupId = '';
|
||||
protected bool $skiLicense = false;
|
||||
@@ -27,26 +24,14 @@ class TeamerFilterDto extends AbstractFilterDto
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDateFrom(): ?\DateTimeImmutable
|
||||
public function getAvailableAt(): ?\DateTimeImmutable
|
||||
{
|
||||
return $this->dateFrom;
|
||||
return $this->availableAt;
|
||||
}
|
||||
|
||||
public function setDateFrom(?\DateTimeImmutable $dateFrom): static
|
||||
public function setAvailableAt(?\DateTimeImmutable $availableAt): static
|
||||
{
|
||||
$this->dateFrom = $dateFrom;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getDateTo(): ?\DateTimeImmutable
|
||||
{
|
||||
return $this->dateTo;
|
||||
}
|
||||
|
||||
public function setDateTo(?\DateTimeImmutable $dateTo): static
|
||||
{
|
||||
$this->dateTo = $dateTo;
|
||||
$this->availableAt = $availableAt;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -52,17 +52,13 @@ class TeamerRepository extends ServiceEntityRepository
|
||||
;
|
||||
}
|
||||
|
||||
if (null !== $filterDto->getDateFrom()) {
|
||||
if (null !== $filterDto->getAvailableAt()) {
|
||||
$qb
|
||||
->andWhere($qb->expr()->gte('availability.dateFrom', ':dateFrom'))
|
||||
->setParameter('dateFrom', $filterDto->getDateFrom())
|
||||
;
|
||||
}
|
||||
|
||||
if (null !== $filterDto->getDateTo()) {
|
||||
$qb
|
||||
->andWhere($qb->expr()->lte('availability.dateTo', ':dateTo'))
|
||||
->setParameter('dateTo', $filterDto->getDateTo())
|
||||
->andWhere($qb->expr()->andX(
|
||||
$qb->expr()->lte('availability.dateFrom', ':availableAt'),
|
||||
$qb->expr()->gte('availability.dateTo', ':availableAt')
|
||||
))
|
||||
->setParameter('availableAt', $filterDto->getAvailableAt())
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,8 +55,7 @@ class TeamerFilterHandler
|
||||
|
||||
$filterDto
|
||||
->setName($data['name'])
|
||||
->setDateFrom($data['date_from'])
|
||||
->setDateTo($data['date_to'])
|
||||
->setAvailableAt($data['available_at'])
|
||||
->setPickupId($data['pickup_id'])
|
||||
->setSkiLicense($data['ski_license'])
|
||||
->setSnowboardLicense($data['snowboard_license'])
|
||||
@@ -79,8 +78,7 @@ class TeamerFilterHandler
|
||||
{
|
||||
$this->getSession()->set($this->namespace, [
|
||||
'name' => $filterDto->getName(),
|
||||
'date_from' => $filterDto->getDateFrom(),
|
||||
'date_to' => $filterDto->getDateTo(),
|
||||
'available_at' => $filterDto->getAvailableAt(),
|
||||
'pickup_id' => $filterDto->getPickupId(),
|
||||
'ski_license' => $filterDto->hasSkiLicense(),
|
||||
'snowboard_license' => $filterDto->hasSnowboardLicense(),
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
{{ form_start(filterForm, { 'attr': { 'hx-post': app.request.uri, 'hx-target': '#htmx-modal', 'hx-swap': 'outerHTML'} }) }}
|
||||
<div class="flex flex-col space-y-2 pb-2">
|
||||
{{ form_row(filterForm.name) }}
|
||||
{{ form_row(filterForm.dateFrom) }}
|
||||
{{ form_row(filterForm.dateTo) }}
|
||||
{{ form_row(filterForm.availableAt) }}
|
||||
{{ form_row(filterForm.jobProfiles) }}
|
||||
{{ form_row(filterForm.pickupId) }}
|
||||
{{ form_row(filterForm.skiLicense) }}
|
||||
|
||||
Reference in New Issue
Block a user