src/Controller/ConnectorController.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\Persistence\ManagerRegistry;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\Form\Extension\Core\Type\TextType;
  10. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  11. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  13. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  14. use Symfony\Component\Form\Extension\Core\Type\FileType;
  15. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  16. use Symfony\Component\Console\Input\ArrayInput;
  17. use Symfony\Bundle\FrameworkBundle\Console\Application;
  18. use Symfony\Component\Finder\Finder;
  19. use Monolog\Logger;
  20. use Monolog\Handler\StreamHandler;
  21. use App\Entity\Connector;
  22. use App\Entity\ConnectorBlock;
  23. use App\Entity\ConnectorBlockItem;
  24. use App\Entity\Module;
  25. use App\Entity\User;
  26. use App\Entity\UserConnector;
  27. use App\Entity\UserConnectorBlock;
  28. use App\Entity\UserConnectorBlockItem;
  29. use App\Entity\Service;
  30. use Symfony\Contracts\Translation\TranslatorInterface;
  31. class ConnectorController extends DefaultController
  32. {
  33.     protected $dynamicEntityManager;
  34.     protected ManagerRegistry $doctrine;
  35.     protected TranslatorInterface $translator;
  36.     public function __construct(ManagerRegistry $doctrine,
  37.                                 TranslatorInterface $translator)
  38.     {
  39.         $this->doctrine $doctrine;
  40.         $this->translator $translator;
  41.     }
  42.  
  43.     /**
  44.      * @Route("/connector", name="connector")
  45.      */
  46.     public function indexAction(Request $request)
  47.     {
  48.     
  49.         /* we load session data */
  50.         parent::init($request);
  51.         
  52.         /* we load entity managers */
  53.         $em $this->doctrine->getManager();
  54.         $dem $this->doctrine->getManager('dynamic_em');
  55.         
  56.         /* we load service to get list of modules */
  57.         $service $em->getRepository(Service::class)->getService(7);
  58.     
  59.         /* we render data */
  60.         return $this->render('connector.html.twig',
  61.                 array('headerData' => $this -> getPageHeader($request),
  62.                       'moduleList' => $service->getModules(),
  63.                       'service' => $service,
  64.                 )
  65.                 );
  66.     
  67.     }    
  68.     
  69.     /**
  70.      * @Route("/connectorAdmin", name="connectorAdmin")
  71.      */
  72.     public function connectorAdminAction(Request $request)
  73.     {
  74.         /* we load session data */
  75.         parent::init($request);
  76.         $session $request->getSession();
  77.         
  78.         /* we check if an user is logged in */
  79.         if(empty($session->get('user'))) {
  80.             return $this->redirectToRoute('login');
  81.         }
  82.         /* we load entity managers */
  83.         $em $this->doctrine->getManager();
  84.         $dem $this->doctrine->getManager('dynamic_em');
  85.         /* we get current user */
  86.         $currentUserId $session->get('user')->getUserId();        
  87.         $user $em->getRepository(User::class)->getUser($currentUserId);
  88.         
  89.         /* we get paths to user directories */
  90.         $userDirs $this->getUserFolderPathsFromUserId($currentUserId);
  91.         
  92.         /* setting current user connector */
  93.         if(!empty($request->query->get('setCurrent'))) {
  94.             $userConnector $em->getRepository(UserConnector::class)->getUserConnector($request->query->get('setCurrent'));
  95.             $em->getRepository(UserConnector::class)->setCurrentUserConnector($currentUserId$request->query->get('setCurrent'));
  96.             $session->set('connector'$userConnector);
  97.              
  98.             $this->addFlash('notice''The connector '.$userConnector->getUserConnectorName().' was set as current one.');
  99.             return $this->redirectToRoute('connectorAdmin');
  100.              
  101.         }
  102.         
  103.         /* we get current connector */
  104.         $currentUserConnector $em->getRepository(UserConnector::class)->getCurrentUserConnector($currentUserId);
  105.         
  106.         /* we load list of connectors for logged user */
  107.         $userConnectorList $em->getRepository(UserConnector::class)->getUserConnectorListByUser($currentUserId);
  108.          
  109.         /* we load service to get list of modules */
  110.         $service $em->getRepository(Service::class)->getService(7);
  111.         
  112.         $logTail = array();
  113.         if(!empty($currentUserConnector) && !empty($currentUserConnector->getLogPath()) && $currentUserConnector->getLogPath() != '') {
  114.             
  115.             $logPath $userDirs['user'].'/'.$currentUserConnector->getLogPath();
  116.             
  117.             /* we create empty log files if it does not exist yet */            
  118.             if(!is_file($logPath)) {
  119.                 
  120.                 $pathParts pathinfo($logPath);
  121.                 /*
  122.                 print("\n\n logPath: ");
  123.                 \Doctrine\Common\Util\Debug::dump($pathParts);
  124.                 */
  125.                 
  126.                 /* we try to create log directory */
  127.                 if (!@mkdir($pathParts['dirname'], 0777true)) {
  128.                     echo('Failed to create folders...');
  129.                 }
  130.                 
  131.                 /* we create the log file */
  132.                 $fh fopen($logPath'w');
  133.             }
  134.             
  135.             if (!$handle fopen($logPath'r')) {
  136.                 echo "Cannot open file ($logPath)";
  137.                 exit;
  138.             }
  139.             $logTail array_reverse($this->readFileTail($logPath200));
  140.         }
  141.         
  142.         if(!empty($currentUserConnector) && !empty($currentUserConnector->getLogErrorPath()) && $currentUserConnector->getLogErrorPath() != '') {
  143.             /* we create empty log error file if it does not exist yet */
  144.             
  145.             $logErrorPath $userDirs['user'].'/'.$currentUserConnector->getLogErrorPath();
  146.             
  147.             /* we create empty log files if it does not exist yet */            
  148.             if(!is_file($logErrorPath)) {
  149.                 
  150.                 $pathParts pathinfo($logErrorPath);
  151.                 /*
  152.                 print("\n\n logPath: ");
  153.                 \Doctrine\Common\Util\Debug::dump($pathParts);
  154.                 */
  155.                 
  156.                 /* we try to create log directory */
  157.                 if (!@mkdir($pathParts['dirname'], 0777true)) {
  158.                     echo('Failed to create folders...');
  159.                 }
  160.                 
  161.                 /* we create the log file */
  162.                 $fh fopen($logErrorPath'w');
  163.             }
  164.             
  165.             if (!$handle fopen($logErrorPath'r')) {
  166.                 echo "Cannot open file ($logErrorPath)";
  167.                 exit;
  168.             }
  169.             
  170.             if (!$handle fopen($logErrorPath'r')) {
  171.                 echo "Cannot open file ($logErrorPath)";
  172.                 exit;
  173.             }
  174.         }
  175.     
  176.         /* we prepare data for view */
  177.         $viewData = array('headerData' => $this -> getPageHeader($request),
  178.                 'connectorList' => $userConnectorList,
  179.                 'currentUserConnector' => $currentUserConnector,
  180.                 'userDirs' => $userDirs,
  181.                 'logTail' => $logTail,
  182.                 'user' => $user,
  183.                 'moduleList' => $service->getModules(),
  184.                 'userModuleList' => $user->getModules(),
  185.                 'menu' => $this -> adminMenu($request),
  186.                         'mainMenu' => $this -> adminMainMenu($request),
  187.         );
  188.         
  189.         if(!empty($request->query->get('REST'))) {
  190.             return new JsonResponse($viewData);
  191.         } else {
  192.         /* we render template */
  193.             return $this->render('connectorAdmin.html.twig'$viewData);
  194.         }
  195.     }
  196.     /**
  197.      * @Route("/connectorConfig", name="connectorConfig")
  198.      */
  199.     public function connectorConfigAction(Request $request)
  200.     {
  201.     
  202.         /* we load session data */
  203.         parent::init($request);
  204.         $session $request->getSession();
  205.         
  206.         // we check if any user is logged in
  207.         if(!$this->isLoggedUser($request)) {
  208.             return $this->redirectToRoute('login');
  209.         }  
  210.     
  211.         /* we load master entity manager */
  212.         $em $this->doctrine->getManager();
  213.         $dem $this->doctrine->getManager('dynamic_em');
  214.     
  215.         $currentUserId $session->get('user')->getUserId();
  216.         $user $em->getRepository(User::class)->getUser($currentUserId);
  217.         /* we get current user connector */
  218.         $userConnector $em->getRepository(UserConnector::class)->getCurrentUserConnector($currentUserId);
  219.         /*
  220.         print('<br>qqw user exists: ');
  221.         \Doctrine\Common\Util\Debug::dump($userConnector);
  222.         */        
  223.         
  224.         /* we get connector list */
  225.         $connectorCollection $em->getRepository(Connector::class)->getConnectorList();
  226.     
  227.         /* we build form */
  228.         $formBuilder $this->createFormBuilder($userConnector);
  229.     
  230.         $formBuilder->add('userConnectorName'TextType::class, array(
  231.                 'required' => false,
  232.                 'label' => $this->translator->trans('connector.name'),
  233.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getUserConnectorName()),
  234.                 'label_attr' => array('class' => 'form_field_label')
  235.         ));
  236.         
  237.         $formBuilder->add('userConnectorCode'TextType::class, array(
  238.                 'required' => false,
  239.                 'label' => $this->translator->trans('connector.code'),
  240.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getUserConnectorCode()),
  241.                 'label_attr' => array('class' => 'form_field_label')
  242.         ));
  243.         
  244.         /* we add connector list */
  245.         $connectors = array();
  246.         $selectedConnector null;
  247.         foreach($connectorCollection as $conn)
  248.         {
  249.             $connId $conn->getConnectorId();
  250.             $connectors[$conn->getConnectorName()] = $connId;
  251.             
  252.             if(!empty($userConnector->getConnector()) && $connId == $userConnector->getConnector()->getConnectorId()) {
  253.                 $selectedConnector $connId;
  254.             }
  255.             
  256.         }
  257.         
  258.         $formBuilder->add('connectorId'ChoiceType::class, array(
  259.                 'choices' => $connectors,
  260.                 'mapped' => false,
  261.                 'label' => $this->translator->trans('connector.type'),
  262.                 'attr' => array('class' => 'selector'),
  263.                 'label_attr' => array('class' => 'form_field_label'),
  264.                 'data' => $selectedConnector
  265.         ));  
  266.         
  267.         $formBuilder->add('configPath'TextType::class, array(
  268.                 'required' => false,
  269.                 'label' => $this->translator->trans('connector.config_path'),
  270.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getConfigPath()),
  271.                 'label_attr' => array('class' => 'form_field_label')
  272.         ));
  273.         $formBuilder->add('targetDatabaseHost'TextType::class, array(
  274.                 'required' => false,
  275.                 'label' => $this->translator->trans('connector.target_db_host'),
  276.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getTargetDatabaseHost()),
  277.                 'label_attr' => array('class' => 'form_field_label')
  278.         ));
  279.         
  280.         $formBuilder->add('targetDatabaseName'TextType::class, array(
  281.                 'required' => false,
  282.                 'label' => $this->translator->trans('connector.target_db_name'),
  283.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getTargetDatabaseName()),
  284.                 'label_attr' => array('class' => 'form_field_label')
  285.         ));
  286.         
  287.         $formBuilder->add('targetDatabaseUser'TextType::class, array(
  288.                 'required' => false,
  289.                 'label' => $this->translator->trans('connector.target_db_username'),
  290.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getTargetDatabaseUser()),
  291.                 'label_attr' => array('class' => 'form_field_label')
  292.         )); 
  293.         
  294.         $formBuilder->add('targetDatabasePassword'TextType::class, array(
  295.                 'required' => false,
  296.                 'label' => $this->translator->trans('connector.target_db_password'),
  297.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getTargetDatabasePassword()),
  298.                 'label_attr' => array('class' => 'form_field_label')
  299.         ));     
  300.         
  301.         $formBuilder->add('targetURL'TextType::class, array(
  302.                 'required' => false,
  303.                 'label' => $this->translator->trans('connector.target_url'),
  304.                 'attr' => array('class' => 'text_form''size' => 50'value' => $userConnector->getTargetURL()),
  305.                 'label_attr' => array('class' => 'form_field_label')
  306.         )); 
  307.         $formBuilder->add('logPath'TextType::class, array(
  308.                 'required' => false,
  309.                 'label' => $this->translator->trans('connector.log_path'),
  310.                 'attr' => array('class' => 'text_form''size' => 50'value' => $userConnector->getLogPath()),
  311.                 'label_attr' => array('class' => 'form_field_label')
  312.         ));
  313.         
  314.         $formBuilder->add('logErrorPath'TextType::class, array(
  315.                 'required' => false,
  316.                 'label' => $this->translator->trans('connector.log_error_path'),
  317.                 'attr' => array('class' => 'text_form''size' => 50'value' => $userConnector->getLogErrorPath()),
  318.                 'label_attr' => array('class' => 'form_field_label')
  319.         ));   
  320.         
  321.         $formBuilder->add('logImportPath'TextType::class, array(
  322.                 'required' => false,
  323.                 'label' => $this->translator->trans('connector.log_import_path'),
  324.                 'attr' => array('class' => 'text_form''size' => 50'value' => $userConnector->getLogImportPath()),
  325.                 'label_attr' => array('class' => 'form_field_label')
  326.         ));
  327.         
  328.         $formBuilder->add('logExportPath'TextType::class, array(
  329.                 'required' => false,
  330.                 'label' => $this->translator->trans('connector.log_export_path'),
  331.                 'attr' => array('class' => 'text_form''size' => 50'value' => $userConnector->getLogExportPath()),
  332.                 'label_attr' => array('class' => 'form_field_label')
  333.         ));   
  334.         $formBuilder->add('fileImportPath'TextType::class, array(
  335.                 'required' => false,
  336.                 'label' => $this->translator->trans('connector.file_import_path'),
  337.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getFileImportPath()),
  338.                 'label_attr' => array('class' => 'form_field_label')
  339.         ));     
  340.         $formBuilder->add('fileExportPath'TextType::class, array(
  341.                 'required' => false,
  342.                 'label' => $this->translator->trans('connector.file_export_path'),
  343.                 'attr' => array('class' => 'text_form''size' => 35'value' => $userConnector->getFileExportPath()),
  344.                 'label_attr' => array('class' => 'form_field_label')
  345.         ));                   
  346.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  347.                 'attr' => array('class' => 'butt_big')));
  348.     
  349.         $form $formBuilder->getForm();
  350.     
  351.         $form->handleRequest($request);
  352.         
  353.         /* we handle the form request */
  354.         if ($request->getMethod() == 'POST') {
  355.              
  356.             //$form->bindRequest($request);
  357.              
  358.             if ($form->isValid()) {
  359.                 $formData $form->getData();
  360.     
  361.                 /* we load data from form into object */
  362.                 $userConnector->setUserConnectorName($formData->getUserConnectorName());
  363.                 $userConnector->setUserConnectorCode($formData->getUserConnectorCode());
  364.                 $userConnector->setConfigPath($formData->getConfigPath());
  365.                 
  366.                 $userConnector->setTargetDatabaseHost($formData->getTargetDatabaseHost());
  367.                 $userConnector->setTargetDatabaseName($formData->getTargetDatabaseName());
  368.                 $userConnector->setTargetDatabaseUser($formData->getTargetDatabaseUser());
  369.                 $userConnector->setTargetDatabasePassword($formData->getTargetDatabasePassword());
  370.                 $userConnector->setTargetURL($formData->getTargetURL());
  371.                 
  372.                 $userConnector->setLogPath($formData->getLogPath());
  373.                 $userConnector->setLogImportPath($formData->getLogImportPath());
  374.                 $userConnector->setLogExportPath($formData->getLogExportPath());
  375.                 $userConnector->setLogErrorPath($formData->getLogErrorPath());
  376.                 $userConnector->setFileImportPath($formData->getFileImportPath());
  377.                 $userConnector->setFileExportPath($formData->getFileExportPath());
  378.                 /* we load connector */
  379.                 $connector $em->getRepository(Connector::class)->getConnector($form['connectorId']->getData());
  380.     
  381.                 $userConnector->setConnector($connector);
  382.                 /*
  383.                  print('<br>qqw user exists: ');
  384.                  \Doctrine\Common\Util\Debug::dump($user);
  385.                  */
  386.     
  387.                 /* we persist and save user */
  388.                 $em->persist($userConnector);
  389.                 $em->flush();
  390.     
  391.                 $this->addFlash('notice''Connector was updated.');
  392.                 return $this->redirectToRoute('connectorConfig');
  393.     
  394.             }
  395.              
  396.         }
  397.     
  398.         /* we render data */
  399.         return $this->render('connectorConfig.html.twig',
  400.                 array(  'headerData' => $this -> getPageHeader($request),
  401.                         'form' => $formBuilder->getForm()->createView(),
  402.                         'userConnector' => $userConnector,
  403.                         'user' => $user,
  404.                         'menu' => $this -> adminMenu($request),
  405.                         'mainMenu' => $this -> adminMainMenu($request),
  406.                 )
  407.                 );
  408.     
  409.     }    
  410.     
  411.     /**
  412.      * @Route("/connectorLog", name="connectorLog")
  413.      */
  414.     public function connectorLogAction(Request $request)
  415.     {
  416.         
  417.         /* we load session data */
  418.         parent::init($request);
  419.         $session $request->getSession();
  420.         /* we check if an user is logged in */
  421.         if(empty($session->get('user'))) {
  422.             return $this->redirectToRoute('login');
  423.         }        
  424.         
  425.         /* we load master entity manager */
  426.         $em $this->doctrine->getManager();
  427.         $dem $this->doctrine->getManager('dynamic_em');
  428.         
  429.         $currentUserId $session->get('user')->getUserId();
  430.         
  431.         /* we get current user connector */
  432.         $userConnector $em->getRepository(UserConnector::class)->getCurrentUserConnector($currentUserId);
  433.         
  434.         /* we get paths to user directories */
  435.         $userDirs $this->getUserFolderPathsFromUserId($currentUserId);
  436.         
  437.         /*
  438.         print('<br>qqw user directories: ');
  439.         \Doctrine\Common\Util\Debug::dump($userDirs);
  440.         */
  441.         
  442.         /* we display standard log */
  443.         /*
  444.         if(!empty($userConnector->getLogPath()) && $userConnector->getLogPath() != '') {
  445.             print('<br>qqw logPath: '.$userConnector->getLogPath());
  446.         }
  447.         */
  448.         /* we display import log */
  449.         $importLogFinder = new Finder();
  450.         if(!empty($userConnector->getLogImportPath()) && $userConnector->getLogImportPath() != '') {
  451.             $importLogDir $userDirs['user'].'/'.$userConnector->getLogImportPath();
  452.             $importLogFinder->files()->in($importLogDir)->sort(
  453.                     function ($a$b) {
  454.                         return ($b->getMTime() - $a->getMTime());
  455.                     }
  456.                     );
  457.         }
  458.         
  459.         /* we display export log */
  460.         $exportLogFinder = new Finder();
  461.         if(!empty($userConnector->getLogExportPath()) && $userConnector->getLogExportPath() != '') {
  462.             
  463.             $exportLogDir $userDirs['user'].'/'.$userConnector->getLogExportPath();
  464.             $exportLogFinder->files()->in($exportLogDir)->sort(
  465.                     function ($a$b) {
  466.                         return ($b->getMTime() - $a->getMTime());
  467.                     }
  468.                     );
  469.         }
  470.         
  471.         /* connector logs */
  472.         $logFinder = new Finder();
  473.         $logDir '';
  474.         if(!empty($userConnector->getLogPath()) && $userConnector->getLogPath() != '') {
  475.             $pathParts pathinfo($userDirs['user'].'/'.$userConnector->getLogPath());
  476.             $logDir $pathParts['dirname'];
  477.             $logFinder->files()->in($logDir)->sort(
  478.                     function ($a$b) {
  479.                         return ($b->getMTime() - $a->getMTime());
  480.                     }
  481.                     );
  482.         }
  483.         
  484.         /* error logs */
  485.         $errorLogFinder = new Finder();
  486.         if(!empty($userConnector->getLogErrorPath()) && $userConnector->getLogErrorPath() != '') {
  487.             
  488.             $pathParts pathinfo($userDirs['user'].'/'.$userConnector->getLogErrorPath());
  489.             
  490.             $errorLogDir $pathParts['dirname'];
  491.             
  492.             if($logDir == $errorLogDir) {
  493.                 $errorLogFinder null;
  494.             } else {
  495.                 $errorLogFinder->files()->in($logDir)->sort(
  496.                         function ($a$b) {
  497.                             return ($b->getMTime() - $a->getMTime());
  498.                         }
  499.                         );
  500.             }
  501.             
  502.         }
  503.         
  504.         /* we render data */
  505.         return $this->render('connectorLog.html.php',
  506.                 array(  'headerData' => $this -> getPageHeader($request),
  507.                         'importLogFinder' => $importLogFinder,
  508.                         'exportLogFinder' => $exportLogFinder,
  509.                         'logFinder' => $logFinder,
  510.                         'errorLogFinder' => $errorLogFinder,
  511.                         'userDirs' => $userDirs,
  512.                         'userConnector' => $userConnector,
  513.                         'menu' => $this -> adminMenu($request),
  514.                         'mainMenu' => $this -> adminMainMenu($request),
  515.                 )
  516.                 );
  517.         
  518.     }
  519.     
  520.     /**
  521.      * @Route("/connectornew", name="connectorNew")
  522.      */
  523.     public function connectorNewAction(Request $request)
  524.     {
  525.                             
  526.         /* we load session data */
  527.         parent::init($request);
  528.     
  529.         $session $request->getSession();
  530.         /* we load entity managers */
  531.         $em $this->doctrine->getManager();
  532.         $dem $this->doctrine->getManager('dynamic_em');
  533.         $userId $session->get('user')->getUserId();
  534.         $user $em->getRepository(User::class)->getUser($userId);
  535.         /* we get connector list */
  536.         $connectorCollection $em->getRepository(Connector::class)->getConnectorList();
  537.     
  538.         /* we build form */
  539.         $userConnector = new UserConnector;
  540.         $formBuilder $this->createFormBuilder($userConnector);
  541.     
  542.         $formBuilder->add('userConnectorName'TextType::class, array(
  543.                 'required' => true,
  544.                 'label' => $this->translator->trans('connector.name'),
  545.                 'attr' => array('class' => 'text_form''size' => 22),
  546.                 'label_attr' => array('class' => 'form_field_label'),
  547.         ));
  548.          
  549.         $formBuilder->add('userConnectorCode'TextType::class, array(
  550.                 'required' => true,
  551.                 'label' => $this->translator->trans('connector.code'),
  552.                 'attr' => array('class' => 'text_form''size' => 22),
  553.                 'label_attr' => array('class' => 'form_field_label'),
  554.         ));
  555.         /* we add connector list */
  556.         $connectors = array();
  557.         foreach($connectorCollection as $conn)
  558.         {
  559.             $connId $conn->getConnectorId();
  560.             $connectors[$conn->getConnectorName()] = $connId;
  561.         }    
  562.         
  563.         $formBuilder->add('connectorId'ChoiceType::class, array(
  564.                 'choices' => $connectors,
  565.                 'mapped' => false,
  566.                 'label' => $this->translator->trans('connector.type'),
  567.                 'attr' => array('class' => 'selector'),
  568.                 'label_attr' => array('class' => 'form_field_label')
  569.         ));  
  570.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  571.                 'attr' => array('class' => 'butt_big')));
  572.     
  573.         $form $formBuilder->getForm();
  574.         $form->handleRequest($request);
  575.     
  576.         if ($request->getMethod() == 'POST') {
  577.     
  578.             if ($form->isValid()) {
  579.                 $formData $form->getData();
  580.     
  581.                 /* we load users entity manager */
  582.                 //$dem = $this->doctrine->getManager('dynamic_em');
  583.                 $userConnector->setUserConnectorName($formData->getUserConnectorName());
  584.                 $userConnector->setUserConnectorCode($formData->getUserConnectorCode());
  585.                 $userConnector->setUserId($session->get('user')->getUserId());
  586.                 /* we set connector */
  587.                 $connector $em->getRepository(Connector::class)->getConnector($form['connectorId']->getData());
  588.                 $userConnector->setConnector($connector);
  589.                 /* we set this connector as current one */
  590.                 $em->getRepository(UserConnector::class)->unsetCurrentUserConnector($session->get('user')->getUserId());
  591.                 $userConnector->setUserConnectorCurrent(true);
  592.                 
  593.                 /* we persist and save */
  594.                 $em->persist($userConnector);
  595.                 $em->flush();
  596.     
  597.                 $this->addFlash('notice''New connector was created.');
  598.     
  599.                 return $this->redirectToRoute('connectorAdmin');
  600.     
  601.             }
  602.              
  603.         }
  604.     
  605.         /* we render data */
  606.         return $this->render('connectorNew.html.twig',
  607.                 array(    'form' => $formBuilder->getForm()->createView(),
  608.                         'headerData' => $this -> getPageHeader($request),
  609.                         'user' => $user,
  610.                         'menu' => $this -> adminMenu($request),
  611.                         'mainMenu' => $this -> adminMainMenu($request),
  612.                 )
  613.                 );
  614.     
  615.     }   
  616.     
  617.     /**
  618.      * @Route("/userConnectorBlockEdit/{connectorBlockId}", name="userConnectorBlockEdit")
  619.      */
  620.     public function userConnectorBlockEditAction(Request $request$connectorBlockId)
  621.     {
  622.         
  623.         /* we load session data */
  624.         parent::init($request);
  625.         $session $request->getSession();
  626.         
  627.         /* we load entity managers */
  628.         $em $this->doctrine->getManager();
  629.         $dem $this->doctrine->getManager('dynamic_em');
  630.         
  631.         $currentUserId $session->get('user')->getUserId();
  632.         $user $session->get('user');
  633.         
  634.         /* we get current user connector */
  635.         $userConnector $em->getRepository(UserConnector::class)->getCurrentUserConnector($currentUserId);
  636.         $connector $em->getRepository(Connector::class)->getConnector($userConnector->getConnector()->getConnectorId());
  637.         /* we get connector */
  638.         $connector $em->getRepository(Connector::class)->getConnector($userConnector->getConnector()->getConnectorId());
  639.         /*
  640.         print('<br>userConnector: ');
  641.         \Doctrine\Common\Util\Debug::dump($userConnector);
  642.         print('<hr>connector: ');
  643.         \Doctrine\Common\Util\Debug::dump($userConnector->getConnector());
  644.         */
  645.         /* we get connector block */
  646.         $connectorBlock $em->getRepository(ConnectorBlock::class)->getConnectorBlock($connectorBlockId);
  647.         
  648.         /* we get user connector block */
  649.         $userConnectorBlock $dem->getRepository(UserConnectorBlock::class)->getUserBlock($connectorBlockId$userConnector->getUserConnectorId());
  650.         if(empty($userConnectorBlock)) {
  651.             //print('<br>qqw creating userConnectorBlock');
  652.             $userConnectorBlock = new UserConnectorBlock;
  653.             $userConnectorBlock->setUserConnectorBlockName($connectorBlock->getConnectorBlockName());
  654.             $userConnectorBlock->setConnectorBlockId($connectorBlockId);
  655.             $userConnectorBlock->setUserConnectorId($userConnector->getUserConnectorId());
  656.             $dem->persist($userConnectorBlock);
  657.             $dem->flush();
  658.             
  659.         }
  660.         
  661.         /* we build edit form */
  662.         $formBuilder $this->createFormBuilder($userConnectorBlock);
  663.         
  664.         $formBuilder->add('isActive'ChoiceType::class, array(
  665.                 'choices' => array('Yes' => true'No' => false),
  666.                 'required' => false,
  667.                 'mapped' => false,
  668.                 'multiple' => false,
  669.                 'expanded' => true,
  670.                 'placeholder' => false,
  671.                 'label' => $this->translator->trans('connector.active'),
  672.                 'label_attr' => array('class' => 'form_field_label'),
  673.                 'attr' => array('class' => 'form_field_text'),
  674.                 'data' => $userConnectorBlock->isIsActive(),
  675.         ));
  676.         
  677.         $formBuilder->add('userConnectorBlockName'TextType::class, array(
  678.                 'required' => false,
  679.                 'label' => $this->translator->trans('connector.user_connector_block_name'),
  680.                 'attr' => array('class' => 'text_form''size' => 33'value' => $userConnectorBlock->getUserConnectorBlockName()),
  681.                 'label_attr' => array('class' => 'form_field_label')
  682.         ));
  683.         
  684.         $formBuilder->add('priority'TextType::class, array(
  685.                 'required' => false,
  686.                 'label' => $this->translator->trans('connector.priority'),
  687.                 'attr' => array('class' => 'text_form''size' => 11'value' => $userConnectorBlock->getPriority()),
  688.                 'label_attr' => array('class' => 'form_field_label')
  689.         ));
  690.         
  691.         $formBuilder->add('periodMinutes'TextType::class, array(
  692.                 'required' => false,
  693.                 'label' => $this->translator->trans('connector.period'),
  694.                 'attr' => array('class' => 'text_form''size' => 11'value' => $userConnectorBlock->getPeriodMinutes()),
  695.                 'label_attr' => array('class' => 'form_field_label')
  696.         ));
  697.         
  698.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  699.                 'attr' => array('class' => 'butt_big')));
  700.         
  701.         $form $formBuilder->getForm();
  702.         $form->handleRequest($request);
  703.         
  704.         if ($request->getMethod() == 'POST') {
  705.             
  706.             //$form->bindRequest($request);
  707.             
  708.             if ($form->isValid()) {
  709.                 $formData $form->getData();
  710.                 
  711.                 if(!empty($form['isActive']->getData())) {
  712.                     $userConnectorBlock->setIsActive($form['isActive']->getData());
  713.                 }
  714.                 
  715.                 $userConnectorBlock->setUserConnectorBlockName($formData->getUserConnectorBlockName());
  716.                 $userConnectorBlock->setPriority($formData->getPriority());
  717.                 $userConnectorBlock->setPeriodMinutes($formData->getPeriodMinutes());
  718.                 /* we persist and save */
  719.                 $dem->persist($userConnectorBlock);
  720.                 $dem->flush();
  721.                 
  722.                 $this->addFlash('notice''User Connector Block was updated.');
  723.                 
  724.                 return $this->redirectToRoute($connector->getConnectorControllerPath());
  725.                 
  726.             }
  727.             
  728.         }
  729.         //isModule JenkinsBridge
  730.         $module $em->getRepository(Module::class)->getModule(38);
  731.         $createJenkinsModule false;  
  732.         $isJenkinsModule $em->getRepository(User::class)->userHasModule($user$module);
  733.         if($isJenkinsModule) {
  734.             /* createJenkinsProcess */
  735.             if(!empty($request->query->get('createJenkinsProcess')) && $request->query->get('createJenkinsProcess') == 1) {
  736.                 print("@TODO - createJenkinsProcess");
  737.                 $createJenkinsModule true;
  738.             }
  739.         }
  740.         
  741.         /* we render data */
  742.         return $this->render('userConnectorBlockEdit.html.twig',
  743.                 array('headerData' => $this -> getPageHeader($request),
  744.                         'user' => $user,
  745.                         'connector' => $connector,
  746.                         'userConnector' => $userConnector,
  747.                         'connectorBlock' => $connectorBlock,
  748.                         'userConnectorBlock' => $userConnectorBlock,
  749.                         'createJenkinsModule' => $createJenkinsModule,                        
  750.                         'form' => $formBuilder->getForm()->createView(),
  751.                         'menu' => $this -> adminMenu($request),
  752.                         'mainMenu' => $this -> adminMainMenu($request),
  753.                 )
  754.                 );
  755.         
  756.     }
  757.     
  758.     
  759.     /**
  760.      * @Route("/userConnectorBlockItemEdit/{connectorBlockItemId}", name="userConnectorBlockItemEdit")
  761.      */
  762.     public function userConnectorBlockItemEditAction(Request $request$connectorBlockItemId)
  763.     {
  764.         
  765.         /* we load session data */
  766.         parent::init($request);
  767.         $session $request->getSession();
  768.         
  769.         /* we load entity managers */
  770.         $em $this->doctrine->getManager();
  771.         $dem $this->doctrine->getManager('dynamic_em');
  772.         
  773.         $currentUserId $session->get('user')->getUserId();
  774.         $user $em->getRepository(User::class)->getUser($currentUserId);
  775.         
  776.         /* we get current user connector */
  777.         $userConnector $em->getRepository(UserConnector::class)->getCurrentUserConnector($currentUserId);
  778.         $connector $em->getRepository(Connector::class)->getConnector($userConnector->getConnector()->getConnectorId());
  779.         /* we get connector block item */
  780.         $connectorBlockItem$em->getRepository(ConnectorBlockItem::class)->getConnectorBlockItem($connectorBlockItemId);
  781.         
  782.         /* we get user connector block item */
  783.         $userConnectorBlockItem$dem->getRepository(UserConnectorBlockItem::class)->getUserBlockItem($connectorBlockItemId$userConnector->getUserConnectorId());
  784.         if(empty($userConnectorBlockItem)) {
  785.             //print('<br>qqw creating userConnectorBlock');
  786.             $userConnectorBlockItem= new UserConnectorBlockItem;
  787.             $userConnectorBlockItem->setUserConnectorBlockItemName($connectorBlockItem->getConnectorBlockItemName());
  788.             $userConnectorBlockItem->setConnectorBlockItemId($connectorBlockItemId);
  789.             //$userConnectorBlockItem->setConnectorBlockItem($connectorBlockItem);
  790.             $userConnectorBlockItem->setUserConnectorId($userConnector->getUserConnectorId());
  791.             
  792.             //print('<br>qqw persisting dem: '.$userConnectorBlockItem->getConnectorBlockItemId());
  793.             
  794.             $dem->persist($userConnectorBlockItem);
  795.             //$dem->persist($userConnectorBlockItem->getConnectorBlockItem());
  796.             $dem->flush();
  797.             //$dem->clear();
  798.             
  799.         }
  800.         
  801.         /* we build edit form */
  802.         $formBuilder $this->createFormBuilder($userConnectorBlockItem);
  803.         
  804.         $formBuilder->add('isActive'ChoiceType::class, array(
  805.                 'choices' => array('Yes' => true'No' => false),
  806.                 'required' => false,
  807.                 'mapped' => false,
  808.                 'multiple' => false,
  809.                 'expanded' => true,
  810.                 'placeholder' => false,
  811.                 'label' => $this->translator->trans('connector.active'),
  812.                 'label_attr' => array('class' => 'form_field_label'),
  813.                 'attr' => array('class' => 'form_field_text'),
  814.                 'data' => $userConnectorBlockItem->isIsActive(),
  815.         ));
  816.         
  817.         $formBuilder->add('userConnectorBlockItemName'TextType::class, array(
  818.                 'required' => false,
  819.                 'label' => $this->translator->trans('connector.user_connector_block_name'),
  820.                 'attr' => array('class' => 'text_form''size' => 33'value' => $userConnectorBlockItem->getUserConnectorBlockItemName()),
  821.                 'label_attr' => array('class' => 'form_field_label')
  822.         ));
  823.         
  824.         $formBuilder->add('sourceUrl'TextType::class, array(
  825.                 'required' => false,
  826.                 'label' => $this->translator->trans('connector.connector_block_item_source'),
  827.                 'attr' => array('class' => 'text_form''size' => 55'value' => $userConnectorBlockItem->getSourceUrl()),
  828.                 'label_attr' => array('class' => 'form_field_label')
  829.         ));
  830.         
  831.         $formBuilder->add('transformerUrl'TextType::class, array(
  832.                 'required' => false,
  833.                 'label' => $this->translator->trans('connector.connector_block_item_transformer'),
  834.                 'attr' => array('class' => 'text_form''size' => 55'value' => $userConnectorBlockItem->getTransformerUrl()),
  835.                 'label_attr' => array('class' => 'form_field_label')
  836.         ));
  837.         
  838.         $formBuilder->add('targetUrl'TextType::class, array(
  839.                 'required' => false,
  840.                 'label' => $this->translator->trans('connector.connector_block_item_target'),
  841.                 'attr' => array('class' => 'text_form''size' => 55'value' => $userConnectorBlockItem->getTargetUrl()),
  842.                 'label_attr' => array('class' => 'form_field_label')
  843.         ));
  844.         $formBuilder->add('priority'TextType::class, array(
  845.                 'required' => false,
  846.                 'label' => $this->translator->trans('connector.priority'),
  847.                 'attr' => array('class' => 'text_form''size' => 11'value' => $userConnectorBlockItem->getPriority()),
  848.                 'label_attr' => array('class' => 'form_field_label')
  849.         ));
  850.         
  851.         $formBuilder->add('periodMinutes'TextType::class, array(
  852.                 'required' => false,
  853.                 'label' => $this->translator->trans('connector.period'),
  854.                 'attr' => array('class' => 'text_form''size' => 11'value' => $userConnectorBlockItem->getPeriodMinutes()),
  855.                 'label_attr' => array('class' => 'form_field_label')
  856.         ));
  857.         
  858.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  859.                 'attr' => array('class' => 'butt_big')));
  860.         
  861.         $form $formBuilder->getForm();
  862.         $form->handleRequest($request);
  863.         
  864.         if ($request->getMethod() == 'POST') {
  865.             
  866.             //$form->bindRequest($request);
  867.             
  868.             if ($form->isValid()) {
  869.                 $formData $form->getData();
  870.                 
  871.                 if(!empty($form['isActive']->getData())) {
  872.                     $userConnectorBlockItem->setIsActive($form['isActive']->getData());
  873.                 }
  874.                 
  875.                 $userConnectorBlockItem->setUserConnectorBlockItemName($formData->getUserConnectorBlockItemName());
  876.                 $userConnectorBlockItem->setSourceUrl($formData->getSourceUrl());
  877.                 $userConnectorBlockItem->setTransformerUrl($formData->getTransformerUrl());
  878.                 $userConnectorBlockItem->setTargetUrl($formData->getTargetUrl());
  879.                 
  880.                 $userConnectorBlockItem->setPriority($formData->getPriority());
  881.                 $userConnectorBlockItem->setPeriodMinutes($formData->getPeriodMinutes());
  882.                 
  883.                 /* we persist and save */
  884.                 $dem->persist($userConnectorBlockItem);
  885.                 $dem->flush(); 
  886.                 
  887.                 $this->addFlash('notice''User Connector Block Item was updated.');
  888.                 
  889.                 return $this->redirectToRoute($connector->getConnectorControllerPath());
  890.                 
  891.             }
  892.             
  893.         }
  894.         
  895.         /* we render data */
  896.         return $this->render('userConnectorBlockItemEdit.html.twig',
  897.                 array('headerData' => $this -> getPageHeader($request),
  898.                         'connector' => $connector,
  899.                         'userConnector' => $userConnector,
  900.                         'connectorBlockItem' => $connectorBlockItem,
  901.                         'userConnectorBlockItem' => $userConnectorBlockItem,
  902.                         'user' => $user,
  903.                         'form' => $formBuilder->getForm()->createView(),
  904.                         'menu' => $this -> adminMenu($request),
  905.                         'mainMenu' => $this -> adminMainMenu($request),
  906.                 )
  907.                 );
  908.         
  909.     }
  910.     
  911.     public function adminMenu(Request $request)
  912.     {
  913.         $menuItems = array(=> array('link' => 'homeuser''langKey' => 'user.admin''routeName' => 'homeuser'),
  914.                 => array('link' => 'connectorAdmin''langKey' => 'connector.admin''routeName' => 'connectorAdmin'),
  915.                 => array('link' => 'connectorLog''langKey' => 'connector.logs''routeName' => 'connectorLog'),
  916.                 => array('link' => 'connectornew''langKey' => 'connector.new_connector''routeName' => 'connectorNew'),
  917.                 => array('link' => 'connectorConfig''langKey' => 'connector.config''routeName' => 'connectorConfig'),
  918.         );
  919.     
  920.         return $menuItems;
  921.     
  922.     }    
  923.     
  924. }