public function equals(IntegrationSystem $integrationSystem)
 {
     if ($this->getInherit() != $integrationSystem->getInherit()) {
         return false;
     }
     if ($this->getFullOptions() != $integrationSystem->getFullOptions()) {
         return false;
     }
     if ($this->getSystem()->getId() != $integrationSystem->getSystem()->getId()) {
         return false;
     }
     if ($this->getIntegration() != $integrationSystem->getIntegration()) {
         return false;
     }
     return true;
 }
 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()]);
 }
 private function dispatchEvent(IntegrationSystem $integrationSystem)
 {
     if ($this->enableSubsystems || $integrationSystem->getSystem()->isSystem()) {
         $dispatcherEvent = new IntegrationSystemStoreEvent($integrationSystem);
         $this->get('event_dispatcher')->dispatch('leankoala.integration.store', $dispatcherEvent);
     }
 }