Exemplo n.º 1
0
 public function managetimeAction()
 {
     if (is_null($this->request->getProperty('id'))) {
         throw new \Exception('Страница не найдена!');
     }
     $id = (int) $this->request->getProperty('id');
     $tasksModel = new Tasks();
     $this->view->task = $tasksModel->getTasksDataById($id);
     $timelineModel = new Timeline();
     $timelineModel->setWhere(array('tasks_id' => $id));
     $timeline = $timelineModel->select();
     $timelineToOut = array();
     // TODO: учесть распределение времени на границе дня.
     foreach ($timeline as $item) {
         $dateTime1 = new \DateTime($item['works_begin']);
         if ($item['works_end'] == '0000-00-00 00:00:00') {
             $dateTime2 = new \DateTime(date('Y-m-d H:i:s'));
         } else {
             $dateTime2 = new \DateTime($item['works_end']);
         }
         $interval = $dateTime2->getTimestamp() - $dateTime1->getTimestamp();
         $index = $dateTime1->format('z') . '-' . $dateTime1->format('Y');
         if (!isset($timelineToOut[$index])) {
             $item['day_time_sum'] = gmdate('H часов i минут', $interval);
             $item['interval'] = $interval;
             $timelineToOut[$index] = $item;
         } else {
             $timelineToOut[$index]['interval'] = $timelineToOut[$index]['interval'] + $interval;
             $timelineToOut[$index]['day_time_sum'] = gmdate('H часов i минут', $timelineToOut[$index]['interval']);
         }
     }
     $this->view->timeline = $timelineToOut;
     $seconds = $timelineModel->getTimeSumByTask($id);
     $hours = floor($seconds / 3600);
     $mins = floor(($seconds - $hours * 3600) / 60);
     $this->view->timesum = $hours . ' часов ' . $mins . ' минут';
 }