/** * Return the status of a project with versions. * * @param VersionService $versionService * * @return string */ public function parseProjectVersion(VersionService $versionService) { $today = new \DateTime(); $status = 'Cannot determine state'; switch ($versionService->getVersion()->getVersionType()->getId()) { case VersionType::TYPE_PO: if ($versionService->isApproved() && $this->getProject()->getCall()->getFppCloseDate() < $today) { $status = 'No FPP Submitted'; } else { $status = 'PO ' . $versionService->parseStatus(); } break; case VersionType::TYPE_FPP: if (!$versionService->isApproved()) { $status = sprintf("%s %s", strtoupper($versionService->getVersion()->getVersionType()->getType()), $versionService->parseStatus()); break; } // NO BREAK HERE !! // NO BREAK HERE !! case VersionType::TYPE_CR: if (is_null($this->getProject()->getDateStartActual()) || $this->getProject()->getDateStartActual() > $today) { $status = 'Labelled'; } elseif (is_null($this->getProject()->getDateEndActual()) || $this->getProject()->getDateEndActual() > $today || $this->getProject()->getDateStartActual() > $today) { $status = 'Running'; } elseif ($this->getProject()->getDateEndActual() < $today) { $status = 'Completed'; } break; case VersionType::TYPE_SR: $status = 'Cancelled'; break; } return $status; }