fix: teamer dashboard crashing on isContractDue() without deadline
This commit is contained in:
1 parent
849da8d471
commit
57781ba347
2 files changed
+36
-28
No files matched your search
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,31 +48,30 @@
|
||||
Meine Dokumente
|
||||
</h2>
|
||||
<ul class="divide-y divide-gray-200">
|
||||
{% for disposition in dispositionDocuments %}
|
||||
{% for document in dispositionDocuments %}
|
||||
{% set disposition = document.disposition %}
|
||||
{% set assignment = disposition.assignment %}
|
||||
{% if disposition.contractDue or disposition.invoiceDue or disposition.contractRejected %}
|
||||
<li class="py-2 first:pt-0 last:pb-0">
|
||||
<a href="{{ path('app_teamer_disposition_detail', { 'uuid': disposition.uuid }) }}">
|
||||
<div class="flex items-center space-x-1">
|
||||
{{ icon('alert', 'w-4 h-4 shrink-0') }}
|
||||
<div class="flex items-center space-x-1 truncate">
|
||||
<span class="whitespace-nowrap">{{ assignment.destination.dateFrom|date('d.m.y') }} - {{ assignment.destination.dateTo|date('d.m.y') }}</span>
|
||||
{% include '_partials/_dot.html.twig' %}
|
||||
<span class="whitespace-nowrap">{{ assignment.destination.hotel }}</span>
|
||||
</div>
|
||||
<li class="py-2 first:pt-0 last:pb-0">
|
||||
<a href="{{ path('app_teamer_disposition_detail', { 'uuid': disposition.uuid }) }}">
|
||||
<div class="flex items-center space-x-1">
|
||||
{{ icon('alert', 'w-4 h-4 shrink-0') }}
|
||||
<div class="flex items-center space-x-1 truncate">
|
||||
<span class="whitespace-nowrap">{{ assignment.destination.dateFrom|date('d.m.y') }} - {{ assignment.destination.dateTo|date('d.m.y') }}</span>
|
||||
{% include '_partials/_dot.html.twig' %}
|
||||
<span class="whitespace-nowrap">{{ assignment.destination.hotel }}</span>
|
||||
</div>
|
||||
<div class="pl-5 whitespace-nowrap text-red-500">
|
||||
{%- if disposition.contractDue -%}
|
||||
Honorarvertrag fällig
|
||||
{%- elseif disposition.contractRejected %}
|
||||
Honorarvertrag muss erneut hochgeladen werden
|
||||
{%- elseif disposition.invoiceDue -%}
|
||||
Honorarnote fällig
|
||||
{%- endif %}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="pl-5 whitespace-nowrap text-red-500">
|
||||
{%- if document.reason == 'contract_due' -%}
|
||||
Honorarvertrag fällig
|
||||
{%- elseif document.reason == 'contract_rejected' %}
|
||||
Honorarvertrag muss erneut hochgeladen werden
|
||||
{%- elseif document.reason == 'invoice_due' -%}
|
||||
Honorarnote fällig
|
||||
{%- endif %}
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="py-2 first:pt-0 last:pb-0">
|
||||
-
|
||||
|
||||
Reference in new issue
Block a user