src/Controller/KnowledgeBaseController.php line 70

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\Persistence\ManagerRegistry;
  4. use Symfony\Component\HttpKernel\KernelInterface;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. //use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  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\HiddenType;
  14. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  15. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  16. use Ivory\CKEditorBundle\Form\Type\CKEditorType;
  17. use Symfony\Component\Console\Input\ArrayInput;
  18. use Symfony\Bundle\FrameworkBundle\Console\Application;
  19. use Symfony\Component\Validator\Constraints\DateTime;
  20. use App\Entity\Service;
  21. use App\Entity\Contact;
  22. use App\Entity\ContactGroup;
  23. use App\Entity\CustomList;
  24. use App\Entity\CustomListItem;
  25. use App\Entity\Address;
  26. use App\Entity\User;
  27. use App\Entity\UserStory;
  28. use App\Entity\Module;
  29. use App\Entity\Consent;
  30. use App\Entity\PriceLevel;
  31. use App\Entity\Eshop;
  32. use App\Entity\TradeLead;
  33. use Symfony\Contracts\Translation\TranslatorInterface;
  34. class KnowledgeBaseController extends DefaultController
  35. {
  36.     protected KernelInterface $appKernel;
  37.     protected ManagerRegistry $doctrine;
  38.     protected TranslatorInterface $translator;
  39.     public function __construct(KernelInterface $appKernel,
  40.                                 ManagerRegistry $doctrine,
  41.                                 TranslatorInterface $translator)
  42.     {
  43.         $this->appKernel $appKernel;
  44.         $this->doctrine $doctrine;
  45.         $this->translator $translator;
  46.     }
  47.     /**
  48.      * @Route("/knowledgebase", name="knowledgebase")
  49.      */
  50.     public function indexAction(Request $request)
  51.     {
  52.         /* we load session data */
  53.         parent::init($request);
  54.         $session $request->getSession();
  55.         /* we load entity managers */
  56.         $em $this->doctrine->getManager();
  57.         /* we load list of modules for connector service */
  58.         $service $em->getRepository(Service::class)->getService(2);
  59.         /* we get current user */
  60.         if (!empty($session->get('user'))) {
  61.             $currentUserId $session->get('user')->getUserId();
  62.             $user $em->getRepository(User::class)->getUser($currentUserId);
  63.             $userModuleList $user->getModules();
  64.         } else {
  65.             $userModuleList = [];
  66.         }
  67.         /* we render data */
  68.         return $this->render('knowledgebase.html.twig',
  69.             array('headerData' => $this -> getPageHeader($request),
  70.                   'moduleList' => $service->getModules(),
  71.                   'userModuleList' => $userModuleList,
  72.                   'service' => $service,
  73.                 )
  74.         );        
  75.     }
  76.     /**
  77.      * @Route("/knowledgebaseAdmin", name="knowledgebaseAdmin")
  78.      */    
  79.     public function knowledgebaseAdminAction(Request $request)
  80.     {
  81.         /* we load session data */
  82.         parent::init($request);
  83.          
  84.         $session $request->getSession();
  85.         /* we check if user is logged in */
  86.         if(empty($session->get('user'))) {
  87.             return $this->redirectToRoute('login');
  88.         }         
  89.         
  90.         /* we load entity managers */
  91.         $em $this->doctrine->getManager();
  92.         $dem $this->doctrine->getManager('dynamic_em');
  93.         
  94.         /* we get current user */
  95.         $currentUserId $session->get('user')->getUserId();
  96.         $user $em->getRepository(User::class)->getUser($currentUserId);
  97.         
  98.         /* we load service */
  99.         $service $em->getRepository(Service::class)->getService(2);
  100.         //we check if user has UserStory module and get recent form responses
  101.         $module $em->getRepository(Module::class)->getModule(24);
  102.         $isModule $em->getRepository(User::class)->userHasModule($user$module);
  103.         $taskList null;
  104.         if($isModule) {
  105.             $dateStart date("Y-m-d",strtotime('monday this week'));
  106.             $dateEnd date("Y-m-d",strtotime('sunday this week'));
  107.             $taskList $dem->getRepository(UserStory::class)->getUserStoryStartBetweenDatesList($dateStart$dateEnd);
  108.         }
  109.         /* we render data */
  110.         return $this->render('knowledgebaseAdmin.html.twig',
  111.                 array(    'headerData' => $this -> getPageHeader($request),
  112.                         'moduleList' => $service->getModules(),
  113.                         'userModuleList' => $user->getModules(),
  114.                         'user' => $user,
  115.                         'menu' => $this -> adminMenu($request),
  116.                         'taskList' => $taskList,
  117.                         'mainMenu' => $this -> adminMainMenu($request)                    
  118.                 )
  119.                 );
  120.     
  121.     }
  122.     
  123.     /**
  124.      * @Route("/contactnew", name="contactNew")
  125.      */
  126.     public function contactNewAction(Request $request)
  127.     {
  128.         /* we load session data */
  129.         parent::init($request);
  130.     
  131.         $session $request->getSession();
  132.     
  133.         $em $this->doctrine->getManager();
  134.         /* we get current user */
  135.         $currentUserId $session->get('user')->getUserId();
  136.         $user $em->getRepository(User::class)->getUser($currentUserId);
  137.         $contact = new Contact();
  138.     
  139.         /* we build login form */
  140.         $formBuilder $this->createFormBuilder($contact);
  141.     
  142.         $formBuilder->add('firstName'TextType::class, array(
  143.                 'required' => true,
  144.                 'label' => $this->translator->trans('knowledgebase.first_name'),
  145.                 'attr' => array('class' => 'text_form''size' => 22),
  146.                 'label_attr' => array('class' => 'form_field_label'),
  147.         ));
  148.         
  149.         $formBuilder->add('lastName'TextType::class, array(
  150.                 'required' => true,
  151.                 'label' => $this->translator->trans('knowledgebase.last_name'),
  152.                 'attr' => array('class' => 'text_form''size' => 22),
  153.                 'label_attr' => array('class' => 'form_field_label'),
  154.         )); 
  155.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  156.                 'attr' => array('class' => 'butt_big')));
  157.         $form $formBuilder->getForm();
  158.         $form->handleRequest($request);
  159.     
  160.         if ($request->getMethod() == 'POST') {
  161.     
  162.             if ($form->isValid()) {
  163.                 // perform some action, such as save the object to the database
  164.     
  165.                 /* we load users entity manager */
  166.                 $dem $this->doctrine->getManager('dynamic_em');
  167.                 $formData $form->getData();
  168.                 print('<br>qqw saving data');
  169.                 \Doctrine\Common\Util\Debug::dump($formData);
  170.                 $address = new Address();
  171.                 $deliveryAddress = new Address();
  172.                 print('<br>qqw firstName form: '.$formData->getFirstName());
  173.                 print('<br>qqw firstName object: '.$contact->getFirstName());
  174.                 $contact->setFirstName($formData->getFirstName());
  175.                 $contact->setLastName($formData->getLastName());
  176.                 //$contact->setAddress($address);
  177.                 //$contact->setDeliveryAddress($deliveryAddress);
  178.                 /* we persist and save */
  179.                 //$dem->persist($address);
  180.                 //$dem->persist($deliveryAddress);
  181.                 $dem->persist($contact);
  182.                 $dem->flush();
  183.     
  184.                 $this->addFlash('notice''New contact was created.');
  185.                  
  186.                 return $this->redirectToRoute('contactEdit', array('contactId' => $contact->getContactId()));
  187.     
  188.             }
  189.              
  190.         }
  191.     
  192.         /* we render data */
  193.         return $this->render('contactNew.html.twig',
  194.                 array(    'form' => $formBuilder->getForm()->createView(),
  195.                         'headerData' => $this -> getPageHeader($request),
  196.                         'menu' => $this -> adminMenu($request),
  197.                         'user' => $user,
  198.                         'mainMenu' => $this -> adminMainMenu($request)
  199.                 )
  200.                 );
  201.     
  202.     }
  203.     
  204.     /**
  205.      * @Route("/contacts", name="contacts")
  206.      */
  207.     public function contactsAction(Request $request)
  208.     {
  209.     
  210.         /* we load session data */
  211.         parent::init($request);
  212.         $session $request->getSession();
  213.         /* we check if an user is logged in */
  214.         if(empty($session->get('user'))) {
  215.             return $this->redirectToRoute('login');
  216.         }          
  217.     
  218.         /* we load users entity manager */
  219.         $em $this->doctrine->getManager();
  220.         $dem $this->doctrine->getManager('dynamic_em');
  221.         /* removing contact */
  222.         if(!empty($request->query->get('removeContact'))) { 
  223.             //print('<br>qqw removing Contact 33: '.$request->query->get('removeContact'));   
  224.             try {
  225.                 $contact $dem->getRepository(Contact::class)->removeContact($request->query->get('removeContact'));
  226.                 $this->addFlash('notice''Contact was removed.');
  227.             } catch(\Doctrine\DBAL\DBALException $e) {
  228.                 $this->addFlash('error'"This contact has connected services (orders etc.), so it can't be removed.");
  229.             }
  230.             
  231.         }
  232.         $userId $session->get('user')->getUserId();
  233.         $user $em->getRepository(User::class)->getUser($userId);
  234.         $contactList $dem->getRepository(Contact::class)->getContactList();
  235.         $contactGroupList $dem->getRepository(ContactGroup::class)->getContactGroupList();
  236.         /* we render data */
  237.         return $this->render('contacts.html.twig',
  238.                 array(    'headerData' => $this -> getPageHeader($request),
  239.                         'contactList' => $contactList,
  240.                         'contactGroupList' => $contactGroupList,
  241.                         'menu' => $this -> adminMenu($request),
  242.                         'user' => $user,
  243.                         'mainMenu' => $this -> adminMainMenu($request)
  244.                 )
  245.                 );
  246.     
  247.     }    
  248.     /**
  249.      * @Route("/contactedit/{contactId}", name="contactEdit")
  250.      */
  251.     public function contactEditAction(Request $request$contactId)
  252.     {
  253.         /* we load session data */
  254.         parent::init($request);
  255.         $session $request->getSession();
  256.         /* we check if an user is logged in */
  257.         if(empty($session->get('user'))) {
  258.             return $this->redirectToRoute('login');
  259.         }
  260.         /* we load entity managers */
  261.         $em $this->doctrine->getManager();
  262.         $dem $this->doctrine->getManager('dynamic_em');
  263.     
  264.         $userId $session->get('user')->getUserId();
  265.         $user $em->getRepository(User::class)->getUser($userId);
  266.         $contact $dem->getRepository(Contact::class)->getContact($contactId);
  267.         //$contactExists = $em->getRepository(Contact::class)->findOneBy(['contactId' => $contactId]);
  268.            //->findOneBy(array('order_id' => $orderId));
  269.         //print('<hr>qqw x contact id 1: '.$contactId.': ');
  270.         //\Doctrine\Common\Util\Debug::dump($contact);
  271.          //print('<hr>qqw x contact id 2: '.$contactId.': ');
  272.          //\Doctrine\Common\Util\Debug::dump($contactExists);
  273.         /* we get collection of contact groups */
  274.         $contactGroupList $dem->getRepository(ContactGroup::class)->getContactGroupList();
  275.         /* we get collection of consents */
  276.         $consents $dem->getRepository(Consent::class)->getConsentList();
  277.         /* we build edit form */ 
  278.         $formBuilder $this->createFormBuilder($contact);
  279.     
  280.         $formBuilder->add('firstName'TextType::class, array(
  281.                 'required' => false,
  282.                 'label' => $this->translator->trans('knowledgebase.first_name'),
  283.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getFirstName()),
  284.                 'label_attr' => array('class' => 'form_field_label')
  285.         ));
  286.         
  287.         $formBuilder->add('middleName'TextType::class, array(
  288.                 'required' => false,
  289.                 'label' => $this->translator->trans('knowledgebase.middle_name'),
  290.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getMiddleName()),
  291.                 'label_attr' => array('class' => 'form_field_label')
  292.         ));        
  293.         
  294.         $formBuilder->add('lastName'TextType::class, array(
  295.                 'required' => false,
  296.                 'label' => $this->translator->trans('knowledgebase.last_name'),
  297.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getLastName()),
  298.                 'label_attr' => array('class' => 'form_field_label')
  299.         ));        
  300.         $formBuilder->add('companyName'TextType::class, array(
  301.                 'required' => false,
  302.                 'label' => $this->translator->trans('knowledgebase.company_name'),
  303.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getCompanyName()),
  304.                 'label_attr' => array('class' => 'form_field_label')
  305.         ));         
  306.         $formBuilder->add('email'TextType::class, array(
  307.                 'required' => false,
  308.                 'label' => $this->translator->trans('knowledgebase.email'),
  309.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getEmail()),
  310.                 'label_attr' => array('class' => 'form_field_label')
  311.         ));           
  312.         $formBuilder->add('email2'TextType::class, array(
  313.                 'required' => false,
  314.                 'label' => $this->translator->trans('knowledgebase.email').' 2',
  315.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getEmail2()),
  316.                 'label_attr' => array('class' => 'form_field_label')
  317.         ));     
  318.         $formBuilder->add('email3'TextType::class, array(
  319.                 'required' => false,
  320.                 'label' => $this->translator->trans('knowledgebase.email').' 3',
  321.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getEmail3()),
  322.                 'label_attr' => array('class' => 'form_field_label')
  323.         ));     
  324.         $formBuilder->add('phone'TextType::class, array(
  325.                 'required' => false,
  326.                 'label' => $this->translator->trans('knowledgebase.phone'),
  327.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getPhone()),
  328.                 'label_attr' => array('class' => 'form_field_label')
  329.         ));   
  330.         $formBuilder->add('phone2'TextType::class, array(
  331.                 'required' => false,
  332.                 'label' => $this->translator->trans('knowledgebase.phone').' 2',
  333.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getPhone2()),
  334.                 'label_attr' => array('class' => 'form_field_label')
  335.         ));  
  336.         $formBuilder->add('phone3'TextType::class, array(
  337.                 'required' => false,
  338.                 'label' => $this->translator->trans('knowledgebase.phone').' 3',
  339.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getPhone3()),
  340.                 'label_attr' => array('class' => 'form_field_label')
  341.         ));    
  342.         /* we set addresses */
  343.         if(empty($contact->getAddress())) {
  344.             $address = new Address;
  345.             $contact->setAddress($address);
  346.         }
  347.         $formBuilder->add('addressStreet'TextType::class, array(
  348.                 'required' => false,
  349.                 'label' => $this->translator->trans('address.street'),
  350.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getAddress()->getStreet()),
  351.                 'label_attr' => array('class' => 'form_field_label_top'),
  352.                 'mapped' => false
  353.         ));
  354.         $formBuilder->add('addressStreetNumber'TextType::class, array(
  355.                 'required' => false,
  356.                 'label' => $this->translator->trans('address.street_number'),
  357.                 'attr' => array('class' => 'text_form''size' => 10'value' => $contact->getAddress()->getStreetNumber()),
  358.                 'label_attr' => array('class' => 'form_field_label'),
  359.                 'mapped' => false
  360.         ));   
  361.         $formBuilder->add('addressZipCode'TextType::class, array(
  362.                 'required' => false,
  363.                 'label' => $this->translator->trans('address.zip_code'),
  364.                 'attr' => array('class' => 'text_form''size' => 10'value' => $contact->getAddress()->getZipCode()),
  365.                 'label_attr' => array('class' => 'form_field_label'),
  366.                 'mapped' => false
  367.         ));          
  368.         $formBuilder->add('addressCity'TextType::class, array(
  369.                 'required' => false,
  370.                 'label' => $this->translator->trans('address.city'),
  371.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getAddress()->getCity()),
  372.                 'label_attr' => array('class' => 'form_field_label'),
  373.                 'mapped' => false
  374.         ));                      
  375.         $formBuilder->add('addressCountry'TextType::class, array(
  376.                 'required' => false,
  377.                 'label' => $this->translator->trans('address.country'),
  378.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getAddress()->getCountry()),
  379.                 'label_attr' => array('class' => 'form_field_label_bottom'),
  380.                 'mapped' => false
  381.         ));                 
  382.         
  383.         /* we set delivery address */
  384.         if(empty($contact->getDeliveryAddress())) {
  385.             $deliveryAddress = new Address;
  386.             $contact->setDeliveryAddress($deliveryAddress);
  387.         }
  388.         $formBuilder->add('deliveryAddressStreet'TextType::class, array(
  389.                 'required' => false,
  390.                 'label' => $this->translator->trans('address.street_delivery'),
  391.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getDeliveryAddress()->getStreet()),
  392.                 'label_attr' => array('class' => 'form_field_label'),
  393.                 'mapped' => false
  394.         ));
  395.         $formBuilder->add('deliveryAddressStreetNumber'TextType::class, array(
  396.                 'required' => false,
  397.                 'label' => $this->translator->trans('address.street_number_delivery'),
  398.                 'attr' => array('class' => 'text_form''size' => 10'value' => $contact->getDeliveryAddress()->getStreetNumber()),
  399.                 'label_attr' => array('class' => 'form_field_label'),
  400.                 'mapped' => false
  401.         ));   
  402.         $formBuilder->add('deliveryAddressZipCode'TextType::class, array(
  403.                 'required' => false,
  404.                 'label' => $this->translator->trans('address.zip_code_delivery'),
  405.                 'attr' => array('class' => 'text_form''size' => 10'value' => $contact->getDeliveryAddress()->getZipCode()),
  406.                 'label_attr' => array('class' => 'form_field_label'),
  407.                 'mapped' => false
  408.         ));          
  409.         $formBuilder->add('deliveryAddressCity'TextType::class, array(
  410.                 'required' => false,
  411.                 'label' => $this->translator->trans('address.city_delivery'),
  412.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getDeliveryAddress()->getCity()),
  413.                 'label_attr' => array('class' => 'form_field_label'),
  414.                 'mapped' => false
  415.         ));                      
  416.         $formBuilder->add('deliveryAddressCountry'TextType::class, array(
  417.                 'required' => false,
  418.                 'label' => $this->translator->trans('address.country_delivery'),
  419.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getDeliveryAddress()->getCountry()),
  420.                 'label_attr' => array('class' => 'form_field_label_bottom'),
  421.                 'mapped' => false
  422.         ));         
  423.         /*  
  424.         $formBuilder->add('address', TextType::class, array(
  425.                 'required' => false,
  426.                 'label' => $this->translator->trans('user.address').' 1',
  427.                 'attr' => array('class' => 'text_form', 'size' => 35, 'value' => $contact->getAddress1()),
  428.                 'label_attr' => array('class' => 'form_field_label')
  429.         ));   
  430.         $formBuilder->add('address2', TextType::class, array(
  431.                 'required' => false,
  432.                 'label' => $this->translator->trans('user.address').' 2',
  433.                 'attr' => array('class' => 'text_form', 'size' => 35, 'value' => $contact->getAddress2()),
  434.                 'label_attr' => array('class' => 'form_field_label')
  435.         )); 
  436.         $formBuilder->add('invoiceAddress', TextType::class, array(
  437.                 'required' => false,
  438.                 'label' => $this->translator->trans('module.invoice_address').' 1',
  439.                 'attr' => array('class' => 'text_form', 'size' => 35, 'value' => $contact->getInvoiceAddress1()),
  440.                 'label_attr' => array('class' => 'form_field_label')
  441.         ));   
  442.         $formBuilder->add('invoiceAddress2', TextType::class, array(
  443.                 'required' => false,
  444.                 'label' => $this->translator->trans('module.invoice_address').' 2',
  445.                 'attr' => array('class' => 'text_form', 'size' => 35, 'value' => $contact->getInvoiceAddress2()),
  446.                 'label_attr' => array('class' => 'form_field_label')
  447.         )); 
  448.         */  
  449.         $formBuilder->add('businessId'TextType::class, array(
  450.                 'required' => false,
  451.                 'label' => $this->translator->trans('user.business_number'),
  452.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getBusinessId()),
  453.                 'label_attr' => array('class' => 'form_field_label')
  454.         ));   
  455.         $formBuilder->add('DICId'TextType::class, array(
  456.                 'required' => false,
  457.                 'label' => $this->translator->trans('user.DIC_number'),
  458.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getDICId()),
  459.                 'label_attr' => array('class' => 'form_field_label')
  460.         ));    
  461.         $formBuilder->add('ERPKey'TextType::class, array(
  462.                 'required' => false,
  463.                 'label' => $this->translator->trans('system.erp_key'),
  464.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getERPKey()),
  465.                 'label_attr' => array('class' => 'form_field_label')
  466.         ));        
  467.         $formBuilder->add('notes'TextareaType::class, array(
  468.                 'required' => false,
  469.                 'label' => $this->translator->trans('system.notes'),
  470.                 'attr' => array('class' => 'textarea_form''cols' => 55'rows' => 4'value' => $contact->getNotes()),
  471.                 'label_attr' => array('class' => 'form_textarea_label'),
  472.                 'data' => $contact->getNotes(),
  473.         ));                
  474.         $formBuilder->add('contactUserName'TextType::class, array(
  475.                 'required' => false,
  476.                 'label' => $this->translator->trans('knowledgebase.user_name'),
  477.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getContactUserName()),
  478.                 'label_attr' => array('class' => 'form_field_label')
  479.         ));    
  480.         
  481.         $formBuilder->add('contactUserPassword'TextType::class, array(
  482.                 'required' => false,
  483.                 'label' => $this->translator->trans('knowledgebase.password'),
  484.                 'attr' => array('class' => 'text_form''size' => 35'value' => $contact->getContactUserPassword()),
  485.                 'label_attr' => array('class' => 'form_field_label')
  486.         ));   
  487.         /* we add all contact groups */
  488.         $contactGroups = array();
  489.         foreach($contactGroupList as $contactGroup)
  490.         {
  491.             $contactGroups[$contactGroup->getContactGroupName()] = $contactGroup->getContactGroupId();
  492.         }
  493. //        print('<br>All ContactGroups: ');
  494. //        print_r($contactGroups);
  495.         $selectedContactGroups = array();
  496. //        print('<br>------------------- ContactGroups 0: ');
  497. //        \Doctrine\Common\Util\Debug::dump($contact->getContactGroups());
  498.         if (!empty($contact->getContactGroups())) {
  499.             foreach($contact->getContactGroups() as $contactGroup) {
  500.               if(!empty($contactGroup)) {
  501.                 $selectedContactGroups[] = $contactGroup->getContactGroupId();
  502.               }
  503.             }
  504.         }
  505. //        print('<br>ContactGroups: ');
  506. //        \Doctrine\Common\Util\Debug::dump($contact->getContactGroups());
  507.         //print_r($contact->getContactGroups());
  508.         $formBuilder->add('contactGroups'ChoiceType::class, array(
  509.                 'choices' => $contactGroups,
  510.                 'required' => false,
  511.                 'mapped' => false,
  512.                 'multiple' => true,
  513.                 'expanded' => true,
  514.                 'label_attr' => array('class' => 'form_field_label'),
  515.                 'attr' => array('class' => 'form_field_text'),
  516.                 'data' => $selectedContactGroups
  517.         ));  
  518.         /* we add all consents */
  519.         $consentList = array();
  520.         foreach($consents as $consent)
  521.         {
  522.             $consent->setLocale($session->get('lang')->getLangKey());
  523.             $dem->refresh($consent);  
  524.             $consentList[$consent->getConsentName()] = $consent->getConsentId();
  525.         }
  526. //        print('<br>------------------- all consents: ');
  527. //        \Doctrine\Common\Util\Debug::dump($consentList);
  528.         $selectedConsents = array();
  529.         if (!empty($contact->getConsents())) {
  530.             foreach ($contact->getConsents() as $consent) {
  531.                 if (!empty($consent)) {
  532.                     $selectedConsents[] = $consent->getConsentId();
  533.                 }
  534.             }
  535.         }
  536.         $formBuilder->add('consents'ChoiceType::class, array(
  537.                 'choices' => $consentList,
  538.                 'required' => false,
  539.                 'mapped' => false,
  540.                 'multiple' => true,
  541.                 'expanded' => true,
  542.                 'label_attr' => array('class' => 'form_field_label'),
  543.                 'attr' => array('class' => 'form_field_text'),
  544.                 'data' => $selectedConsents
  545.         ));   
  546.         //isModule Price Levels
  547.         $module $em->getRepository(Module::class)->getModule(22);
  548.         $isPriceLevelModule $em->getRepository(User::class)->userHasModule($user$module);
  549.         $consentList null;
  550.         if($isPriceLevelModule) {
  551.             //print('<br>qqw is module Price Levels');
  552.             $priceLevels $dem->getRepository(PriceLevel::class)->getPriceLevelList();
  553.             /* we add all price levels */
  554.             $priceLevelList = array();
  555.             foreach($priceLevels as $priceLevel)
  556.             {
  557.                 $priceLevel->setLocale($session->get('lang')->getLangKey());
  558.                 $dem->refresh($priceLevel); 
  559.                 
  560.                 $priceLevelList[$priceLevel->getPriceLevelName()] = $priceLevel->getPriceLevelId();
  561.             }
  562.             $selectedPriceLevels = array();
  563.             $selectedPriceLevel 1;
  564.             if(!empty($contact->getPriceLevel())) {
  565. //                print('<br>contactPriceLevel: ');
  566. //                \Doctrine\Common\Util\Debug::dump($contact->getPriceLevel());
  567.                 //print_r($contact->getPriceLevel());
  568.               //$selectedPriceLevels[] = $contact->getPriceLevel()->getPriceLevelId();
  569.               $selectedPriceLevel $contact->getPriceLevel()->getPriceLevelId();
  570.             }
  571.             $formBuilder->add('priceLevel'ChoiceType::class, array(
  572.                     'choices' => $priceLevelList,
  573.                     'required' => false,
  574.                     'mapped' => false,
  575.                     'multiple' => false,
  576.                     'expanded' => true,
  577.                     'label_attr' => array('class' => 'form_field_label'),
  578.                     'attr' => array('class' => 'form_field_text'),
  579.                     'data' => $selectedPriceLevel
  580.             ));              
  581.         }               
  582.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  583.                 'attr' => array('class' => 'butt_big')));
  584.     
  585.         $form $formBuilder->getForm();
  586.         $form->handleRequest($request);
  587.     
  588.         if ($request->getMethod() == 'POST') {
  589.             if ($form->isValid()) {
  590.                 // perform some action, such as save the object to the database
  591.                 //print('<br>qqw post form 2: ');
  592.                 $formData $form->getData();
  593.     
  594.                 /* we load data from form into contact object */
  595.                 $contact->setFirstName($formData->getFirstName());
  596.                 $contact->setMiddleName($formData->getMiddleName());
  597.                 $contact->setLastName($formData->getLastName());
  598.                 $contact->setCompanyName($formData->getCompanyName());
  599.                 $contact->setEmail($formData->getEmail());
  600.                 $contact->setEmail2($formData->getEmail2());
  601.                 $contact->setEmail3($formData->getEmail3());
  602.                 $contact->setPhone($formData->getPhone());
  603.                 $contact->setPhone2($formData->getPhone2());
  604.                 $contact->setPhone3($formData->getPhone3());
  605.                 $address $contact->getAddress();
  606.                 $address->setStreet($form['addressStreet']->getData());
  607.                 $address->setStreetNumber($form['addressStreetNumber']->getData());
  608.                 $address->setCity($form['addressCity']->getData());
  609.                 $address->setZipCode($form['addressZipCode']->getData());
  610.                 $address->setCountry($form['addressCountry']->getData());
  611.                 //$contact->setAddress($address);
  612.                 $deliveryAddress $contact->getDeliveryAddress();
  613.                 $deliveryAddress->setStreet($form['deliveryAddressStreet']->getData());
  614.                 $deliveryAddress->setStreetNumber($form['deliveryAddressStreetNumber']->getData());
  615.                 $deliveryAddress->setCity($form['deliveryAddressCity']->getData());
  616.                 $deliveryAddress->setZipCode($form['deliveryAddressZipCode']->getData());
  617.                 $deliveryAddress->setCountry($form['deliveryAddressCountry']->getData());
  618.                 //$contact->setDeliveryAddress($deliveryAddress);
  619.                 $contact->setBusinessId($formData->getBusinessId());
  620.                 $contact->setDICId($formData->getDICId());
  621.                 $contact->setNotes($formData->getNotes());
  622.                 $contact->setContactUserName($formData->getContactUserName());
  623.                 // if the password is md5 hash already we do not hash
  624.                 $cuPsw $formData->getContactUserPassword();
  625.                 if(strlen($cuPsw) == 32 && ctype_xdigit($cuPsw)) {
  626.                     $password $cuPsw;
  627.                 } else {
  628.                     $password md5($cuPsw);
  629.                 }
  630.                 $contact->setContactUserPassword($password);
  631.                 // we remove old contact groups
  632.                 if(!empty($contact->getContactGroups())) {
  633.                     foreach ($contact->getContactGroups() as $group) {
  634.                         print('<br>Group: ');
  635.                         $contact->removeContactGroup($group);
  636.                         //$dem->refresh($product);
  637.                         //$dem->persist($cat);
  638.                     }
  639.                 }
  640.                 // we save contact groups
  641.                 $formContactGroups $form['contactGroups']->getData();
  642.                 if(is_array($formContactGroups)) {
  643.                     foreach($formContactGroups as $contactGroupId) {
  644.                         //print('');
  645.                         $group $dem->getRepository(ContactGroup::class)->getContactGroup($contactGroupId);
  646.                         $contact->addContactGroup($group);
  647.                     }
  648.                 }
  649.                 // we save selected price level
  650.                 if($isPriceLevelModule && !empty($form['priceLevel']->getData())) {
  651.                     print('<br>PLId : '.$form['priceLevel']->getData());
  652.                     $priceLevel $dem->getRepository(PriceLevel::class)->getPriceLevel($form['priceLevel']->getData());
  653.                     $contact->setPriceLevel($priceLevel);
  654.                     //print('<br>QQW selected price level: ');
  655.                     //\Doctrine\Common\Util\Debug::dump($priceLevel);
  656.                 }
  657.                 // we remove old consents
  658.                 if(!empty($contact->getConsents())) {
  659.                     foreach ($contact->getConsents() as $consent) {
  660.                         print('<br>Consent: ');
  661.                         $contact->removeConsent($consent);
  662.                     }
  663.                 }
  664.                 // we save consents
  665.                 $formConsents $form['consents']->getData();
  666.                 if(is_array($formConsents)) {
  667.                     foreach($formConsents as $consentId) {
  668.                         $consent $dem->getRepository(Consent::class)->getConsent($consentId);
  669.                         $contact->addConsent($consent);
  670.                     }
  671.                 }
  672.                 /* we persist and save */
  673.                 $em->persist($contact);
  674.                 $dem->flush();
  675.     
  676.                 $this->addFlash('notice''Contact was updated.');
  677.     
  678.                 return $this->redirectToRoute('contactEdit', array('contactId' => $contact->getContactId()));
  679.     
  680.             }
  681.     
  682.         }
  683.     
  684.         /* we render data */
  685.         return $this->render('contactEdit.html.twig',
  686.                 array(  'headerData' => $this -> getPageHeader($request),
  687.                         'form' => $formBuilder->getForm()->createView(),
  688.                         'user' => $user,
  689.                         'contact' => $contact,
  690.                         'menu' => $this -> adminMenu($request),
  691.                         'mainMenu' => $this -> adminMainMenu($request)
  692.                 )
  693.                 );
  694.     
  695.     }   
  696.          /**
  697.      * @Route("/contactGroupNew", name="contactGroupNew")
  698.      */
  699.     public function contactGroupNewAction(Request $request)
  700.     {
  701.         /* we load session data */
  702.         parent::init($request);
  703.          
  704.         $session $request->getSession();
  705.         $em $this->doctrine->getManager();
  706.         $userId $session->get('user')->getUserId();
  707.         $user $em->getRepository(User::class)->getUser($userId);
  708.         $contactGroup = new ContactGroup();
  709.         /* we build login form */
  710.         $formBuilder $this->createFormBuilder($contactGroup);
  711.         
  712.         $formBuilder->add('contactGroupName'TextType::class, array(
  713.                 'required' => true,
  714.                 'label' => $this->translator->trans('knowledgebase.contact_group_name'),
  715.                 'attr' => array('class' => 'text_form''size' => 22),
  716.                 'label_attr' => array('class' => 'form_field_label'),
  717.         ));     
  718.     
  719.         //form.button.save
  720.         
  721.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  722.                 'attr' => array('class' => 'butt_big')));
  723.         
  724.         $form $formBuilder->getForm();        
  725.         $form->handleRequest($request);
  726.         
  727.         if ($request->getMethod() == 'POST') {
  728.             if ($form->isValid()) {
  729.                 // perform some action, such as save the object to the database
  730.         
  731.                 /* we load users entity manager */
  732.                 $dem $this->doctrine->getManager('dynamic_em');
  733.                 $formData $form->getData();
  734.                 $contactGroup = new ContactGroup;
  735.                 $contactGroup->setContactGroupName($formData->getContactGroupName());
  736.                 
  737.                 /* we persist and save */
  738.                 $dem->persist($contactGroup);
  739.                 $dem->flush();
  740.                 
  741.                 $this->addFlash('notice''New contact group was created.');
  742.                 
  743.                 return $this->redirectToRoute('contactGroupEdit', array('contactGroupId' => $contactGroup->getContactGroupId()));
  744.         
  745.             }
  746.         
  747.         }
  748.     
  749.         /* we render data */
  750.         return $this->render('contactGroupNew.html.twig',
  751.                 array(  'form' => $formBuilder->getForm()->createView(),
  752.                         'headerData' => $this -> getPageHeader($request),
  753.                         'menu' => $this -> adminMenu($request),
  754.                         'user' => $user,
  755.                         'mainMenu' => $this -> adminMainMenu($request)
  756.                 )
  757.                 );
  758.     
  759.     }  
  760.     /**
  761.      * @Route("/contactGroupEdit/{contactGroupId}", name="contactGroupEdit")
  762.      */
  763.     public function contactGroupEditAction(Request $request$contactGroupId)
  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.         /* we get user */ 
  774.         $userId $session->get('user')->getUserId();
  775.         $user $em->getRepository(User::class)->getUser($userId);
  776.         
  777.         /* we get current e-shop */
  778.         $eshop $em->getRepository(Eshop::class)->getCurrentEshop($userId);
  779.  
  780.         /* we get product parameter group */
  781.         $contactGroup $dem->getRepository(ContactGroup::class)->getContactGroup($contactGroupId);
  782.         $userDirs $this->getUserFolderPaths($request);
  783.         
  784.         /*
  785.         print('<br>QQW categoryCollection: ');
  786.         \Doctrine\Common\Util\Debug::dump($categoryCollection);
  787.         */
  788.           
  789.         /* we build edit form */
  790.         $formBuilder $this->createFormBuilder($contactGroup);
  791.         $formBuilder->add('contactGroupName'TextType::class, array(
  792.                 'required' => true,
  793.                 'label' => $this->translator->trans('knowledgebase.contact_group_name'),
  794.                 'attr' => array('class' => 'text_form''size' => 22'value' => $contactGroup->getContactGroupName()),
  795.                 'label_attr' => array('class' => 'form_field_label'),
  796.         ));         
  797.        
  798.          $formBuilder->add('contactGroupBoard'TextareaType::class, array(
  799.                 'required' => false,
  800.                 'label' => $this->translator->trans('knowledgebase.contact_group_board'),
  801.                 'attr' => array('class' => 'textarea_form''cols' => 77'rows' => 7'value' => $contactGroup->getContactGroupBoard()),
  802.                 'label_attr' => array('class' => 'form_field_label'),
  803.                 'data' => $contactGroup->getContactGroupBoard(),
  804.         )); 
  805.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  806.                 'attr' => array('class' => 'butt_big')));
  807.          
  808.         $form $formBuilder->getForm();
  809.          
  810.         $form->handleRequest($request);
  811.          
  812.         if ($request->getMethod() == 'POST') {
  813.              
  814.             //$form->bindRequest($request);
  815.              
  816.             if ($form->isValid()) {
  817.                 // perform some action, such as save the object to the database
  818.                 $formData $form->getData();
  819.         
  820.                 $contactGroup->setContactGroupName($formData->getContactGroupName());
  821.                 $contactGroup->setContactGroupBoard($formData->getContactGroupBoard());
  822.                 /* we persist and save */
  823.                 $dem->persist($contactGroup);
  824.                 $dem->flush();
  825.                 $this->addFlash('notice''Contact group was updated.');
  826.                 return $this->redirectToRoute('contactGroupEdit', array('contactGroupId' => $contactGroup->getContactGroupId()));
  827.                  
  828.             }
  829.              
  830.         }
  831.         /* we render data */
  832.         return $this->render('contactGroupEdit.html.twig',
  833.             array('headerData' => $this -> getPageHeader($request),
  834.                   'form' => $formBuilder->getForm()->createView(),
  835.                   'contactGroup' => $contactGroup,
  836.                   'userDirs' => $userDirs,
  837.                   'menu' => $this -> adminMenu($request),
  838.                   'user' => $user,
  839.                   'mainMenu' => $this -> adminMainMenu($request)
  840.                 )
  841.         );        
  842.     }
  843.     
  844.     /**
  845.      * @Route("/lists", name="lists")
  846.      */
  847.     public function listsAction(Request $request)
  848.     {
  849.         /* we load session data */
  850.         parent::init($request);
  851.         $session $request->getSession();
  852.         // we check if any user is logged in
  853.         if(!$this->isLoggedUser($request)) {
  854.             return $this->redirectToRoute('login');
  855.         } 
  856.         /* we load entity managers */
  857.         $em $this->doctrine->getManager();
  858.         $dem $this->doctrine->getManager('dynamic_em');
  859.         /* we get user */
  860.         $userId $session->get('user')->getUserId();
  861.         $user $em->getRepository(User::class)->getUser($userId);
  862.         /* we check if user is logged in */
  863.         if(empty($session->get('user'))) {
  864.             return $this->redirectToRoute('login');
  865.         }          
  866.         /* we get file name and paths */
  867.         $userDirs $this->getUserFolderPaths($request);        
  868.     
  869.         $customLists $dem->getRepository(CustomList::class)->getCustomLists();
  870.         /* we build search form */
  871.         $formBuilder $this->createFormBuilder();
  872.         $searchString null;
  873.         $searchResult null;
  874.     
  875.         $formBuilder->add('searchString'TextType::class, array(
  876.                 'required' => true,
  877.                 'label' => ' ',
  878.                 'attr' => array('class' => 'text_form''size' => 22),
  879.                 'label_attr' => array('class' => 'form_field_label22'),
  880.         ));
  881.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('system.search'),
  882.                 'attr' => array('class' => 'inlineButton')));
  883.     
  884.         $form $formBuilder->getForm();
  885.         $form->handleRequest($request);
  886.     
  887.         if ($request->getMethod() == 'POST') {
  888.     
  889.             if ($form->isValid()) {
  890.                 $searchString $request->request->get('form')['searchString'];
  891.                 $searchResult['listItems'] = $dem->getRepository(CustomListItem::class)->getCustomListItemBySearch(trim($searchString));
  892.     
  893.                 $this->addFlash('notice''Searched string:'.$searchString);
  894.             }
  895.              
  896.         }
  897.         /* we render data */
  898.         return $this->render('lists.html.twig',
  899.                 array(    'form' => $formBuilder->getForm()->createView(),
  900.                         'headerData' => $this -> getPageHeader($request),
  901.                         'customLists' => $customLists,
  902.                         'menu' => $this -> adminMenu($request),
  903.                         'userDirs' => $userDirs,
  904.                         'searchResult' => $searchResult,    
  905.                         'searchString' => $searchString,
  906.                         'user' => $user,
  907.                         'mainMenu' => $this -> adminMainMenu($request)
  908.                 )
  909.                 );
  910.     
  911.     }    
  912.     
  913.    /**
  914.      * @Route("/listnew", name="listNew")
  915.      */
  916.     public function listNewAction(Request $request)
  917.     {
  918.         /* we load session data */
  919.         parent::init($request);
  920.     
  921.         $session $request->getSession();
  922.     
  923.         $em $this->doctrine->getManager();
  924.         /* we get user */
  925.         $userId $session->get('user')->getUserId();
  926.         $user $em->getRepository(User::class)->getUser($userId);
  927.     
  928.         /* we build login form */
  929.         $list = new CustomList();
  930.         $formBuilder $this->createFormBuilder($list);
  931.         $formBuilder->add('listName'TextType::class, array(
  932.                 'required' => true,
  933.                 'label' => $this->translator->trans('knowledgebase.list_name'),
  934.                 'attr' => array('class' => 'text_form''size' => 22),
  935.                 'label_attr' => array('class' => 'form_field_label'),
  936.         ));
  937.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  938.                 'attr' => array('class' => 'butt_big')));
  939.     
  940.         $form $formBuilder->getForm();
  941.         $form->handleRequest($request);
  942.     
  943.         if ($request->getMethod() == 'POST') {
  944.     
  945.             if ($form->isValid()) {
  946.                 // perform some action, such as save the object to the database
  947.                 /* we load users entity manager */
  948.                 $dem $this->doctrine->getManager('dynamic_em');
  949.                 $formData $form->getData();
  950.                 print('<br>qqw saving data');
  951.                 \Doctrine\Common\Util\Debug::dump($formData);
  952.                 $list->setListName($formData->getListName());
  953.                 /* we persist and save */
  954.                 $dem->persist($list);
  955.                 $dem->flush();
  956.     
  957.                 $this->addFlash('notice''New list was created.');
  958.                  
  959.                 return $this->redirectToRoute('listEdit', array('listId' => $list->getListId()));
  960.     
  961.             }
  962.              
  963.         }
  964.     
  965.         /* we render data */
  966.         return $this->render('listNew.html.twig',
  967.                 array(    'form' => $formBuilder->getForm()->createView(),
  968.                         'headerData' => $this -> getPageHeader($request),
  969.                         'menu' => $this -> adminMenu($request),
  970.                         'user' => $user,
  971.                         'mainMenu' => $this -> adminMainMenu($request)
  972.                 )
  973.                 );
  974.     
  975.     }       
  976.     
  977.     /**
  978.      * @Route("/listedit/{listId}", name="listEdit")
  979.      */
  980.     public function listEditAction(Request $request$listId)
  981.     {
  982.         /* we load session data */
  983.         parent::init($request);
  984.         $session $request->getSession();
  985.         // we check if any user is logged in
  986.         if(!$this->isLoggedUser($request)) {
  987.             return $this->redirectToRoute('login');
  988.         }   
  989.     
  990.         /* we load users entity manager */
  991.         $em $this->doctrine->getManager();
  992.         $dem $this->doctrine->getManager('dynamic_em');
  993.     
  994.         $userId $session->get('user')->getUserId();
  995.         $user $em->getRepository(User::class)->getUser($userId);
  996.         /* removing list item */
  997.         if(!empty($request->query->get('removeListItem'))) {
  998.             $listItem $dem->getRepository(CustomListItem::class)->removeCustomListItem($request->query->get('removeListItem'));
  999.             $this->addFlash('notice''List item was removed.');
  1000.         }  
  1001.         if(!empty($request->query->get('saveXml'))) {  
  1002.             //print('<br>qqw saving xml');
  1003.             $this->saveListXML($request$listId);
  1004.             $this->addFlash('notice''List was exported to XML.');
  1005.         }      
  1006.     
  1007.         $list $dem->getRepository(CustomList::class)->getCustomList($listId);
  1008.         $listItems $dem->getRepository(CustomListItem::class)->getCustomListItems($listId);
  1009.         /* we get file name and paths */
  1010.         $userDirs $this->getUserFolderPaths($request);
  1011.         /*
  1012.         print('<br>QQW list ID: '.$listId);
  1013.         \Doctrine\Common\Util\Debug::dump($list);
  1014.         */
  1015.     
  1016.         /* we build form for new items */
  1017.         $listItem = new CustomListItem();
  1018.         $formNewItemsBuilder $this->createFormBuilder($listItem);
  1019.         $formNewItemsBuilder->add('listItemName'TextType::class, array(
  1020.                 'required' => true,
  1021.                 'label' => $this->translator->trans('knowledgebase.new_list_item'),
  1022.                 'attr' => array('class' => 'text_form_file2''size' => 35'value' => ''),
  1023.                 'label_attr' => array('class' => 'form_field_label'),
  1024.         )); 
  1025.         $formNewItemsBuilder->add('listItemShortDescription'TextType::class, array(
  1026.                 'required' => false,
  1027.                 'label' => $this->translator->trans('knowledgebase.list_short_description'),
  1028.                 'attr' => array('class' => 'text_form_file2''size' => 35'value' => ''),
  1029.                 'label_attr' => array('class' => 'form_field_label'),
  1030.         ));   
  1031.         $formNewItemsBuilder->add('listItemLongDescription'TextareaType::class, array(
  1032.                 'required' => false,
  1033.                 'label' => $this->translator->trans('knowledgebase.list_item_long_description'),
  1034.                 'attr' => array('class' => 'textarea_form''cols' => 50'rows' => 3'value' => ''),
  1035.                 'label_attr' => array('class' => 'form_textarea_label'),
  1036.         ));         
  1037.         $formNewItemsBuilder->add('clickURL'TextType::class, array(
  1038.                 'required' => false,
  1039.                 'label' => $this->translator->trans('system.link_url'),
  1040.                 'attr' => array('class' => 'text_form_file2''size' => 35'value' => ''),
  1041.                 'label_attr' => array('class' => 'form_field_label'),
  1042.         ));               
  1043.         $formNewItemsBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('knowledgebase.create_list_item'),
  1044.                 'attr' => array('class' => 'butt_big')));  
  1045.         /* we build edit form */
  1046.         $formBuilder $this->createFormBuilder($list);
  1047.     
  1048.         $formBuilder->add('listName'TextType::class, array(
  1049.                 'required' => false,
  1050.                 'label' => $this->translator->trans('knowledgebase.list_name'),
  1051.                 'attr' => array('class' => 'text_form''size' => 35'value' => $list->getListName()),
  1052.                 'label_attr' => array('class' => 'form_field_label')
  1053.         ));
  1054.         $formBuilder->add('linkURL'TextType::class, array(
  1055.                 'required' => false,
  1056.                 'label' => $this->translator->trans('system.link_url'),
  1057.                 'attr' => array('class' => 'text_form''size' => 35'value' => $list->getLinkURL()),
  1058.                 'label_attr' => array('class' => 'form_field_label')
  1059.         ));   
  1060.         $formBuilder->add('xmlFile'TextType::class, array(
  1061.                 'required' => false,
  1062.                 'label' => $this->translator->trans('system.xml_file'),
  1063.                 'attr' => array('class' => 'text_form''size' => 25'value' => $list->getXmlFile()),
  1064.                 'label_attr' => array('class' => 'form_field_label')
  1065.         ));  
  1066.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  1067.                 'attr' => array('class' => 'butt_big')));
  1068.         if ($request->getMethod() == 'POST') {
  1069.             $formNewItems $formNewItemsBuilder->getForm();
  1070.             $formNewItems->handleRequest($request);
  1071.             if ($formNewItems->isValid()) {
  1072.                 $formNewItemsData $formNewItems->getData();
  1073.                 
  1074.                 /* we load users entity manager */
  1075.                 //$dem = $this->doctrine->getManager('dynamic_em');
  1076.                 $listItem->setListItemName($formNewItemsData->getListItemName());
  1077.                 $listItem->setListItemShortDescription($formNewItemsData->getListItemShortDescription());
  1078.                 $listItem->setListItemLongDescription($formNewItemsData->getListItemLongDescription());
  1079.                 $listItem->setClickURL($formNewItemsData->getClickURL());
  1080.                 $listItem->setListId($listId);
  1081.                 /* we persist and save */
  1082.                 $dem->persist($listItem);
  1083.                 $dem->flush();
  1084.                 $this->addFlash('notice''New Item was Created');
  1085.                 
  1086.                 return $this->redirectToRoute('listEdit', array('listId' => $listId));               
  1087.                 
  1088.             }
  1089.             $form $formBuilder->getForm();
  1090.             $form->handleRequest($request);
  1091.             if ($form->isValid()) {
  1092.                 $formData $form->getData();
  1093.     
  1094.                 /* we load data from form into contact object */
  1095.                 $list->setListName($formData->getListName());
  1096.                 $list->setXmlFile($formData->getXmlFile());
  1097.                 $list->setLinkURL($formData->getLinkURL());
  1098.                 /* we persist and save */
  1099.                 //$em->persist($contact);
  1100.                 $dem->flush();
  1101.     
  1102.                 $this->addFlash('notice''List was updated.');
  1103.     
  1104.                 return $this->redirectToRoute('listEdit', array('listId' => $list->getListId()));
  1105.     
  1106.             }
  1107.     
  1108.         }
  1109.     
  1110.         /* we render data */
  1111.         return $this->render('listEdit.html.twig',
  1112.                 array(  'headerData' => $this -> getPageHeader($request),
  1113.                         'formNewItems' => $formNewItemsBuilder->getForm()->createView(),
  1114.                         'form' => $formBuilder->getForm()->createView(),
  1115.                         'list' => $list,
  1116.                         'listItems' => $listItems,
  1117.                         'userDirs' => $userDirs,
  1118.                         'user' => $user,
  1119.                         'menu' => $this -> adminMenu($request),
  1120.                         'mainMenu' => $this -> adminMainMenu($request)
  1121.                 )
  1122.                 );
  1123.     
  1124.     }      
  1125.     public function saveListXML(Request $request$listId)
  1126.     { 
  1127.         /* we load session data */
  1128.         parent::init($request);
  1129.         $session $request->getSession();
  1130.     
  1131.         /* we load users entity manager */
  1132.         $dem $this->doctrine->getManager('dynamic_em');
  1133.     
  1134.         $userId $session->get('user')->getUserId();
  1135.         //print('<br>user id: '.$userId);
  1136.         //die('<br>qqw 22 user id: ');          
  1137.     
  1138.         $list $dem->getRepository(CustomList::class)->getCustomList($listId);
  1139.         $listItems $dem->getRepository(CustomListItem::class)->getCustomListItems($listId);
  1140.         if(!$this->isUserFolder($request)) {
  1141.             $this->createUserFolder($request);
  1142.         }
  1143.         /* we get file name and paths */
  1144.         $userDirs $this->getUserFolderPaths($request);
  1145.         if(!empty($list->getXmlFile())) {
  1146.             $fileName $list->getXmlFile();
  1147.         } else {
  1148.             $fileName "list_".$listId.".xml";
  1149.         }
  1150.         /*
  1151.         print('<br>QQW list ID: '.$listId);
  1152.         \Doctrine\Common\Util\Debug::dump($list);
  1153.         */
  1154.         $xmlDocument = new \DOMDocument('1.0''UTF-8');
  1155.         $style 
  1156.             list { display: block; padding-left: 10px; }
  1157.             listItem {
  1158.                 display: block; 
  1159.             }
  1160.             listItem:hover {
  1161.                 display: block;
  1162.                 background-color: #EFEFEF;  
  1163.             }
  1164.             .listItemTitle {
  1165.                 display: inline-block;
  1166.                 /* width: 300px; */
  1167.                 width: 45%;
  1168.                 height: 22px;
  1169.                 padding: 1px;
  1170.                 border: #DDD solid 1px; 
  1171.                 background-color: #EFEFEF;
  1172.             }
  1173.             listItemShortDescription {
  1174.                 display: inline-block;
  1175.                 /* width: 300px; */
  1176.                 width: 45%;
  1177.                 height: 22px;   
  1178.                 padding: 1px;
  1179.                 border: #DDD solid 1px; 
  1180.                 /*  background-color: #EFEFEF;  */
  1181.             }
  1182.             listTitle {
  1183.              font-family : Arial, Helvetica, sans-serif;
  1184.              display: block;
  1185.              font-size : 22px; 
  1186.              font-weight : bold;
  1187.              padding-top: 5px;
  1188.              padding-bottom: 5px; 
  1189.              height: 22px;
  1190.             }
  1191.             listItemAttribute1 {
  1192.              font-family : Arial, Helvetica, sans-serif;
  1193.              display: block;
  1194.              font-size : 22px; 
  1195.              font-weight : bold;
  1196.              padding-top: 5px;
  1197.              padding-bottom: 5px; 
  1198.              height: 22px;
  1199.             }    
  1200.             
  1201.             listItemAttribute2 {
  1202.              font-family : Arial, Helvetica, sans-serif;
  1203.              display: block;
  1204.              font-size : 22px; 
  1205.              font-weight : bold;
  1206.              padding-top: 5px;
  1207.              padding-bottom: 5px; 
  1208.              height: 22px;
  1209.             }                      
  1210.         ";
  1211.         $css $xmlDocument->createProcessingInstruction("xml-stylesheet""type=\"text/css\" href=\"https://www.vrcommerce.cz/css/list1.css\"");
  1212.         //$css = $xmlDocument->createProcessingInstruction("xml-stylesheet", "type=\"text/css\" href=\"#style\"");
  1213.         $xmlDocument->appendChild($css); 
  1214.         $rootElement $xmlDocument->createElement('list');
  1215.         $titleTag $xmlDocument->createElement('listTitle'$list->getListName());
  1216.         //$titleTag->setAttribute("class", "listTitle");
  1217.         //$titleTag->setAttribute("style", "background-color: #EFEFEF;");
  1218.         $rootElement->appendChild($titleTag);
  1219.         //$styleTag = $xmlDocument->createElement('style', $style);
  1220.         //$styleTag->setAttribute("type", "text/css");
  1221.         //$styleTag->setAttribute("id", "style");
  1222.         //<style type = "text/css">
  1223.         //$rootElement->appendChild($styleTag);
  1224.         $listItemsTag $xmlDocument->createElement('listItems');
  1225.         foreach($listItems as $listItem) {
  1226.             $listItemsTag $xmlDocument->createElement('listItem');
  1227.             $listItemsTitleTag $xmlDocument->createElement('listItemTitle'$listItem->getListItemName()); 
  1228.             $listItemsShortDescriptionTag $xmlDocument->createElement('listItemShortDescription'$listItem->getListItemShortDescription()); 
  1229.             $listItemsTag->appendChild($listItemsTitleTag);
  1230.             $listItemsTag->appendChild($listItemsShortDescriptionTag);
  1231.             $listItemsLongDescriptionTag $xmlDocument->createElement('listItemLongDescription');
  1232.             $listItemsLongDescriptionTag->appendChild($xmlDocument->createCDATASection(html_entity_decode(strip_tags($listItem->getListItemLongDescription()))));
  1233.             $listItemsTag->appendChild($listItemsLongDescriptionTag);  
  1234.             $listItemsAttribute1Tag $xmlDocument->createElement('listItemAttribute1'$listItem->getFreeProperty1()); 
  1235.             $listItemsAttribute2Tag $xmlDocument->createElement('listItemAttribute2'$listItem->getFreeProperty2()); 
  1236.             $listItemsTag->appendChild($listItemsAttribute1Tag);  
  1237.             $listItemsTag->appendChild($listItemsAttribute2Tag);  
  1238.             $rootElement->appendChild($listItemsTag); 
  1239.         }
  1240.         $xmlDocument->appendChild($rootElement);
  1241.         $xmlDocument->saveXML();
  1242.         $xmlDocument->save($userDirs['user'].'/'.$fileName);
  1243.         $list->setXmlFile($fileName);
  1244.         $dem->persist($list);
  1245.         $dem->flush();
  1246.         /*
  1247.         $response = new Response($xmlDocument->saveXML());
  1248.         $response->headers->set('Content-Type', 'xml');
  1249.         */
  1250.         
  1251.         //return $response;
  1252.     
  1253.         /* we render data */
  1254.         /*
  1255.         return $this->render('listXML.html.php',
  1256.                 array(  'headerData' => $this -> getPageHeader($request),
  1257.                         'list' => $list,
  1258.                         'listItems' => $listItems,
  1259.                 )
  1260.                 );
  1261.         */
  1262.     
  1263.     }          
  1264.     /**
  1265.      * @Route("/listitemedit/{listItemId}", name="listItemEdit")
  1266.      */
  1267.     public function listItemEditAction(Request $request$listItemId)
  1268.     {
  1269.         /* we load session data */
  1270.         parent::init($request);
  1271.         $session $request->getSession();
  1272.         // we check if any user is logged in
  1273.         if(!$this->isLoggedUser($request)) {
  1274.             return $this->redirectToRoute('login');
  1275.         }   
  1276.     
  1277.         /* we load users entity manager */
  1278.         $em $this->doctrine->getManager();
  1279.         $dem $this->doctrine->getManager('dynamic_em');
  1280.     
  1281.         $userId $session->get('user')->getUserId();
  1282.         $user $em->getRepository(User::class)->getUser($userId);
  1283.     
  1284.         $listItem $dem->getRepository(CustomListItem::class)->getCustomListItem($listItemId);
  1285.         $list $dem->getRepository(CustomList::class)->getCustomList($listItem->getListId());
  1286.         /*
  1287.         print('<br>QQW list ID: '.$listId);
  1288.         \Doctrine\Common\Util\Debug::dump($list);
  1289.         */
  1290.         /* we build edit form */
  1291.         $formBuilder $this->createFormBuilder($listItem);
  1292.     
  1293.         $formBuilder->add('listItemName'TextType::class, array(
  1294.                 'required' => false,
  1295.                 'label' => $this->translator->trans('knowledgebase.list_item_name'),
  1296.                 'attr' => array('class' => 'text_form''size' => 35'value' => $listItem->getListItemName()),
  1297.                 'label_attr' => array('class' => 'form_field_label')
  1298.         ));
  1299.         $formBuilder->add('listItemShortDescription'TextareaType::class, array(
  1300.                 'required' => false,
  1301.                 'label' => $this->translator->trans('knowledgebase.list_item_short_description'),
  1302.                 'attr' => array('class' => 'textarea_form''cols' => 55'rows' => 4'value' => $listItem->getListItemShortDescription()),
  1303.                 'label_attr' => array('class' => 'form_textarea_label'),
  1304.                 'data' => $listItem->getListItemShortDescription(),
  1305.         ));      
  1306.         $formBuilder->add('clickURL'TextType::class, array(
  1307.                 'required' => false,
  1308.                 'label' => $this->translator->trans('system.link_url'),
  1309.                 'attr' => array('class' => 'text_form''size' => 53'value' => $listItem->getClickURL()),
  1310.                 'label_attr' => array('class' => 'form_field_label')
  1311.         ));         
  1312.         $formBuilder->add('listItemLongDescription'TextareaType::class, array(
  1313.                 'required' => false,
  1314.                 'label' => $this->translator->trans('knowledgebase.list_item_long_description'),
  1315.                 'attr' => array('class' => 'textarea_form''cols' => 101'rows' => 5'value' => $listItem->getListItemLongDescription()),
  1316.                 'label_attr' => array('class' => 'form_textarea_label'),
  1317.                 'data' => $listItem->getListItemLongDescription(),
  1318.         )); 
  1319.         $formBuilder->add('freeProperty1'TextType::class, array(
  1320.                 'required' => false,
  1321.                 'label' => $this->translator->trans('knowledgebase.list_item_free_property1'),
  1322.                 'attr' => array('class' => 'text_form''size' => 53'value' => $listItem->getFreeProperty1()),
  1323.                 'label_attr' => array('class' => 'form_field_label')
  1324.         ));      
  1325.         $formBuilder->add('freeProperty2'TextType::class, array(
  1326.                 'required' => false,
  1327.                 'label' => $this->translator->trans('knowledgebase.list_item_free_property2'),
  1328.                 'attr' => array('class' => 'text_form''size' => 53'value' => $listItem->getFreeProperty2()),
  1329.                 'label_attr' => array('class' => 'form_field_label')
  1330.         ));               
  1331.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  1332.                 'attr' => array('class' => 'butt_big')));
  1333.         $form $formBuilder->getForm();
  1334.         $form->handleRequest($request);
  1335.     
  1336.         if ($request->getMethod() == 'POST') {
  1337.             if ($form->isValid()) {
  1338.                 // perform some action, such as save the object to the database
  1339.                 //print('<br>qqw post form 2: ');
  1340.                 $formData $form->getData();
  1341.     
  1342.                 /* we load data from form into contact object */
  1343.                 $listItem->setListItemName($formData->getListItemName());
  1344.                 $listItem->setListItemShortDescription($formData->getListItemShortDescription());
  1345.                 $listItem->setListItemLongDescription($formData->getListItemLongDescription());
  1346.                 $listItem->setClickURL($formData->getClickURL());
  1347.                 $listItem->setFreeProperty1($formData->getFreeProperty1());
  1348.                 $listItem->setFreeProperty2($formData->getFreeProperty2());
  1349.                 /* we persist and save */
  1350.                 //$em->persist($contact);
  1351.                 $dem->flush();
  1352.     
  1353.                 $this->addFlash('notice''List item was updated.');
  1354.     
  1355.                 return $this->redirectToRoute('listEdit', array('listId' => $listItem->getListId()));
  1356.     
  1357.             }
  1358.     
  1359.         }
  1360.     
  1361.         /* we render data */
  1362.         return $this->render('listItemEdit.html.twig',
  1363.                 array(  'headerData' => $this -> getPageHeader($request),
  1364.                         'form' => $formBuilder->getForm()->createView(),
  1365.                         'list' => $list,
  1366.                         'listItem' => $listItem,
  1367.                         'menu' => $this -> adminMenu($request),
  1368.                         'user' => $user,
  1369.                         'mainMenu' => $this -> adminMainMenu($request)
  1370.                 )
  1371.                 );
  1372.     
  1373.     }    
  1374.     /**
  1375.      * @Route("/tradeLead", name="tradeLead")
  1376.      */
  1377.     public function tradeLeadAction(Request $request)
  1378.     {
  1379.     
  1380.         /* we load session data */
  1381.         parent::init($request);
  1382.         $session $request->getSession();
  1383.     
  1384.         /* we load users entity manager */
  1385.         $em $this->doctrine->getManager();
  1386.         $dem $this->doctrine->getManager('dynamic_em');
  1387.         $userId $session->get('user')->getUserId();
  1388.         $user $em->getRepository(User::class)->getUser($userId);
  1389.         /* removing tradelead */
  1390.         if(!empty($request->query->get('removeLead'))) {   
  1391.             try {
  1392.                 $tradeLead $dem->getRepository(TradeLead::class)->removeTradeLead($request->query->get('removeLead'));
  1393.                 $this->addFlash('notice''Trade Lead was removed.');
  1394.             } catch(\Doctrine\DBAL\DBALException $e) {
  1395.                 $this->addFlash('error'"This Trade Lead has connected services (orders etc.), so it can't be removed.");
  1396.             }
  1397.             
  1398.         }         
  1399.         /* import tradelead */
  1400.         if(!empty($request->query->get('importLeads'))) {   
  1401.             print('<br>qqw import leads');
  1402.             ini_set('max_execution_time'1800); 
  1403.             set_time_limit(1800);
  1404.             $mem $this->doctrine->getManager('marketplace_em');
  1405.             $marketplaceConn $mem->getConnection('marketplace_conn');
  1406.             $sql "SELECT * FROM eshops e INNER JOIN eshops_description ed ON e.id_shop = ed.id_shop AND ed.title != ''";
  1407.             $stmt $marketplaceConn->prepare($sql);
  1408.             $stmt->execute();
  1409.             $result $stmt->fetchAll();
  1410.             foreach($result as $row) {
  1411.                 print('<hr>row: ');
  1412.                 \Doctrine\Common\Util\Debug::dump($row);
  1413.                 $tradeLead $dem->getRepository(TradeLead::class)->findOneBy(array('externalId' => $row['id_shop']));
  1414.                 if(empty($tradeLead)) {
  1415.                     $tradeLead = new TradeLead;
  1416.                 }
  1417.                 $tradeLead->setTitle($row['title']);
  1418.                 $tradeLead->setDescription($row['description']);
  1419.                 $tradeLead->setNotes($row['notes']);
  1420.                 $tradeLead->setEmail($row['email']);  
  1421.                 $tradeLead->setStatus($row['status']);              
  1422.                 $tradeLead->setContactPersonEmail($row['email_director']);   
  1423.                 $tradeLead->setLinkUrl($row['url']);  
  1424.                 $tradeLead->setExternalId($row['id_shop']);  
  1425.                 print('<br>tradeLead: ');
  1426.                 \Doctrine\Common\Util\Debug::dump($tradeLead);
  1427.    
  1428.                 /* we persist and save */
  1429.                 $dem->persist($tradeLead);
  1430.                 $dem->flush();
  1431.             }
  1432.             
  1433.         } 
  1434.     
  1435.         $tradeLeadList $dem->getRepository(TradeLead::class)->findAll();
  1436.         /* we render data */
  1437.         return $this->render('tradeLeads.html.twig',
  1438.                 array(  'headerData' => $this -> getPageHeader($request),
  1439.                         'tradeLeadList' => $tradeLeadList,
  1440.                         'menu' => $this -> adminMenu($request),
  1441.                         'user' => $user,
  1442.                         'mainMenu' => $this -> adminMainMenu($request)
  1443.                 )
  1444.                 );
  1445.     
  1446.     }    
  1447.     /**
  1448.      * @Route("/tradeLeadExec", name="tradeLeadExec")
  1449.      */
  1450.     public function tradeLeadExecAction(Request $request)
  1451.     {
  1452.     
  1453.         /* we load session data */
  1454.         parent::init($request);
  1455.         $session $request->getSession();
  1456.     
  1457.         /* we load users entity manager */
  1458.         $em $this->doctrine->getManager();
  1459.         $dem $this->doctrine->getManager('dynamic_em');
  1460.         /* we get user */ 
  1461.         $userId $session->get('user')->getUserId();
  1462.         $user $em->getRepository(User::class)->getUser($userId);
  1463.         $userDirs $this->getUserFolderPaths($request);
  1464.         $selectedTradeLeads = array();
  1465.         if(!empty($request->request->get('selectedTradeLeads'))) {
  1466.             //print(' tradeleads POSTED');
  1467.             $selectedTradeLeads $request->request->get('selectedTradeLeads');
  1468.             $leadList json_encode($selectedTradeLeads);
  1469.             //\Doctrine\Common\Util\Debug::dump($request->request->get('selectedTradeLeads'));
  1470.         }
  1471.         if(!empty($request->request->get('form')['leadList'])) {
  1472.             $leadList $request->request->get('form')['leadList'];
  1473.         }
  1474.         $emailSubject '';
  1475.         if(!empty($request->request->get('form')['emailSubject'])) {
  1476.             $emailSubject $request->request->get('form')['emailSubject'];
  1477.         }
  1478.         $emailBodyHtml '';
  1479.         if(!empty($request->request->get('form')['emailBodyHtml'])) {
  1480.             $emailBodyHtml $request->request->get('form')['emailBodyHtml'];
  1481.         }       
  1482.         //Doctrine\Common\Util\Debug::dump($request->request->get('selectedTradeLeads'));
  1483.         //$tradeLeadList = $dem->getRepository(TradeLead::class)->findAll();
  1484.         
  1485.        
  1486.         /* we build edit form */
  1487.         $formBuilder $this->createFormBuilder();
  1488.         $formBuilder->add('emailSubject'TextType::class, array(
  1489.                 'required' => false,
  1490.                 'label' => 'email subject',
  1491.                 'attr' => array('class' => 'text_form''size' => 70'value' => $emailSubject),
  1492.                 'label_attr' => array('class' => 'form_field_label'),
  1493.         ));         
  1494.        
  1495.          $formBuilder->add('emailBodyHtml'CKEditorType::class, array(
  1496.                 'required' => false,
  1497.                 'label' => 'html email',
  1498.                 'attr' => array('class' => 'text_form''size' => 35'value' => $emailBodyHtml),
  1499.                 'label_attr' => array('class' => 'form_field_label'),
  1500.                 'data' => $emailBodyHtml,
  1501.         )); 
  1502.         $formBuilder->add('leadList'HiddenType::class, array(
  1503.                 'data' => $leadList,
  1504.         ));         
  1505.         $formBuilder->add('save'SubmitType::class, array('label' => 'Execute Action',
  1506.                 'attr' => array('class' => 'butt_big')));
  1507.          
  1508.         $form $formBuilder->getForm();
  1509.          
  1510.         $form->handleRequest($request);
  1511.          
  1512.         if ($request->getMethod() == 'POST') {
  1513.              
  1514.             //$form->bindRequest($request);
  1515.              
  1516.             if ($form->isValid()) {
  1517.                 // perform some action, such as save the object to the database
  1518.                 //print('<br>tradeleads ids json: ');
  1519.                 //print_r($request->request->get('form')['selectedTradeLeads']);
  1520.                 $leadIdList json_decode($request->request->get('form')['leadList']);
  1521.                 foreach($leadIdList as $leadId) {
  1522.                     
  1523.                     $tradeLead $dem->getRepository(TradeLead::class)->findOneBy(array('tradeLeadId' => $leadId));
  1524.                     print('<hr>executing on lead: '.$tradeLead->getTitle().' , id: '.$leadId);
  1525.                     //Doctrine\Common\Util\Debug::dump($tradeLead);
  1526.                     //print_r($tradeLead);
  1527.                     $now = new \DateTime();
  1528.                     $nowDate $now->format('Y-m-d H:i:s'); 
  1529.                     if(!empty($tradeLead->getEmail())) {
  1530.                         $to $tradeLead->getEmail();
  1531.                         $subject $emailSubject;
  1532.                         $message $emailBodyHtml;
  1533.                         $name $user->getCompany();
  1534.                         $from $user->getEmail();
  1535.                         $headers  "MIME-Version: 1.0\r\n";
  1536.                         $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  1537.                         $headers .= "From: {$name} <{$from}>\r\n";
  1538.                         $headers .= "Reply-To: <{$from}>\r\n";
  1539.                         $headers .= "Subject: {$subject}\r\n";
  1540.                         $headers .= "X-Mailer: PHP/".phpversion()."\r\n";
  1541.                         
  1542.                         /* we send email to e-shop admin */
  1543.                         if(@mail($to$subject$message$headers)) {
  1544.                             $message '['.$nowDate.'] Email `'.$emailSubject.'` was sent to: '.$to;
  1545.                             print('<br>'.$message);
  1546.                             $tradeLead->setNotes($tradeLead->getNotes()."\n".$message);
  1547.                         } else {
  1548.                             print('<br>Email was not sent to: '.$to);
  1549.                         }   
  1550.                     }
  1551.                     if(!empty($tradeLead->getContactPersonEmail())) {
  1552.                         $to $tradeLead->getContactPersonEmail();
  1553.                         $subject $emailSubject;
  1554.                         $message $emailBodyHtml;
  1555.                         $name $user->getCompany();
  1556.                         $from $user->getEmail();
  1557.                         $headers  "MIME-Version: 1.0\r\n";
  1558.                         $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  1559.                         $headers .= "From: {$name} <{$from}>\r\n";
  1560.                         $headers .= "Reply-To: <{$from}>\r\n";
  1561.                         $headers .= "Subject: {$subject}\r\n";
  1562.                         $headers .= "X-Mailer: PHP/".phpversion()."\r\n";
  1563.                         
  1564.                         /* we send email to e-shop admin */
  1565.                         if(@mail($to$subject$message$headers)) {
  1566.                             $message '['.$nowDate.'] Email `'.$emailSubject.'` was sent to: '.$to;
  1567.                             print('<br>'.$message);
  1568.                             $tradeLead->setNotes($tradeLead->getNotes()."\n".$message);
  1569.                         } else {
  1570.                             print('<br>Email was not sent to: '.$to); 
  1571.                         }   
  1572.                     }  
  1573.                     $dem->persist($tradeLead);
  1574.                     $dem->flush();                  
  1575.                 }
  1576.                 //Doctrine\Common\Util\Debug::dump($request->request->get('form')['emailSubject']);
  1577.                 $this->addFlash('notice''Trade Lead Action was executed.');
  1578.                  
  1579.             }
  1580.              
  1581.         }        
  1582.         /* we render data */
  1583.         return $this->render('tradeLeadExec.html.php',
  1584.                 array(  'headerData' => $this -> getPageHeader($request),
  1585.                         'form' => $formBuilder->getForm()->createView(),
  1586.                         'selectedTradeLeads' => $selectedTradeLeads,
  1587.                         'leadList' => $leadList,                        
  1588.                         'menu' => $this -> adminMenu($request),
  1589.                         'mainMenu' => $this -> adminMainMenu($request)
  1590.                 )
  1591.                 );
  1592.     
  1593.     }        
  1594.     /**
  1595.      * @Route("/tradeleadedit/{tradeLeadId}", name="tradeLeadEdit")
  1596.      */
  1597.     public function tradeLeadEditAction(Request $request$tradeLeadId)
  1598.     {
  1599.         /* we load session data */
  1600.         parent::init($request);
  1601.         $session $request->getSession();
  1602.     
  1603.         /* we load entity managers */
  1604.         $em $this->doctrine->getManager();
  1605.         $dem $this->doctrine->getManager('dynamic_em');
  1606.     
  1607.         $userId $session->get('user')->getUserId();
  1608.         $user $em->getRepository(User::class)->getUser($userId);
  1609.     
  1610.         $tradeLead $dem->getRepository(TradeLead::class)->findOneBy(array('tradeLeadId' => $tradeLeadId));
  1611.         /* we build edit form */ 
  1612.         $formBuilder $this->createFormBuilder($tradeLead);
  1613.     
  1614.         $formBuilder->add('title'TextType::class, array(
  1615.                 'required' => false,
  1616.                 'label' => $this->translator->trans('marketplace.trade_lead_title'),
  1617.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getTitle()),
  1618.                 'label_attr' => array('class' => 'form_field_label')
  1619.         ));
  1620.         
  1621.         $formBuilder->add('company'TextType::class, array(
  1622.                 'required' => false,
  1623.                 //'label' => $this->translator->trans('knowledgebase.middle_name'),
  1624.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getCompany()),
  1625.                 'label_attr' => array('class' => 'form_field_label')
  1626.         ));     
  1627.         
  1628.         $formBuilder->add('email'TextType::class, array(
  1629.                 'required' => false,
  1630.                 //'label' => $this->translator->trans('knowledgebase.last_name'),
  1631.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getEmail()),
  1632.                 'label_attr' => array('class' => 'form_field_label')
  1633.         ));  
  1634.         $formBuilder->add('linkUrl'TextType::class, array(
  1635.                 'required' => false,
  1636.                 //'label' => $this->translator->trans('knowledgebase.middle_name'),
  1637.                 'attr' => array('class' => 'text_form''size' => 91'value' => $tradeLead->getLinkUrl()),
  1638.                 'label_attr' => array('class' => 'form_field_label')
  1639.         ));            
  1640.         $formBuilder->add('description'TextareaType::class, array(
  1641.                 'required' => false,
  1642.                 //'label' => $this->translator->trans('knowledgebase.list_item_short_description'),
  1643.                 'attr' => array('class' => 'textarea_form''cols' => 90'rows' => 10'value' => $tradeLead->getDescription()),
  1644.                 'label_attr' => array('class' => 'form_textarea_label'),
  1645.                 'data' => $tradeLead->getDescription(),
  1646.         ));  
  1647.         $formBuilder->add('notes'TextareaType::class, array(
  1648.                 'required' => false,
  1649.                 //'label' => $this->translator->trans('knowledgebase.list_item_short_description'),
  1650.                 'attr' => array('class' => 'textarea_form''cols' => 90'rows' => 10'value' => $tradeLead->getNotes()),
  1651.                 'label_attr' => array('class' => 'form_textarea_label'),
  1652.                 'data' => $tradeLead->getNotes(),
  1653.         ));  
  1654.         $formBuilder->add('contactPerson'TextType::class, array(
  1655.                 'required' => false,
  1656.                 //'label' => $this->translator->trans('knowledgebase.company_name'),
  1657.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getContactPerson()),
  1658.                 'label_attr' => array('class' => 'form_field_label')
  1659.         ));         
  1660.         $formBuilder->add('contactPersonEmail'TextType::class, array(
  1661.                 'required' => false,
  1662.                 //'label' => $this->translator->trans('knowledgebase.email'),
  1663.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getContactPersonEmail()),
  1664.                 'label_attr' => array('class' => 'form_field_label')
  1665.         ));           
  1666.         $formBuilder->add('telephone'TextType::class, array(
  1667.                 'required' => false,
  1668.                 //'label' => $this->translator->trans('knowledgebase.email'),
  1669.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getTelephone()),
  1670.                 'label_attr' => array('class' => 'form_field_label')
  1671.         ));         
  1672.         $formBuilder->add('address'TextType::class, array(
  1673.                 'required' => false,
  1674.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1675.                 'attr' => array('class' => 'text_form''size' => 91'value' => $tradeLead->getAddress()),
  1676.                 'label_attr' => array('class' => 'form_field_label')
  1677.         ));   
  1678.         $formBuilder->add('invoiceAddress'TextType::class, array(
  1679.                 'required' => false,
  1680.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1681.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getInvoiceAddress()),
  1682.                 'label_attr' => array('class' => 'form_field_label')
  1683.         ));  
  1684.         $formBuilder->add('responsibleAdminUserId'TextType::class, array(
  1685.                 'required' => false,
  1686.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1687.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getResponsibleAdminUserId()),
  1688.                 'label_attr' => array('class' => 'form_field_label')
  1689.         ));  
  1690.         $formBuilder->add('dateResponsibilityGiven'TextType::class, array(
  1691.                 'required' => false,
  1692.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1693.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getDateResponsibilityGiven()),
  1694.                 'label_attr' => array('class' => 'form_field_label')
  1695.         ));  
  1696.         $formBuilder->add('status'TextType::class, array(
  1697.                 'required' => false,
  1698.                 //label' => $this->translator->trans('knowledgebase.phone'),
  1699.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getStatus()),
  1700.                 'label_attr' => array('class' => 'form_field_label')
  1701.         ));  
  1702.         $formBuilder->add('serverId'TextType::class, array(
  1703.                 'required' => false,
  1704.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1705.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getServerId()),
  1706.                 'label_attr' => array('class' => 'form_field_label')
  1707.         ));  
  1708.         $formBuilder->add('areaId'TextType::class, array(
  1709.                 'required' => false,
  1710.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1711.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getAreaId()),
  1712.                 'label_attr' => array('class' => 'form_field_label')
  1713.         ));  
  1714.         $formBuilder->add('preferredSectionId'TextType::class, array(
  1715.                 'required' => false,
  1716.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1717.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getPreferredSectionId()),
  1718.                 'label_attr' => array('class' => 'form_field_label')
  1719.         ));  
  1720.         $formBuilder->add('preferredSectionId2'TextType::class, array(
  1721.                 'required' => false,
  1722.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1723.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getPreferredSectionId2()),
  1724.                 'label_attr' => array('class' => 'form_field_label')
  1725.         ));  
  1726.         $formBuilder->add('avatarUrl'TextType::class, array(
  1727.                 'required' => false,
  1728.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1729.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getAvatarUrl()),
  1730.                 'label_attr' => array('class' => 'form_field_label')
  1731.         ));  
  1732.         $formBuilder->add('logoUrl'TextType::class, array(
  1733.                 'required' => false,
  1734.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1735.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getLogoUrl()),
  1736.                 'label_attr' => array('class' => 'form_field_label')
  1737.         ));  
  1738.         $formBuilder->add('bankAccount'TextType::class, array(
  1739.                 'required' => false,
  1740.                 //'label' => $this->translator->trans('knowledgebase.phone'),
  1741.                 'attr' => array('class' => 'text_form''size' => 35'value' => $tradeLead->getBankAccount()),
  1742.                 'label_attr' => array('class' => 'form_field_label')
  1743.         ));                                                                          
  1744.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  1745.                 'attr' => array('class' => 'butt_big')));
  1746.     
  1747.         $form $formBuilder->getForm();
  1748.         $form->handleRequest($request);
  1749.     
  1750.         if ($request->getMethod() == 'POST') {
  1751.             if ($form->isValid()) {
  1752.                 $formData $form->getData();
  1753.     
  1754.                 /* we load data from form into TradeLead object */
  1755.                 $tradeLead->setTitle($formData->getTitle());
  1756.                 $tradeLead->setCompany($formData->getCompany());
  1757.                 $tradeLead->setEmail($formData->getEmail());
  1758.                 $tradeLead->setLinkUrl($formData->getLinkUrl());
  1759.                 $tradeLead->setContactPerson($formData->getContactPerson());
  1760.                 $tradeLead->setContactPersonEmail($formData->getContactPerson());
  1761.                 $tradeLead->setTelephone($formData->getTelephone());
  1762.                 $tradeLead->setNotes($formData->getNotes());
  1763.                 $tradeLead->setDescription($formData->getDescription());
  1764.                 $tradeLead->setAddress($formData->getAddress());
  1765.                 $tradeLead->setInvoiceAddress($formData->getInvoiceAddress());
  1766.                 $tradeLead->setResponsibleAdminUserId($formData->getResponsibleAdminUserId());
  1767.                 //$tradeLead->setDateResponsibilityGiven($request->request->get('form')['dateResponsibilityGiven']);                
  1768.                 $tradeLead->setStatus($formData->getStatus());
  1769.                 $tradeLead->setServerId($formData->getServerId());
  1770.                 $tradeLead->setAreaId($formData->getAreaId());
  1771.                 $tradeLead->setPreferredSectionId($formData->getPreferredSectionId());
  1772.                 $tradeLead->setPreferredSectionId2($formData->getPreferredSectionId2());
  1773.                 $tradeLead->setAvatarUrl($formData->getAvatarUrl());
  1774.                 $tradeLead->setLogoUrl($formData->getLogoUrl());
  1775.                 $tradeLead->setBankAccount($formData->getBankAccount());
  1776.                 /* we persist and save */
  1777.                 $dem->persist($tradeLead);
  1778.                 $dem->flush();
  1779.     
  1780.                 $this->addFlash('notice''Trade Lead was updated.');
  1781.     
  1782.                 return $this->redirectToRoute('tradeLeadEdit', array('tradeLeadId' => $tradeLead->getTradeLeadId()));
  1783.     
  1784.             }
  1785.     
  1786.         }
  1787.     
  1788.         /* we render data */
  1789.         return $this->render('tradeLeadEdit.html.twig',
  1790.                 array(  'headerData' => $this -> getPageHeader($request),
  1791.                         'form' => $formBuilder->getForm()->createView(),
  1792.                         'tradeLead' => $tradeLead,
  1793.                         'menu' => $this -> adminMenu($request),
  1794.                         'mainMenu' => $this -> adminMainMenu($request),
  1795.                         'user' => $user
  1796.                 )
  1797.                 );
  1798.     
  1799.     }   
  1800.     /**
  1801.      * @Route("/tradeLeadNew", name="tradeLeadNew")
  1802.      */
  1803.     public function tradeLeadNewAction(Request $request)
  1804.     {
  1805.         /* we load session data */
  1806.         parent::init($request);
  1807.     
  1808.         $session $request->getSession();
  1809.         /* we load users entity manager */
  1810.         $em $this->doctrine->getManager();
  1811.         $dem $this->doctrine->getManager('dynamic_em');
  1812.         $userId $session->get('user')->getUserId();
  1813.         $user $em->getRepository(User::class)->getUser($userId);
  1814.     
  1815.         /* we build login form */
  1816.         $tradeLead = new TradeLead();
  1817.         $formBuilder $this->createFormBuilder($tradeLead);
  1818.     
  1819.         $formBuilder->add('title'TextType::class, array(
  1820.                 'required' => true,
  1821.                 'label' => $this->translator->trans('marketplace.trade_lead_title'),
  1822.                 'attr' => array('class' => 'text_form''size' => 22),
  1823.                 'label_attr' => array('class' => 'form_field_label'),
  1824.         ));
  1825.         
  1826.         $formBuilder->add('save'SubmitType::class, array('label' => $this->translator->trans('form.button.save'),
  1827.                 'attr' => array('class' => 'butt_big')));
  1828.     
  1829.         $form $formBuilder->getForm();
  1830.         $form->handleRequest($request);
  1831.     
  1832.         if ($request->getMethod() == 'POST') {
  1833.     
  1834.             if ($form->isValid()) {
  1835.                 // perform some action, such as save the object to the database
  1836.     
  1837.                 /* we load users entity manager */
  1838.                 $dem $this->doctrine->getManager('dynamic_em');
  1839.                 $formData $form->getData();
  1840.                 $tradeLead->setTitle($formData->getTitle());
  1841.                 /* we persist and save */
  1842.                 $dem->persist($tradeLead);
  1843.                 $dem->flush();
  1844.     
  1845.                 $this->addFlash('notice''New Trade lead was created.');
  1846.                  
  1847.                 return $this->redirectToRoute('tradeLeadEdit', array('tradeLeadId' => $tradeLead->getTradeLeadId()));
  1848.     
  1849.             }
  1850.              
  1851.         }
  1852.     
  1853.         /* we render data */
  1854.         return $this->render('tradeLeadNew.html.twig',
  1855.                 array(  'form' => $formBuilder->getForm()->createView(),
  1856.                         'headerData' => $this -> getPageHeader($request),
  1857.                         'menu' => $this -> adminMenu($request),
  1858.                         'mainMenu' => $this -> adminMainMenu($request),
  1859.                         'user' => $user
  1860.                 )
  1861.                 );
  1862.     
  1863.     }
  1864.     
  1865.     public function adminMenu(Request $request)
  1866.     {
  1867.         $menuItems = array(
  1868.           => array('link' => 'knowledgebaseAdmin''langKey' => 'knowledgebase.admin''routeName' => 'knowledgebaseAdmin'),
  1869.           => array('link' => 'contacts''langKey' => 'knowledgebase.contacts''routeName' => 'contacts'),
  1870.           => array('link' => 'contactnew''langKey' => 'knowledgebase.new_contact''routeName' => 'contactNew'),
  1871.           => array('link' => 'tasks''langKey' => 'knowledgebase.tasks''routeName' => 'tasks'),
  1872.           => array('link' => 'tasknew''langKey' => 'knowledgebase.new_task''routeName' => 'taskNew'),                
  1873.           => array('link' => 'lists''langKey' => 'knowledgebase.lists''routeName' => 'lists'),
  1874.           => array('link' => 'listnew''langKey' => 'knowledgebase.new_list''routeName' => 'listNew'),
  1875.         );
  1876.         return $menuItems;
  1877.     }
  1878.     
  1879. }