public function load(ObjectManager $manager)
 {
     foreach ($this->fixtures as $file) {
         /** @var SplFileInfo $file */
         $fixture = json_decode($file->getContents());
         $system = new System();
         $system->setIdentifier($fixture->identifier);
         $system->setName($fixture->name);
         $system->setUrl($fixture->url);
         /** @var Project $project */
         $project = $this->getReference('project-' . $fixture->project);
         $system->setProject($project);
         $manager->persist($system);
     }
     $manager->flush();
 }
 public function onRawEventAdd(NewRawEventEvent $rawEventEvent)
 {
     $rawEvent = $rawEventEvent->getRawEvent();
     $system = $this->doctrineManager->getRepository('KoalamonIncidentDashboardBundle:System')->findOneBy(['identifier' => $rawEvent->getSystem(), 'project' => $rawEventEvent->getProject()]);
     if (!$system) {
         $system = new System();
         $system->setName($rawEvent->getSystem());
         $system->setIdentifier($rawEvent->getSystem());
         $system->setProject($rawEventEvent->getProject());
         $this->doctrineManager->persist($system);
         $this->doctrineManager->flush();
         $this->eventDispatcher->dispatch('koalamon.system.create', new NewSystemEvent($system, true));
     }
     $rawEventEvent->getEvent()->setSystem($rawEvent->getSystem());
     $rawEventEvent->getEvent()->getEventIdentifier()->setSystem($system);
 }
 public function cloneSubsystemAction(System $system)
 {
     $clone = new System();
     $clone->setSystemType($system->getSystemType());
     $clone->setDescription($system->getDescription());
     $clone->setName('Copy of ' . $system->getName());
     $clone->setProject($system->getProject());
     $clone->setParent($system->getParent());
     $clone->setDomain($system->getDomain());
     $clone->setPath($system->getPath());
     $clone->setSubDomain($system->getSubDomain());
     $clone->setSchema($system->getSchema());
     $em = $this->getDoctrine()->getManager();
     $em->persist($clone);
     $em->flush();
     $clone->setIdentifier($clone->getId());
     $em->persist($clone);
     $em->flush();
     // integrations
     $integrationSystems = $this->getDoctrine()->getRepository('KoalamonIntegrationBundle:IntegrationSystem')->findBy(['system' => $system]);
     foreach ($integrationSystems as $integrationSystem) {
         $newIntegrationSystem = new IntegrationSystem();
         $newIntegrationSystem->setProject($integrationSystem->getProject());
         $newIntegrationSystem->setInherit($integrationSystem->getInherit());
         $newIntegrationSystem->setOptions($integrationSystem->getOptions());
         $newIntegrationSystem->setSystem($clone);
         $newIntegrationSystem->setIntegration($integrationSystem->getIntegration());
         $em->persist($newIntegrationSystem);
         $dispatcherEvent = new IntegrationSystemStoreEvent($newIntegrationSystem);
         $this->get('event_dispatcher')->dispatch('leankoala.integration.store', $dispatcherEvent);
     }
     $em->flush();
     // missing request
     $collectionSystems = $this->getDoctrine()->getRepository('LeanKoalaIntegrationMissingRequestBundle:Collection')->findBySystem($system);
     foreach ($collectionSystems as $collectionSystem) {
         $collectionSystem->addSystem($clone);
         $em->persist($collectionSystem);
     }
     $em->flush();
     $dispatcherEvent = new MissingRequestStoreEvent($system, $collectionSystems);
     $this->get('event_dispatcher')->dispatch('leankoala.integration.missingrequest.store', $dispatcherEvent);
     $this->addFlash('success', 'Component "' . $system->getName() . '" successfully cloned and ready to edit.');
     return $this->redirectToRoute('koalamon_default_admin_system_subsystems_edit', ['currentSystem' => $clone->getId()]);
 }