Example #1
0
 /**
  * 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;
 }