fix: teamer dashboard crashing on isContractDue() without deadline

This commit is contained in:
fromme committed 2026-10-06 15:04:17 +02:00
1 parent 849da8d471
commit 57781ba347
2 files changed
+36 -28

No files matched your search

+14 -5
View File
@@ -78,19 +78,28 @@ class IndexController extends AbstractController
]);
}
/**
* @return list<array{disposition: Disposition, reason: 'contract_due'|'contract_rejected'|'invoice_due'}>
*/
private function processDocuments(array $upcomingDispositions): array
{
$contractUploadDeadlineDays = (int) $this->getParameter('contract_upload_deadline_days');
$invoiceUploadDeadlineDays = (int) $this->getParameter('invoice_upload_deadline_days');
$dispositions = [];
// The due checks need the configured deadlines, which the template cannot pass, so the
// reason is resolved here. Order matters: the first matching reason is the one shown.
foreach ($upcomingDispositions as $disposition) {
/** @var Disposition $disposition */
if ($disposition->isContractDue($contractUploadDeadlineDays)
|| $disposition->isContractRejected()
|| $disposition->isInvoiceDue($invoiceUploadDeadlineDays)
) {
$dispositions[] = $disposition;
$reason = match (true) {
$disposition->isContractDue($contractUploadDeadlineDays) => 'contract_due',
$disposition->isContractRejected() => 'contract_rejected',
$disposition->isInvoiceDue($invoiceUploadDeadlineDays) => 'invoice_due',
default => null,
};
if (null !== $reason) {
$dispositions[] = ['disposition' => $disposition, 'reason' => $reason];
}
}