public function closeAction(Incident $incident) { $this->assertUserRights(UserRole::ROLE_COLLABORATOR, $incident->getEventIdentifier()->getProject()); $eventIdentifier = $incident->getEventIdentifier(); $closeEvent = new Event(); $closeEvent->setEventIdentifier($eventIdentifier); $closeEvent->setSystem($eventIdentifier->getSystem()->getIdentifier()); $closeEvent->setStatus(Event::STATUS_SUCCESS); $closeEvent->setIsStatusChange(true); $closeEvent->setUnique($eventIdentifier->getLastEvent()->isUnique()); $closeEvent->setType($eventIdentifier->getLastEvent()->getType()); $closeEvent->setComponentId($eventIdentifier->getLastEvent()->getComponentId()); $closeEvent->setMessage('Manually closed by ' . $this->getUser()->getUsername() . '.'); if (!$incident->getAcknowledgedBy()) { $incident->setAcknowledgedBy($this->getUser()); } $em = $this->getDoctrine()->getManager(); $em->persist($incident); $em->flush(); $this->get('koalamon.project.helper')->addEvent($closeEvent); return new JsonResponse(['status' => 'success', 'message' => 'The incident was closed successfully.', 'event_identifier_id' => $eventIdentifier->getId()]); }
private function handleIncident(Event &$event, Event $lastEvent = null) { if ($event->getStatus() == Event::STATUS_FAILURE) { if (!$event->getIsStatusChange() && $event->getEventIdentifier()->getLastIncident()) { $incident = $event->getEventIdentifier()->getLastIncident(); $event->setIncident($incident); } else { $incident = new Incident($event); $incident->setEventIdentifier($event->getEventIdentifier()); $event->setIncident($incident); $event->getEventIdentifier()->setLastIncident($incident); } $incident->increaseEventCount(); $this->entityManager->persist($incident); $this->entityManager->persist($event); $this->entityManager->flush(); } else { if ($event->getIsStatusChange()) { if ($event->getEventIdentifier()->getLastIncident()) { $incident = $event->getEventIdentifier()->getLastIncident(); if ($lastEvent) { $incident->close(); } $this->entityManager->persist($incident); $this->entityManager->flush(); } } } }