/** * {@inheritDoc} */ public function setUp() { $this->serviceManager = Bootstrap::getServiceManager(); $this->versionService = $this->serviceManager->get(VersionService::class); $version = new Version(); $version->setId(1); $versionType = new Type(); $versionType->setDescription('This is the description'); $version->setVersionType($versionType); $this->versionService->setVersion($version); $project = new Project(); $project->setProject('This is the project'); $this->projectService = $this->serviceManager->get(ProjectService::class); // $this->projectService->setProject($project); $this->projectService->setProjectId(1); $this->versionService->getVersion()->setProject($this->projectService->getProject()); $authorizeServiceMock = $this->getMockBuilder('BjyAuthorize\\View\\Helper\\IsAllowed')->disableOriginalConstructor()->getMock(); $authorizeServiceMock->expects($this->any())->method('__invoke')->will($this->returnValue(true)); $viewHelperManager = $this->serviceManager->get('viewhelpermanager'); $viewHelperManager->setService('isAllowed', $authorizeServiceMock); $urlViewHelperMock = $this->getMockBuilder(Url::class)->disableOriginalConstructor()->getMock(); $urlViewHelperMock->expects($this->any())->method('__invoke')->will($this->returnValue(true)); $viewHelperManager->setService('url', $urlViewHelperMock); $this->versionLink = $viewHelperManager->get('versionlink'); }
/** * 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; }
public function testParseProjectVersion() { $date = new \DateTime(); $yesterday = $date->sub(new \DateInterval('P1D')); $date = new \DateTime(); $tomorrow = $date->add(new \DateInterval('P1D')); $project = new Project(); $call = new Call(); $call->setFppCloseDate($yesterday); $project->setCall($call); $this->projectService->setProject($project); $versionType = new Type(); $versionType->setId(Type::TYPE_PO); $version = new Version(); $version->setApproved(Version::STATUS_APPROVED); $version->setVersionType($versionType); $versionService = new VersionService(); $versionService->setVersion($version); $this->assertEquals('No FPP Submitted', $this->projectService->parseProjectVersion($versionService), 'Call close date is yesterday and version is approved'); $this->projectService->getProject()->getCall()->setFppCloseDate($tomorrow); $this->assertContains('PO', $this->projectService->parseProjectVersion($versionService), 'Call close date is tomorrow and version is approved'); $versionService->getVersion()->getVersionType()->setId(Type::TYPE_FPP); $versionService->getVersion()->getVersionType()->setType('fpp'); $this->assertContains('Labelled', $this->projectService->parseProjectVersion($versionService), 'FPP submitted and approved'); $versionService->getVersion()->getVersionType()->setId(Type::TYPE_CR); $this->projectService->getProject()->setDateStartActual($tomorrow); $this->assertEquals('Labelled', $this->projectService->parseProjectVersion($versionService), 'CR Project is labelled (will start)'); $this->projectService->getProject()->setDateStartActual($yesterday); $this->assertEquals('Running', $this->projectService->parseProjectVersion($versionService), 'CR Project is running'); $this->projectService->getProject()->setDateStartActual($yesterday); $this->projectService->getProject()->setDateEndActual($yesterday); $this->assertEquals('Completed', $this->projectService->parseProjectVersion($versionService), 'CR Project is completed'); $versionService->getVersion()->getVersionType()->setId(Type::TYPE_SR); $this->assertEquals('Cancelled', $this->projectService->parseProjectVersion($versionService), 'CR Project is cancelled'); $versionService->getVersion()->getVersionType()->setId('blaat'); $this->assertEquals('Cannot determine state.', $this->projectService->parseProjectVersion($versionService), 'Incomplete state'); }
/** * This function takes all the cost versions grouped by a project version. By toggling the toArray * a special array is produced for displaying purposes. * * @param Project $project * @param Version $version * * @return Effort\Version[]|array */ public function findEffortVersionByProjectPerWorkpackageByVersion(Project $project, Version $version) { $effortByWorkpackage = []; $versionService = new VersionService(); foreach ($project->getWorkpackage() as $workpackage) { if (!is_null($workpackage->getDateEnd())) { continue; } $effortVersion = $this->getEntityManager()->getRepository($this->getFullEntityName('Effort\\Version'))->findEffortVersionByWorkpackageAndVersion($workpackage, $version); $effortByWorkpackage[$workpackage->getId()] = ['workpackage' => $workpackage, 'effort' => $versionService->parseCostOrEffortVersionAsArray($effortVersion)]; } return $effortByWorkpackage; }