Feat: Avoid adding of existing availabilities

This commit is contained in:
Björn Fromme
2023-11-03 11:09:03 +01:00
parent 3ae62ccee8
commit 392ea3f16f
2 changed files with 22 additions and 0 deletions
+6
View File
@@ -10,9 +10,15 @@ use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: AvailabilityRepository::class)]
#[UniqueEntity(
fields: ['dateFrom', 'dateTo'],
message: 'Eine Verfügbarkeit für diesen Zeitraum ist bereits vorhanden',
repositoryMethod: 'assertUnique'
)]
class Availability implements BlameableEntityInterface, TimestampableEntityInterface, SoftDeletableEntityInterface
{
use BlameableEntity;
+16
View File
@@ -78,4 +78,20 @@ class AvailabilityRepository extends ServiceEntityRepository
->getResult()
;
}
public function assertUnique(array $fields): array
{
$qb = $this->createQueryBuilder('availability');
return $qb
->where($qb->expr()->andX(
$qb->expr()->eq('availability.dateFrom', ':dateFrom'),
$qb->expr()->eq('availability.dateTo', ':dateTo'),
$qb->expr()->isNull('availability.owner')
))
->setParameters($fields)
->getQuery()
->getResult()
;
}
}