/**
  * Sends a message via email created by information given in the event.
  *
  * @param Event $event
  */
 public function send(Event $event)
 {
     $subject = $this->varContainer->replace($this->subject);
     $body = $this->container->get('templating')->render('KoalamonNotificationBundle:Sender:EMail/email_' . $event->getStatus() . '.html.twig', $this->varContainer->getTemplateVariables());
     $message = \Swift_Message::newInstance()->setSubject($subject)->setFrom(['*****@*****.**' => 'KoalaAlert'])->setTo($this->emailAddresses)->setBody($body, 'text/html');
     $this->container->get('mailer')->send($message);
 }
 public function sendNotification(NotificationConfiguration $config, Event $event, Event $lastEvent = null)
 {
     $container = new VariableContainer();
     $container->addVariable('event.status', $event->getStatus());
     $container->addVariable('event.message', $event->getMessage());
     $container->addVariable('event.url', $this->router->generate("bauer_incident_dashboard_core_homepage", array('project' => $event->getEventIdentifier()->getProject()->getIdentifier()), true));
     if ($lastEvent) {
         $container->addVariable('lastevent.message', $lastEvent->getMessage());
         $container->addVariable('lastevent.status', $lastEvent->getStatus());
     }
     $container->addVariable('system.name', $event->getSystem());
     $container->addVariable('tool.name', $event->getEventIdentifier()->getTool()->getName());
     $sender = SenderFactory::getSender($config->getSenderType());
     if ($sender instanceof ContainerAwareInterface) {
         $sender->setContainer($this->container);
     }
     $sender->init($this->router, $config->getOptions(), $container);
     $sender->send($event);
 }
 private function notify(Event $event, Event $lastEvent = null)
 {
     $configs = $this->doctrineManager->getRepository('KoalamonNotificationBundle:NotificationConfiguration')->findBy(['project' => $event->getEventIdentifier()->getProject()]);
     /** @var NotificationConfiguration[] $configs */
     $container = new VariableContainer();
     $container->addVariable('event.status', $event->getStatus());
     $container->addVariable('event.message', $event->getMessage());
     if ($lastEvent) {
         $container->addVariable('lastevent.message', $lastEvent->getMessage());
         $container->addVariable('lastevent.status', $lastEvent->getStatus());
     }
     $container->addVariable('system.name', $event->getSystem());
     $container->addVariable('tool.name', $event->getEventIdentifier()->getTool()->getName());
     foreach ($configs as $config) {
         if ($config->isNotifyAll() || $config->isConnectedTool($event->getEventIdentifier()->getTool())) {
             $sender = SenderFactory::getSender($config->getSenderType());
             if ($sender instanceof ContainerAwareInterface) {
                 $sender->setContainer($this->container);
             }
             $sender->init($this->router, $config->getOptions(), $container);
             $sender->send($event);
         }
     }
 }
 /**
  * Sends a message to slack created by information given in the event.
  *
  * @param Event $event
  */
 public function send(Event $event)
 {
     $payload = ['identifier' => $event->getEventIdentifier()->getIdentifier(), 'system' => $event->getSystem(), 'status' => $event->getStatus(), 'message' => $event->getMessage(), 'type' => $event->getEventIdentifier()->getTool()->getIdentifier(), 'value' => $event->getValue(), 'url' => $event->getUrl(), 'via' => $event->getEventIdentifier()->getProject()->getApiKey()];
     $httpClient = new Client();
     $httpClient->request('POST', $this->webhookURL, ['body' => json_encode($payload)]);
 }
 /**
  * Sends a message to slack created by information given in the event.
  *
  * @param Event $event
  */
 public function send(Event $event)
 {
     $client = new \Maknz\Slack\Client($this->webhookURL, $this->settings);
     $gotoUrl = "<" . $this->router->generate("bauer_incident_dashboard_core_homepage", array('project' => $event->getEventIdentifier()->getProject()->getIdentifier()), true) . "|Go to Koalamon>";
     if ($event->hasUrl()) {
         $gotoUrl .= "\n<" . $event->getUrl() . "|Go to " . $event->getEventIdentifier()->getTool()->getName() . ">";
     }
     if ($event->getStatus() == Event::STATUS_SUCCESS) {
         $color = self::COLOR_SUCCESS;
         $label = "Your test succeeded (" . $event->getSystem() . ")\nIdentifier: " . $event->getEventIdentifier()->getIdentifier();
         $message = "";
     } else {
         $color = self::COLOR_FAILURE;
         $label = "Your test failed (" . $event->getEventIdentifier()->getSystem()->getName() . ") \nIdentifier: " . $event->getEventIdentifier()->getIdentifier();
         $message = $this->slackifyText($event->getMessage()) . "\n";
     }
     $client->enableMarkdown()->attach(['text' => $message . $gotoUrl, 'color' => $color])->send($label);
 }
 public function sendTestNotificationAction(NotificationConfiguration $configuration)
 {
     $this->assertUserRights(UserRole::ROLE_ADMIN);
     $system = new System();
     $system->setName('TEST_SYSTEM');
     $system->setUrl('http://www.koalamon.com');
     $system->setIdentifier('TEST_NOTIFICATION_SYSTEM_IDENTIFIER');
     $tool = new Tool();
     $tool->setName('TEST_NOTIFICATION');
     $tool->setIdentifier('TEST_NOTIFICATION_TOOL_IDENTIFIER');
     $eventIdentifier = new EventIdentifier();
     $eventIdentifier->setProject($this->getProject());
     $eventIdentifier->setTool($tool);
     $eventIdentifier->setIdentifier('TEST_NOTIFICATION_EVENT_IDENTIFIER');
     $eventIdentifier->setSystem($system);
     $eventIdentifier->setCurrentState(Event::STATUS_FAILURE);
     $event = new Event();
     $event->setStatus(Event::STATUS_FAILURE);
     $event->setMessage('This is a test notification send by ' . $this->getUser()->getUsername() . '.');
     $event->setEventIdentifier($eventIdentifier);
     $event->setType($tool->getIdentifier());
     $notificationSender = new EventListener($this->container);
     $notificationSender->sendNotification($configuration, $event);
     return new JsonResponse(['status' => 'success', 'message' => 'Test notification was send.', 'configId' => $configuration->getId()]);
 }