diff --git a/src/Controller/Teamer/IndexController.php b/src/Controller/Teamer/IndexController.php index 77b04c7..667b5f9 100644 --- a/src/Controller/Teamer/IndexController.php +++ b/src/Controller/Teamer/IndexController.php @@ -57,12 +57,29 @@ class IndexController extends AbstractController ->getUpcomingDispositionsByTeamer($teamer) ; + $dispositionDocuments = $this->processDocuments($upcomingDispositions); + return $this->render('teamer/index.html.twig', [ 'matchingAssignments' => $matchingAssignments, 'recentFeedback' => $recentFeedback, 'pendingApplications' => $pendingApplications, 'currentDispositions' => $currentDispositions, 'upcomingDispositions' => $upcomingDispositions, + 'dispositionDocuments' => $dispositionDocuments, ]); } + + private function processDocuments(array $upcomingDispositions): array + { + $dispositions = []; + + foreach ($upcomingDispositions as $disposition) { + /** @var Disposition $disposition */ + if ($disposition->isContractDue() || $disposition->isContractRejected() || $disposition->isInvoiceDue()) { + $dispositions[] = $disposition; + } + } + + return $dispositions; + } } \ No newline at end of file diff --git a/src/Entity/Disposition.php b/src/Entity/Disposition.php index 165ea5f..e3ae642 100644 --- a/src/Entity/Disposition.php +++ b/src/Entity/Disposition.php @@ -206,6 +206,15 @@ class Disposition implements BlameableEntityInterface, TimestampableEntityInterf return $period->isStarted(); } + public function isContractRejected(): bool + { + if (null === $contractDocument = $this->getDocumentByType(Upload::TYPE_CONTRACT)) { + return false; + } + + return $contractDocument->isRejected(); + } + public function isInvoiceDue(): bool { if (null !== $this->getDocumentByType(Upload::TYPE_INVOICE)) { diff --git a/templates/teamer/disposition/detail.html.twig b/templates/teamer/disposition/detail.html.twig index fbadb8d..67279ee 100644 --- a/templates/teamer/disposition/detail.html.twig +++ b/templates/teamer/disposition/detail.html.twig @@ -23,27 +23,6 @@ } %}