WIP: Implement availabilities

This commit is contained in:
Björn Fromme committed 2023-10-02 16:20:12 +02:00
1 parent d3a0021b7d
commit 96dbb875a0
7 files changed
+206 -90

No files matched your search

+23 -39
View File
@@ -3,6 +3,7 @@
namespace App\Repository;
use App\Entity\Availability;
use App\Entity\Teamer;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
@@ -21,46 +22,29 @@ class AvailabilityRepository extends ServiceEntityRepository
parent::__construct($registry, Availability::class);
}
public function save(Availability $entity, bool $flush = false): void
public function getSelectable(Teamer $teamer): array
{
$this->getEntityManager()->persist($entity);
$qb = $this->createQueryBuilder('availability');
if ($flush) {
$this->getEntityManager()->flush();
}
return $qb
->leftJoin('availability.teamers', 'teamer')
->where($qb->expr()->andX(
$qb->expr()->gt('availability.dateFrom', ':today'),
$qb->expr()->orX(
$qb->expr()->isNull('teamer'),
$qb->expr()->neq('teamer', ':teamer')
),
$qb->expr()->orX(
$qb->expr()->isNull('availability.owner'),
$qb->expr()->eq('availability.owner', ':owner')
)
))
->orderBy('availability.dateFrom', 'ASC')
->setParameter('teamer', $teamer)
->setParameter('owner', $teamer)
->setParameter('today', new \DateTimeImmutable())
->getQuery()
->getResult()
;
}
public function remove(Availability $entity, bool $flush = false): void
{
$this->getEntityManager()->remove($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
// /**
// * @return Availability[] Returns an array of Availability objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('a')
// ->andWhere('a.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('a.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?Availability
// {
// return $this->createQueryBuilder('a')
// ->andWhere('a.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}