feat: show overdue contracts on admin dashboard

This commit is contained in:
Björn Fromme
2024-07-01 12:54:18 +02:00
parent c5688c84bb
commit 0eb3d6ab3d
3 changed files with 75 additions and 22 deletions
+26
View File
@@ -5,8 +5,10 @@ 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;
/**
@@ -263,4 +265,28 @@ class DispositionRepository extends ServiceEntityRepository
->getResult()
;
}
public function findOverdueContracts(): array
{
$dueDate = (new \DateTimeImmutable())->modify('-7 days');
$qb = $this->createQueryBuilder('disposition');
return $qb
->select('disposition', 'assignment', 'destination', 'document')
->innerJoin('disposition.assignment', 'assignment')
->innerJoin('assignment.destination', 'destination')
->leftJoin('disposition.documents', 'document', Join::WITH, 'document.type = :documentType')
->where($qb->expr()->andX(
$qb->expr()->lte('disposition.createdAt', ':dueDate'),
$qb->expr()->eq('disposition.status', ':status'),
$qb->expr()->isNull('document')
))
->setParameter('documentType', Upload::TYPE_CONTRACT)
->setParameter('dueDate', $dueDate)
->setParameter('status', Disposition::STATUS_CONFIRMED)
->getQuery()
->getResult()
;
}
}