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