Esempio n. 1
0
 /**
  * @param WorkTime $workTime
  * @return WorkTimeDTO
  */
 public static function withEntity(WorkTime $workTime)
 {
     $dto = new WorkTimeDTO();
     $dto->setId($workTime->getId());
     $dto->setDescription($workTime->getDescription());
     $dto->setDuration($workTime->getDuration() ? $workTime->getDuration()->format('H:i') : null);
     $dto->setStartDate($workTime->getStartDate());
     $dto->setEndDate($workTime->getEndDate());
     $dto->setProject(ProjectDTO::withEntity($workTime->getProject()));
     return $dto;
 }
Esempio n. 2
0
 /**
  * @param Project $project
  * @param bool|false $withWorkTime
  * @return ProjectDTO
  */
 public static function withEntity(Project $project, $withWorkTime = false)
 {
     $dto = new ProjectDTO();
     $dto->setId($project->getId());
     $dto->setDescription($project->getDescription());
     $dto->setHourlyRate($project->getHourlyRate());
     $dto->setTitle($project->getTitle());
     if ($withWorkTime) {
         foreach ($project->getWorkTimes() as $workTime) {
             $dto->addWorkTime(WorkTimeDTO::withEntity($workTime));
         }
     }
     return $dto;
 }
 /**
  * @param $userId
  * @param $projectId
  * @return ProjectOverviewDTO
  * @throws ProjectNotFoundException
  */
 public function getProjectOverview($userId, $projectId)
 {
     $project = $this->projectRepository->getProjectWithWorkTime($projectId, $userId);
     if ($project === null) {
         throw new ProjectNotFoundException();
     }
     $projectOverviewDTO = new ProjectOverviewDTO();
     $projectOverviewDTO->setProject(ProjectDTO::withEntity($project, true));
     $totalDurationInMinutes = 0;
     foreach ($project->getWorkTimes() as $workTime) {
         if ($workTime->getEndDate() === null) {
             continue;
         }
         $totalDurationInMinutes += $workTime->getDuration()->format('H') * 60 + $workTime->getDuration()->format('i');
     }
     $projectOverviewDTO->setAmountWorkTimes(count($project->getWorkTimes()));
     $minutes = $totalDurationInMinutes % 60;
     $projectOverviewDTO->setTotalDuration(floor($totalDurationInMinutes / 60) . ':' . ($minutes >= 10 ? $minutes : $minutes . '0'));
     #$projectOverviewDTO->setTotalDurationByMonth()
     #$projectOverviewDTO->setTotalIncome()
     #$projectOverviewDTO->setTotalIncomeByMonth()
     return $projectOverviewDTO;
 }