/** * @param Ticket $ticket * @param \DateTime $date * * @return string */ public function getStateByDate(Ticket $ticket, \DateTime $date) { $status = $ticket->getStatus(); $time = null; foreach ($ticket->getActivities() as $activity) { if ($activity->getAction() != 'UserChangeStateIssue') { continue; } $activityDate = $activity->getCreated()->getTimestamp(); if ((is_null($time) || $time > $activityDate) && $date->getTimestamp() > $activityDate) { $status = $activity->getValue(); } } return $status; }
/** * @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); } } }