/**
  * @param Ticket $ticket
  * @param User   $user
  * @param null   $type
  *
  * @return bool
  */
 public function scheduleTicket(Ticket $ticket, User $user, $type = null)
 {
     if (is_null($type)) {
         $type = 'estimated';
     }
     $funcTime = 'get' . ucfirst(strtolower($type)) . 'Time';
     $time = $ticket->{$funcTime}();
     if ($time == 0) {
         return false;
     }
     if (is_null($ticket->getDueDate())) {
         return false;
     }
     try {
         $events = $this->googleApiService->schedule($user, $time, sprintf('[%s] #%d', $ticket->getProject()->getName(), $ticket->getId()), sprintf('https://projets.preview-app.net/project/%d/issues/kanban?issue=%d %s %s', $ticket->getProject()->getId(), $ticket->getId(), chr(10), $ticket->getDescription()));
         return $events;
     } catch (\Exception $e) {
         var_dump($e->getMessage());
     }
     return false;
 }
 /**
  * @param User    $user
  * @param Ticket $ticket
  *
  * @return bool
  */
 protected function checkClientRead(User $user, Ticket $ticket)
 {
     return in_array($user, $ticket->getProject()->getClients()->toArray());
 }
 /**
  * @param Ticket $ticket
  */
 private function importTicketActivities(Ticket $ticket)
 {
     $activities = $this->previewService->getTicketActivity($ticket->getProject()->getId(), $ticket->getId());
     $activitiesDb = $ticket->getActivities();
     foreach ($activities as $activity) {
         if ($activity->spread_identifier != 'UserChangeStateIssue') {
             continue;
         }
         $create = true;
         foreach ($activitiesDb as $activityDb) {
             if ($activity->spread_identifier == $activityDb->getAction() && $activity->created == $activityDb->getCreated()->getTimestamp() && $activity->value == $activityDb->getValue()) {
                 $create = false;
                 break;
             }
         }
         if ($create == true) {
             $author = $this->entityManager->getRepository('ProjectPreviewUserBundle:User')->find($activity->author->id);
             $activityNew = new Activity();
             $activityNew->setAuthor($author);
             $activityNew->setCreated(new \DateTime('@' . $activity->created));
             $activityNew->setAction($activity->spread_identifier);
             $activityNew->setValue($activity->value);
             $activityNew->setTicket($ticket);
             $this->entityManager->persist($activityNew);
         }
         if ($ticket->getStatus() == 'Fermé' && $activity->spread_identifier == 'UserChangeStateIssue') {
             $ticket->setClosed(new \DateTime('@' . $activity->created));
             $this->entityManager->persist($ticket);
         }
     }
 }
 /**
  * @param Ticket $ticket
  *
  * @return int
  */
 private function calcTotalTime(Ticket $ticket)
 {
     return $ticket->getDesignTime() + $ticket->getUxTime() + $ticket->getFrontTime() + $ticket->getBackTime();
 }