src/Controller/PartnerController.php line 808

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Entity\Partner;
  5. use App\Entity\Wholesaler;
  6. use App\Entity\Partnerfiles;
  7. use App\Entity\Task;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Contracts\Translation\TranslatorInterface;
  13. use App\Form\Resources\PartnerSearch;
  14. use App\Form\Type\PartnerlevelbyvendorEditType;
  15. use App\Form\Type\PartnerEditType;
  16. use App\Form\Type\PartnerQuestionnaireEditType;
  17. use App\Service\RegisterEvent;
  18. use App\Service\ServiceCompanyLogo;
  19. use App\Service\TrafficTracker;
  20. use App\Service\Translation;
  21. use App\Service\ServiceNotification;
  22. use App\Command\ProcessPartnerFiles;
  23. use App\Entity\Currency;
  24. use DateTime;
  25. use Ramsey\Uuid\Uuid;
  26. use App\Entity\Partnerproducttype;
  27. use App\Entity\Partnervendorsinterested;
  28. use App\Entity\Partnercategoryinterested;
  29. use App\Entity\Vendors;
  30. use App\Service\CustomerCreator;
  31. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  32. use App\Entity\CompanyAddress;
  33. use App\Entity\Regions;
  34. use App\Entity\Countries;
  35. use Psr\Log\LoggerInterface;
  36. class PartnerController extends AbstractController
  37. {
  38.     private $customerCreator;
  39.     private $passwordHasher;
  40.     public function __construct(UserPasswordHasherInterface $passwordHasherCustomerCreator $customerCreator)
  41.     {
  42.         $this->passwordHasher $passwordHasher;
  43.         $this->customerCreator $customerCreator;
  44.     }
  45.     /**
  46.      * @Route("/partner/default/index", name="partner_index")
  47.      */
  48.     public function index(TranslatorInterface $translatorTranslation $translationRequest $requestTrafficTracker $trafficTracker): Response
  49.     {
  50.         $trafficTracker->registerTraffic();
  51.         $em $this->getDoctrine()->getManager();
  52.         $locale $request->getLocale();
  53.         $data = array();
  54.         $user $this->getUser();
  55.         $userRepository $this->getDoctrine()->getRepository(User::class);
  56.         $queryData $userRepository->MyComercialQuery($user);
  57.         $comercialUsers $queryData->getQuery()->execute();
  58.         $form $this->createForm(PartnerSearch::class, null, array(
  59.             'translator' => $translator,
  60.             'text' => $request->get('text'),
  61.             'idcommercialagent' => $request->get('idcommercialagent'),
  62.             'province' => $request->get('province'),
  63.             'comercial' => $comercialUsers,
  64.             'active' => $request->get('active'),
  65.         ));
  66.         $partnerRepository $this->getDoctrine()->getRepository(Partner::class);
  67.         $partnerQ $partnerRepository->MyPartnerQuery($user);
  68.         $partnerList $partnerQ->getQuery()->execute();
  69.         foreach ($partnerList as $partner) {
  70.             if ($partner->getIdcommercialagent() == NULL) {
  71.                 $commercialName $translator->trans('app.ManageUsers&Profiles.NoAgent');
  72.             } else {
  73.                 $iduser $partner->getIdcommercialagent();
  74.                 $wholesalerUser $em->createQuery('SELECT u'
  75.                     ' FROM App\Entity\User u'
  76.                     ' WHERE u.id = :userId')
  77.                     ->setParameter('userId'$iduser)
  78.                     ->getOneOrNullResult();
  79.                 $commercialName $wholesalerUser->getName() . ' ' $wholesalerUser->getSurname();
  80.             }
  81.             $partnerPrealta $em->createQuery('SELECT p'
  82.                 ' FROM App\Entity\Partnerprealta p'
  83.                 ' WHERE p.unregistrationdate IS NULL'
  84.                 ' AND p.partner = :partner')
  85.                 ->setParameter('partner'$partner)
  86.                 ->getOneOrNullResult();
  87.             if (!empty($partnerPrealta)) {
  88.                 $prealta true;
  89.             } else {
  90.                 $prealta false;
  91.             }
  92.             $region $em->createQuery('SELECT r'
  93.                 ' FROM App\Entity\Regions r'
  94.                 ' WHERE r.id = :id')
  95.                 ->setParameter('id'$partner->getRegion()->getId())
  96.                 ->getOneOrNullResult();
  97.             $data[] = array(
  98.                 'id' => $partner->getId(),
  99.                 'name' => $partner->getSocialReason(),
  100.                 'nameComercial' => $partner->getName(),
  101.                 'partnerLevel' => $partner->getkatyPartnerLevel(),
  102.                 'comercial' => $commercialName,
  103.                 'registrationDate' => $partner->getRegistrationdate(),
  104.                 'unregistrationDate' => $partner->getUnRegistrationdate(),
  105.                 'region' => $translation->getTranslationBy($region$locale'regionName'),
  106.                 'prealta' => $prealta,
  107.                 'katyAccess' => $partner->getKatyAccess(),
  108.                 'externalId' => $partner->getExternalId(),
  109.                 'creditLimit' => $partner->getFinancialRisk(),
  110.                 'cif' => $partner->getCif()
  111.             );
  112.         }
  113.         return $this->render('partner/index.html.twig', [
  114.             'data' => $data,
  115.             'form' => $form->createView(),
  116.         ]);
  117.     }
  118.     /**
  119.      * @Route("/partner/default/view/{id}", name="partner_view", requirements={"id"="\d+"})
  120.      */
  121.     public function view(TranslatorInterface $translatorTranslation $translationRequest $request$idTrafficTracker $trafficTracker): Response
  122.     {
  123.         $trafficTracker->registerTraffic();
  124.         $em $this->getDoctrine()->getManager();
  125.         $locale $request->getLocale();
  126.         $session $this->get('session');
  127.         $sector 'N/A';
  128.         $level_by_vendor = [];
  129.         $user $this->getUser();
  130.         /** @var CompanyAddress */
  131.         $companyAddressRepository $em->getRepository(CompanyAddress::class);
  132.         $partnerRepository $this->getDoctrine()->getRepository(Partner::class);
  133.         $partner $partnerRepository->MyPartnerQuery($user)
  134.             ->andWhere('p.id = :id')
  135.             ->setParameter('id'$id)
  136.             ->getQuery()->getOneOrNullResult();
  137.         if (is_null($partner)) {
  138.             $session->getFlashBag()->add('danger'$translator->trans('app.General.SystemMessages.NoResults'));
  139.             if ($user->getPartner()) {
  140.                 return $this->redirect($this->generateUrl('home'));
  141.             } else {
  142.                 return $this->redirect($this->generateUrl('partner_index'));
  143.             }
  144.         }
  145.         $users $em->createQuery('SELECT u'
  146.             ' FROM App\Entity\User u'
  147.             ' WHERE u.partner = :partner'
  148.             ' AND u.ghost = false')
  149.             ->setParameter('partner'$partner)
  150.             ->getResult();
  151.         $userList = [];
  152.         foreach ($users as $user) {
  153.             $userroles $em->createQuery('SELECT r'
  154.                 ' FROM App\Entity\Role r'
  155.                 ' WHERE r.internalRole in (:roles)')
  156.                 ->setParameter('roles'$user->getRoles())
  157.                 ->getResult();
  158.             $roles = array();
  159.             foreach ($userroles as $userR) {
  160.                 $roleName $translation->getTranslationBy($userR$locale'name');
  161.                 $roles[] = $roleName;
  162.             }
  163.             $userList[] = [
  164.                 'user' => $user,
  165.                 'roles' => $roles,
  166.             ];
  167.         }
  168.         if ($partner->getIdcommercialagent() == NULL) {
  169.             $commercialName "No asignado";
  170.         } else {
  171.             $iduser $partner->getIdCommercialAgent();
  172.             $user $em->createQuery('SELECT u'
  173.                 ' FROM App\Entity\User u'
  174.                 ' WHERE u.id = :userId')
  175.                 ->setParameter('userId'$iduser)
  176.                 ->getOneOrNullResult();
  177.             $commercialName $user->getName() . ' ' $user->getSurname();
  178.         }
  179.         //Agreements
  180.         $vendor_agreements $em->createQuery('SELECT a'
  181.             ' FROM App\Entity\Agreements a'
  182.             ' JOIN a.programm vp'
  183.             ' JOIN vp.vendor v'
  184.             ' WHERE a.partner = :partner'
  185.             ' ORDER BY v.name')
  186.             ->setParameter('partner'$partner)
  187.             ->getResult();
  188.         //Level by vendor        
  189.         $level_by_vendorQuery $em->createQuery('SELECT p'
  190.             ' FROM App\Entity\Partnerlevelbyvendor p'
  191.             ' JOIN p.vendor v'
  192.             ' WHERE v.followskatypartnerlevel = 0'
  193.             ' AND p.partner = :partner'
  194.             ' ORDER BY v.name')
  195.             ->setParameter('partner'$partner)
  196.             ->getResult();
  197.         $level_by_vendor = [];
  198.         foreach ($level_by_vendorQuery as $partnerLevel) {
  199.             $level $partnerLevel->getLevel();
  200.             $levelName $em->createQuery('SELECT v'
  201.                 ' FROM App\Entity\Vendorpartnerlevel v'
  202.                 ' WHERE v.vendor = :vendor'
  203.                 ' AND v.level = :level')
  204.                 ->setParameter('vendor'$partnerLevel->getVendor())
  205.                 ->setParameter('level'$partnerLevel->getLevel())
  206.                 ->getOneOrNullResult();
  207.             if (!empty($levelName)) {
  208.                 $level $levelName->getName();
  209.             }
  210.             $level_by_vendor[] = [
  211.                 'id' =>   $partnerLevel->getId(),
  212.                 'vendor' => $partnerLevel->getVendor()->getName(),
  213.                 'level' => $level
  214.             ];
  215.         }
  216.         if (is_null($partner->getExternalId())) {
  217.             $partner->setExternalId('N/A');
  218.         }
  219.         $country $em->createQuery('SELECT c'
  220.             ' FROM App\Entity\Countries c'
  221.             ' JOIN App\Entity\Regions r'
  222.             ' WITH c.id = r.country'
  223.             ' WHERE r.id = :id')
  224.             ->setParameter('id'$partner->getRegion()->getId())
  225.             ->getOneOrNullResult();
  226.         $companyAddresses $companyAddressRepository->MyCompanyAddressQuery($partner)->getQuery()->getResult();
  227.         return $this->render('partner/view.html.twig', [
  228.             'id' => $id,
  229.             'partner' => $partner,
  230.             'country' => $translation->getTranslationBy($country$locale'name'),
  231.             'sector' => $sector,
  232.             'commercial_agent' => $commercialName,
  233.             'vendor_agreements' => $vendor_agreements,
  234.             'level_by_vendor' => $level_by_vendor,
  235.             'datasales' => $this->SalesTotal($id),
  236.             'totalclient' => $this->TotalClient($id),
  237.             'totalsalesWidget' => $this->TotalSalesWidget($id),
  238.             'totalTicket' => $this->TotalTicket($id),
  239.             'users' => $userList,
  240.             'user' => $this->getUser(),
  241.             'companyAddresses' => $companyAddresses
  242.         ]);
  243.     }
  244.     /**
  245.      * @Route("/partner/default/create", name="partner_create")
  246.      */
  247.     public function create(TranslatorInterface $translatorTranslation $translationServiceNotification $serviceNotificationRequest $requestRegisterEvent $registerEventTrafficTracker $trafficTracker): Response
  248.     {
  249.         $trafficTracker->registerTraffic();
  250.         $em $this->getDoctrine()->getManager();
  251.         $locale $request->getLocale();
  252.         $session $this->get('session');
  253.         $user $this->getUser();
  254.         $userRepository $this->getDoctrine()->getRepository(User::class);
  255.         $regionsRepository $em->getRepository(Regions::class);
  256.         $country null;
  257.         $edit false;
  258.         $partner = new Partner();
  259.         $wholesalerRepository $this->getDoctrine()->getRepository(Wholesaler::class);
  260.         $wholesaler $wholesalerRepository->find($user->getWholesaler()->getId());
  261.         $country $wholesaler->getCountry();
  262.         $localelist explode("|"$this->getParameter('app_locales'));
  263.         $queryData $userRepository->MyComercialQuery($user);
  264.         $comercial $queryData->getQuery()->execute();
  265.         $editFinancialRisk 0;
  266.         //search if the wholesaler user has the role to manage the financial risk of the partner
  267.         $hasFinancialRiskRole $em->createQuery('SELECT u'
  268.             ' FROM App\Entity\User u'
  269.             ' WHERE u.id = :user'
  270.             ' AND (u.roles like :role_one'
  271.             ' OR u.roles like :role_two)')
  272.             ->setParameter('user'$user->getId())
  273.             ->setParameter('role_one''%ROLE_MANAGE_PARTNER_FINANCIAL_RISK%')
  274.             ->setParameter('role_two''%ROLE_ADMIN_USER_NEW%')
  275.             ->getOneOrNullResult();
  276.         if (!is_null($hasFinancialRiskRole)) {
  277.             $editFinancialRisk 1;
  278.         }
  279.         if ($user->getMaster() || in_array("ROLE_ADMIN_USER_NEW"$user->getRoles()) || in_array("ROLE_MANAGE_PARTNERS_NEW"$user->getRoles())) {
  280.             $canEditMfa true;
  281.         } else {
  282.             $canEditMfa false;
  283.         }
  284.         $form $this->createForm(PartnerEditType::class, $partner, array(
  285.             'localelist' => $localelist,
  286.             'locale' => $locale,
  287.             'comercial' => $comercial,
  288.             'country' => $country,
  289.             'edit' => $edit,
  290.             'translator' => $translator,
  291.             'entitymanager' => $em,
  292.             'translation' => $translation,
  293.             'editFinancialRisk' => $editFinancialRisk,
  294.             'canEditCurrency' => $user->getWholesaler() ? true false,
  295.             'mandatoryMfa' => $partner->isMandatoryMfa(),
  296.             'canEditMfa' => $canEditMfa,
  297.             'currentUser' => $this->getUser(),
  298.             'wholesaler' => $wholesaler,
  299.             'currencyRepository' => $this->getDoctrine()->getRepository(Currency::class),
  300.             'partner' => $partner $partner null,
  301.             'country_default' => $partner->getCountry() ? $partner->getCountry() : $wholesaler->getCountry()
  302.         ));
  303.         // If posting data
  304.         $form->handleRequest($request);
  305.         if ($form->isSubmitted()) {
  306.             // If cancelled
  307.             if ($form->getClickedButton() && 'cancel' === $form->getClickedButton()->getName()) {
  308.                 return $this->redirect($this->generateUrl('partner_index'));
  309.             }
  310.             if ($form->isValid()) {
  311.                 $post $form->getData();
  312.                 $userAdmin = new User();
  313.                 if (!is_null($form->get('userEmail')->getData())) {
  314.                     $userExist $em->createQuery('SELECT u'
  315.                         ' FROM App\Entity\User u'
  316.                         ' WHERE u.email = :email')
  317.                         ->setParameter('email'$form->get('userEmail')->getData())
  318.                         ->getOneOrNullResult();
  319.                     if (!is_null($userExist)) {
  320.                         $session->getFlashBag()->add('warning'$translator->trans('app.Settings.MyAccount.ValidEmail'));
  321.                         return $this->render('partner/create.html.twig', [
  322.                             'form' => $form->createView(),
  323.                             'edit' => $edit,
  324.                             'editFinancialRisk' => $editFinancialRisk,
  325.                             'canEditMfa' => $canEditMfa
  326.                         ]);
  327.                     }
  328.                     $existPartner $em->createQuery('SELECT count(p.id)'
  329.                         ' FROM App\Entity\Partner p'
  330.                         ' WHERE p.katycif = :cif'
  331.                         ' AND p.wholesaler = :wholesaler')
  332.                         ->setParameter('cif'preg_replace("/[^a-zA-Z0-9]/"""strtoupper($form->get('cif')->getData())))
  333.                         ->setParameter('wholesaler'$user->getWholesaler())
  334.                         ->getSingleScalarResult();
  335.                     if ($existPartner != 0) {
  336.                         $session->getFlashBag()->add('warning'$translator->trans('app.ManageUsers&Profiles.CifDuplicated'));
  337.                         return $this->render('partner/create.html.twig', [
  338.                             'form' => $form->createView(),
  339.                             'edit' => $edit,
  340.                             'editFinancialRisk' => $editFinancialRisk,
  341.                             'canEditMfa' => $canEditMfa
  342.                         ]);
  343.                     }
  344.                     $existPartnerExternalId $em->createQuery('SELECT count(p.id)'
  345.                         ' FROM App\Entity\Partner p'
  346.                         ' WHERE p.externalid = :externalId'
  347.                         ' AND p.wholesaler = :wholesaler')
  348.                         ->setParameter('externalId'$post->getExternalId())
  349.                         ->setParameter('wholesaler'$user->getWholesaler())
  350.                         ->getSingleScalarResult();
  351.                     if ($existPartnerExternalId != 0) {
  352.                         $session->getFlashBag()->add('warning'$translator->trans('app.ManageUsers&Profiles.ExternalIdDuplicated'));
  353.                         return $this->render('partner/create.html.twig', [
  354.                             'form' => $form->createView(),
  355.                             'edit' => $edit,
  356.                             'editFinancialRisk' => $editFinancialRisk,
  357.                         ]);
  358.                     }
  359.                     $userAdmin->setEmail($form->get('userEmail')->getData());
  360.                     $userAdmin->setTimezone($user->getTimezone());
  361.                     $myPassword $userRepository->randomPassword();
  362.                     $userAdmin->setPassword($this->passwordHasher->hashPassword($user$myPassword));
  363.                 }
  364.                 if (!is_null($form->get('region')) && $form->get('region')->getData()) {
  365.                     $reg $regionsRepository->find($form->get('region')->getData());
  366.                     $partner->setRegion($reg);
  367.                 }
  368.                 if (!$partner->getCountry()) {
  369.                     $partner->setCountry($country);
  370.                 }
  371.                 if (!$partner->getRegion()) {
  372.                     $region1 $regionsRepository->findRegionsByCountry($partner->getCountry())->getQuery()->getResult();
  373.                     $partner->setRegion(reset($region1));
  374.                 }
  375.                 if ($editFinancialRisk != 0) {
  376.                     $partner->setFinancialRisk($post->getFinancialRisk());
  377.                 } else {
  378.                     $partner->setFinancialRisk(0);
  379.                 }
  380.                 if ($userRepository->isMiniVendor($user)) {
  381.                     $partner->setRelatedVendor($user->getVendor());
  382.                 }
  383.                 $partner->setWholesaler($wholesaler);
  384.                 $partner->setRegistrationDate(new DateTime());
  385.                 $partner->setKatyCif(preg_replace("/[^a-zA-Z0-9]/"""strtoupper($form->get('cif')->getData())));
  386.                 $country $em->createQuery('SELECT c'
  387.                     ' FROM App\Entity\Countries c'
  388.                     ' WHERE c.id = :id')
  389.                     ->setParameter('id'$form->get('country')->getData())
  390.                     ->getOneOrNullResult();
  391.                 $partner->setCountry($country);
  392.                 $em->persist($partner);
  393.                 $em->flush();
  394.                 $registerEvent->addCreatedBy($partner$user->getId());
  395.                 $userAdmin->setMaster(true);
  396.                 $userAdmin->setRegistrationdate(new DateTime());
  397.                 $userAdmin->setPartner($partner);
  398.                 $userAdmin->setName($form->get('userName')->getData());
  399.                 $userAdmin->setSurname($form->get('userSurname')->getData());
  400.                 $userAdmin->setLocale($form->get('userLocale')->getData());
  401.                 $userAdmin->setTimeZone($form->get('userTimeZone')->getData());
  402.                 $userAdmin->setPhone($form->get('userPhone')->getData());
  403.                 $roles $this->addUserRoles();
  404.                 $userAdmin->setRoles($roles);
  405.                 $em->persist($userAdmin);
  406.                 $em->flush();
  407.                 $registerEvent->addCreatedBy($userAdmin$user->getId());
  408.                 $data = [
  409.                     'password' => $myPassword,
  410.                     'user' => $userAdmin,
  411.                 ];
  412.                 $selfConsumptionCustomer $this->customerCreator->createSelfConsumptionCustomer($partner);
  413.                 //Send email
  414.                 $serviceNotification->Notify(1, array($userAdmin), $data);
  415.                 // Redirect and show result                
  416.                 $session->getFlashBag()->add('success'$translator->trans('app.General.SystemMessages.Created'));
  417.                 return $this->redirect($this->generateUrl('partner_view', array('id' => $partner->getId())));
  418.             }
  419.         }
  420.         return $this->render('partner/create.html.twig', [
  421.             'form' => $form->createView(),
  422.             'edit' => $edit,
  423.             'editFinancialRisk' => $editFinancialRisk,
  424.             'canEditMfa' => $canEditMfa
  425.         ]);
  426.     }
  427.     /**
  428.      * @Route("/partner/default/edit/{id}", name="partner_edit", requirements={"id"="\d+"})
  429.      */
  430.     public function edit(TranslatorInterface $translatorTranslation $translationServiceNotification $serviceNotificationRequest $requestRegisterEvent $registerEvent$idServiceCompanyLogo $companylogoServiceTrafficTracker $trafficTracker): Response
  431.     {
  432.         $trafficTracker->registerTraffic();
  433.         $em $this->getDoctrine()->getManager();
  434.         $locale $request->getLocale();
  435.         $session $this->get('session');
  436.         $user $this->getUser();
  437.         $userRepository $this->getDoctrine()->getRepository(User::class);
  438.         $partnerRepository $this->getDoctrine()->getRepository(Partner::class);
  439.         $partner $partnerRepository->find($id);
  440.         if (is_null($partner)) {
  441.             $session->getFlashBag()->add('danger'$translator->trans('app.General.SystemMessages.NoResults'));
  442.             return $this->redirect($this->generateUrl('partner_index'));
  443.         }
  444.         $country $partner->getWholesaler()->getCountry();
  445.         $edit true;
  446.         $userList $em->createQuery('SELECT u'
  447.             ' FROM App\Entity\User u'
  448.             ' WHERE u.partner = :partner'
  449.             ' ORDER BY u.master desc')
  450.             ->setParameter('partner'$partner)
  451.             ->getResult();
  452.         $userListMaster $em->createQuery('SELECT u'
  453.             ' FROM App\Entity\User u'
  454.             ' WHERE u.partner = :partner'
  455.             ' AND u.ghost = 0'
  456.             ' AND u.unregistrationdate is null'
  457.             ' ORDER BY u.master desc')
  458.             ->setParameter('partner'$partner)
  459.             ->getResult();
  460.         $companyLogoId $companylogoService->checkLogo();
  461.         if ($companyLogoId) {
  462.             $path '/uploads/images/companylogo/';
  463.             $logo $em->createQuery('SELECT c'
  464.                 ' FROM App\Entity\Companylogo c'
  465.                 ' WHERE c.id = :id')
  466.                 ->setParameter('id'$companyLogoId)
  467.                 ->getOneOrNullResult();
  468.             $companyLogo = [
  469.                 'id' => $logo->getId(),
  470.                 'pathNegative' => $path $logo->getFilenameNegative(),
  471.                 'pathPositive' => $path $logo->getFilenamePositive(),
  472.                 'hasNegative' => $logo->getFilenameNegative(),
  473.                 'hasPositive' => $logo->getFilenamePositive(),
  474.             ];
  475.         } else {
  476.             $companyLogo null;
  477.         }
  478.         $localelist explode("|"$this->getParameter('app_locales'));
  479.         $queryData $userRepository->MyComercialQuery($user);
  480.         $comercial $queryData->getQuery()->execute();
  481.         $editFinancialRisk 0;
  482.         if (!$user->getPartner()) {
  483.             //search if the wholesaler user has the role to manage the financial risk of the partner
  484.             $hasFinancialRiskRole $em->createQuery('SELECT u'
  485.                 ' FROM App\Entity\User u'
  486.                 ' WHERE u.id = :user'
  487.                 ' AND (u.roles like :role_one'
  488.                 ' OR u.roles like :role_two)')
  489.                 ->setParameter('user'$user->getId())
  490.                 ->setParameter('role_one''%ROLE_MANAGE_PARTNER_FINANCIAL_RISK%')
  491.                 ->setParameter('role_two''%ROLE_ADMIN_USER_NEW%')
  492.                 ->getOneOrNullResult();
  493.             if (!is_null($hasFinancialRiskRole)) {
  494.                 $editFinancialRisk 1;
  495.             }
  496.         }
  497.         if ($user->getWholesaler() && ($user->getMaster() || in_array("ROLE_ADMIN_USER_NEW"$user->getRoles()) || in_array("ROLE_MANAGE_PARTNERS_NEW"$user->getRoles()))) {
  498.             $canEditMfa true;
  499.         } else {
  500.             $canEditMfa false;
  501.         }
  502.         $form $this->createForm(PartnerEditType::class, $partner, array(
  503.             'localelist' => $localelist,
  504.             'locale' => $locale,
  505.             'comercial' => $comercial,
  506.             'country' => $country,
  507.             'edit' => $edit,
  508.             'userList' => $userList,
  509.             'userListMaster' => $userListMaster,
  510.             'wholesaler' => $user->getWholesaler() ? $user->getWholesaler() : null,
  511.             'partnerUser' => $user->getPartner(),
  512.             'translator' => $translator,
  513.             'entitymanager' => $em,
  514.             'translation' => $translation,
  515.             'currentRegion' => $partner->getRegion()->getId(),
  516.             'editFinancialRisk' => $editFinancialRisk,
  517.             'canEditCurrency' => $user->getWholesaler() ? true false,
  518.             'katyAccess' => $partner->getKatyAccess(),
  519.             'mandatoryMfa' => $partner->isMandatoryMfa(),
  520.             'currentUser' => $this->getUser(),
  521.             'currencyRepository' => $this->getDoctrine()->getRepository(Currency::class),
  522.             'canEditMfa' => $canEditMfa,
  523.             'partner' => $partner $partner null,
  524.             'regions_default' => $partner->getRegion() ? $partner->getRegion()->getId() : null,
  525.             'country_default' => $partner->getCountry() ? $partner->getCountry() : $wholesaler->getCountry()
  526.         ));
  527.         // If posting data
  528.         $form->handleRequest($request);
  529.         if ($form->isSubmitted()) {
  530.             if ($form->getClickedButton() && PartnerEditType::BUTTON_CANCEL === $form->getClickedButton()->getName()) {
  531.                 return $this->redirect($this->generateUrl('partner_view', array('id' => $id)));
  532.             } else {
  533.                 if ($user->getPartner()) {
  534.                     if ($form->getClickedButton() && PartnerEditType::BUTTON_CHANGE_MASTER === $form->getClickedButton()->getName()) {
  535.                         $partner $partnerRepository->find($user->getPartner()->getId());
  536.                         $comercialUser $em->createQuery('SELECT distinct u'
  537.                             ' FROM App\Entity\User u'
  538.                             ' WHERE u.wholesaler = :wholesaler'
  539.                             ' AND (u.id = :commercialId'
  540.                             ' OR u.roles like :role_one)')
  541.                             ->setParameter('commercialId'$partner->getIdcommercialagent())
  542.                             ->setParameter('role_one''%ROLE_MANAGE_PARTNERS_NEW%')
  543.                             ->setParameter('wholesaler'$partner->getWholesaler())
  544.                             ->getResult();
  545.                         $currentUserMaster $em->createQuery('SELECT u'
  546.                             ' FROM App\Entity\User u'
  547.                             ' WHERE u.master = 1'
  548.                             ' AND u.partner = :partner')
  549.                             ->setParameter('partner'$user->getPartner())
  550.                             ->getOneOrNullResult();
  551.                         $data = [
  552.                             'companyName' => $partner->getName(),
  553.                             'user_email' => $user->getEmail(),
  554.                             'master' => $currentUserMaster,
  555.                             'route' => 'partner_view',
  556.                             'idview' => $partner->getId(),
  557.                         ];
  558.                         $serviceNotification->Notify(68$comercialUser$data);
  559.                         $session->getFlashBag()->add('success'$translator->trans('app.ManageUsers&Profiles.CTAs.RequestMasterChange'));
  560.                         return $this->redirect($this->generateUrl('partner_view', array('id' => $id)));
  561.                     }
  562.                 }
  563.             }
  564.             if ($form->isValid()) {
  565.                 $currentUserMaster $em->createQuery('SELECT u'
  566.                     ' FROM App\Entity\User u'
  567.                     ' WHERE u.master = 1'
  568.                     ' AND u.partner = :partner')
  569.                     ->setParameter('partner'$partner)
  570.                     ->getOneOrNullResult();
  571.                 $fileNegative null;
  572.                 $filePositive null;
  573.                 $wholesaler $user->getWholesaler() ?? $user->getPartner()->getWholesaler();
  574.                 $existPartner $em->createQuery('SELECT count(p.id)'
  575.                     ' FROM App\Entity\Partner p'
  576.                     ' WHERE p.katycif = :cif'
  577.                     ' AND p.wholesaler = :wholesaler'
  578.                     ' AND p.id != :id')
  579.                     ->setParameter('cif'preg_replace("/[^a-zA-Z0-9]/"""strtoupper($form->get('cif')->getData())))
  580.                     ->setParameter('wholesaler'$wholesaler)
  581.                     ->setParameter('id'$id)
  582.                     ->getSingleScalarResult();
  583.                 if ($existPartner != 0) {
  584.                     $session->getFlashBag()->add('warning'$translator->trans('app.ManageUsers&Profiles.CifDuplicated'));
  585.                     return $this->redirect($this->generateUrl('partner_edit', array('id' => $id)));
  586.                 }
  587.                 $existPartnerExternalId $em->createQuery('SELECT count(p.id)'
  588.                     ' FROM App\Entity\Partner p'
  589.                     ' WHERE p.externalid = :externalId'
  590.                     ' AND p.wholesaler = :wholesaler'
  591.                     ' AND p.id != :id')
  592.                     ->setParameter('externalId'$form->get('externalId')->getData())
  593.                     ->setParameter('wholesaler'$wholesaler)
  594.                     ->setParameter('id'$id)
  595.                     ->getSingleScalarResult();
  596.                 if ($existPartnerExternalId != 0) {
  597.                     $session->getFlashBag()->add('warning'$translator->trans('app.ManageUsers&Profiles.ExternalIdDuplicated'));
  598.                     return $this->redirect($this->generateUrl('partner_edit', array('id' => $id)));
  599.                 }
  600.                 if (!is_null($form->get('region')) && $form->get('region')->getData()) {
  601.                     $regionsRepository $em->getRepository(Regions::class);
  602.                     $reg $regionsRepository->find($form->get('region')->getData());
  603.                     $partner->setRegion($reg);
  604.                 }
  605.                 if ($edit && $user->getPartner()) {
  606.                     $fileNegative $form->get('fileNegative')->getData();
  607.                     $logocompanyNegative $companylogoService->setCompanyLogo($fileNegative0);
  608.                     $filePositive $form->get('filePositive')->getData();
  609.                     $logocompanyPositive $companylogoService->setCompanyLogo($filePositive1);
  610.                     if (!$logocompanyNegative || !$logocompanyPositive) {
  611.                         return $this->redirect($this->generateUrl('partner_edit', array('id' => $id)));
  612.                     }
  613.                 }
  614.                 $lastMaster $em->createQuery('SELECT u'
  615.                     ' FROM App\Entity\User u'
  616.                     ' WHERE u.master = 1'
  617.                     ' AND u.partner = :partner')
  618.                     ->setParameter('partner'$partner)
  619.                     ->getOneOrNullResult();
  620.                 $partner->setCif($form->get('cif')->getData());
  621.                 $partner->setKatyCif(preg_replace("/[^a-zA-Z0-9]/"""strtoupper($form->get('cif')->getData())));
  622.                 $country $em->createQuery('SELECT c'
  623.                     ' FROM App\Entity\Countries c'
  624.                     ' WHERE c.id = :id')
  625.                     ->setParameter('id'$form->get('country')->getData())
  626.                     ->getOneOrNullResult();
  627.                 $partner->setCountry($country);
  628.                 $em->persist($partner);
  629.                 $em->flush();
  630.                 $registerEvent->addModifiedBy($partner$user->getId());
  631.                 if ($user->getWholesaler() && ($lastMaster->getId() != $form->get('master')->getData())) {
  632.                     $lastMaster->setMaster(0);
  633.                     $em->persist($lastMaster);
  634.                     $em->flush();
  635.                     $registerEvent->addModifiedBy($lastMaster$user->getId());
  636.                     $newMaster $em->createQuery('SELECT u'
  637.                         ' FROM App\Entity\User u'
  638.                         ' WHERE u.id = :id')
  639.                         ->setParameter('id'$form->get('master')->getData())
  640.                         ->getOneOrNullResult();
  641.                     $newMaster->setMaster(1);
  642.                     $roles $this->addUserRoles();
  643.                     $newMaster->setRoles($roles);
  644.                     $em->persist($newMaster);
  645.                     $em->flush();
  646.                     $registerEvent->addModifiedBy($newMaster$user->getId());
  647.                 }
  648.                 // Redirect and show result
  649.                 $session->getFlashBag()->add('success'$translator->trans('app.General.SystemMessages.ChangesSaved'));
  650.                 return $this->redirect($this->generateUrl('partner_view', array('id' => $id)));
  651.             }
  652.         }
  653.         return $this->render('partner/edit.html.twig', [
  654.             'form' => $form->createView(),
  655.             'edit' => $edit,
  656.             'editFinancialRisk' => $editFinancialRisk,
  657.             'user' => $user->getWholesaler() ? $user->getWholesaler()->getId() : null,
  658.             'companylogo' => $companyLogo,
  659.             'fRisk' => $partner->getFinancialrisk(),
  660.             'canEditMfa' => $canEditMfa
  661.         ]);
  662.     }
  663.     /**
  664.      * @Route("/partner/default/editlevelbyvendor/{id}/{idlevel}", name="partner_editlevelbyvendor", requirements={"id"="\d+", "idlevel"="\d+"})
  665.      */
  666.     public function editlevelbyvendor($idlevel 0$idTranslatorInterface $translatorRequest $requestTrafficTracker $trafficTracker): Response
  667.     {
  668.         $trafficTracker->registerTraffic();
  669.         $em $this->getDoctrine()->getManager();
  670.         $session $this->get('session');
  671.         $partner $em->createQuery('SELECT p'
  672.             ' FROM App\Entity\Partner p'
  673.             ' WHERE p.id = :id')
  674.             ->setParameter('id'$id)
  675.             ->getOneOrNullResult();
  676.         $partnerLevelByVendor null;
  677.         if ($idlevel) {
  678.             $partnerLevelByVendor $em->createQuery('SELECT p'
  679.                 .  ' FROM App\Entity\Partnerlevelbyvendor p'
  680.                 ' WHERE p.id = :id')
  681.                 ->setParameter('id'$idlevel)
  682.                 ->getOneOrNullResult();
  683.             $currentlevel $partnerLevelByVendor->getLevel();
  684.             $action 'edit';
  685.         } else {
  686.             $action 'new';
  687.             $currentlevel null;
  688.         }
  689.         $form $this->createForm(PartnerlevelbyvendorEditType::class, null, array(
  690.             'translator' => $translator,
  691.             'action' => $action,
  692.             'level' => $partnerLevelByVendor,
  693.             'partner' => $partner,
  694.             'entitymanager' => $em,
  695.         ));
  696.         $form->handleRequest($request);
  697.         // If cancelled
  698.         if ($form->getClickedButton() && 'cancel' === $form->getClickedButton()->getName()) {
  699.             return $this->redirect($this->generateUrl('partner_view', array('id' => $partner->getId())));
  700.         }
  701.         if ($form->isSubmitted() && $form->isValid()) {
  702.             $post $form->getData();
  703.             if ($post['level'] == && !$idlevel) {
  704.                 $session->getFlashBag()->add('success'$translator->trans('app.General.SystemMessages.ChangesSaved'));
  705.             } else {
  706.                 if (!$idlevel) {
  707.                     $partnerLevelByVendor = new \App\Entity\Partnerlevelbyvendor();
  708.                     $partnerLevelByVendor->setPartner($partner);
  709.                 }
  710.                 if ($post['level'] == 0) {
  711.                     $em->remove($partnerLevelByVendor);
  712.                     $em->flush();
  713.                 } else {
  714.                     $vendor $em->createQuery('SELECT v'
  715.                         ' FROM App\Entity\Vendors v'
  716.                         ' WHERE v.id = :id')
  717.                         ->setParameter('id'$post['idVendor'])
  718.                         ->getOneOrNullResult();
  719.                     $partnerLevelByVendor->setVendor($vendor);
  720.                     $partnerLevelByVendor->setLevel($post['level']);
  721.                     $em->persist($partnerLevelByVendor);
  722.                     $em->flush();
  723.                 }
  724.                 // Redirect and show result
  725.                 $session->getFlashBag()->add('success'$translator->trans('app.General.SystemMessages.ChangesSaved'));
  726.             }
  727.             return $this->redirect($this->generateUrl('partner_view', array('id' => $partner->getId())));
  728.         }
  729.         return $this->render('partner/editlevelbyvendor.html.twig', [
  730.             'currentlevel' => $currentlevel,
  731.             'form' => $form->createView(),
  732.         ]);
  733.     }
  734.     /**
  735.      * @Route("/partner/default/findvendorpartnerlevels", name="partner_findvendorpartnerlevels")
  736.      */
  737.     public function findvendorpartnerlevels(Request $request)
  738.     {
  739.         $em $this->getDoctrine()->getManager();
  740.         $idVendor $request->request->get('idVendor');
  741.         $levels $em->createQuery('SELECT v'
  742.             ' FROM App\Entity\Vendorpartnerlevel v'
  743.             ' WHERE v.vendor = :idvendor')
  744.             ->setParameter('idvendor'$idVendor)
  745.             ->getResult();
  746.         $vendorPartnerLevels = array();
  747.         $vendorPartnerLevels[0] = "---";
  748.         foreach ($levels as $level) {
  749.             $vendorPartnerLevels[$level->getLevel()] = $level->getName();
  750.         }
  751.         $response = new \Symfony\Component\HttpFoundation\JsonResponse();
  752.         $response->setStatusCode(200);
  753.         $response->setData($vendorPartnerLevels);
  754.         return $response;
  755.     }
  756.     /**
  757.      * @Route("/partner/default/block/{id}", name="partner_block", requirements={"id"="\d+"})
  758.      */
  759.     public function block(TranslatorInterface $translatorRequest $requestRegisterEvent $registerEventTrafficTracker $trafficTracker): Response
  760.     {
  761.         $trafficTracker->registerTraffic();
  762.         $em $this->getDoctrine()->getManager();
  763.         $session $this->get('session');
  764.         $currentUser $this->getUser();
  765.         $id $request->get('id');
  766.         $partner $em->createQuery('SELECT p'
  767.             ' FROM App\Entity\Partner p'
  768.             ' WHERE p.id = :id'
  769.             ' AND p.unregistrationdate is null')
  770.             ->setParameter('id'$id)
  771.             ->getOneOrNullResult();
  772.         $partner->setKatyAccess(0);
  773.         $em->persist($partner);
  774.         $em->flush();
  775.         $registerEvent->addModifiedBy($partner$currentUser->getId());
  776.         $master $em->createQuery('SELECT u'
  777.             ' FROM App\Entity\User u'
  778.             ' WHERE u.master = 1'
  779.             ' AND u.partner = :partner')
  780.             ->setParameter('partner'$partner)
  781.             ->getOneOrNullResult();
  782.         $master->setLocked(1);
  783.         $em->persist($master);
  784.         $em->flush();
  785.         $registerEvent->addModifiedBy($master$currentUser->getId());
  786.         $users $em->createQuery('SELECT u'
  787.             ' FROM App\Entity\User u'
  788.             ' WHERE u.master = 0'
  789.             ' AND u.partner = :partner')
  790.             ->setParameter('partner'$partner)
  791.             ->getResult();
  792.         foreach ($users as $user) {
  793.             $user->setLocked(1);
  794.             $em->persist($user);
  795.             $em->flush();
  796.             $registerEvent->addModifiedBy($user$currentUser->getId());
  797.         }
  798.         $session->getFlashBag()->add('success'$partner->getName() . ' ' $translator->trans('app.General.SystemMessages.Blocked'));
  799.         return $this->redirect($this->generateUrl('partner_view', ['id' => $id]));
  800.     }
  801.     /**
  802.      * @Route("/partner/default/unblock/{id}", name="partner_unblock", requirements={"id"="\d+"})
  803.      */
  804.     public function unblock(TranslatorInterface $translatorRequest $requestServiceNotification $serviceNotificationRegisterEvent $registerEventTrafficTracker $trafficTracker): Response
  805.     {
  806.         $trafficTracker->registerTraffic();
  807.         $em $this->getDoctrine()->getManager();
  808.         $session $this->get('session');
  809.         $currentUser $this->getUser();
  810.         $userRepository $this->getDoctrine()->getRepository(User::class);
  811.         $id $request->get('id');
  812.         $partner $em->createQuery('SELECT p'
  813.             ' FROM App\Entity\Partner p'
  814.             ' WHERE p.id = :id'
  815.             ' AND p.unregistrationdate is null')
  816.             ->setParameter('id'$id)
  817.             ->getOneOrNullResult();
  818.         $partner->setKatyAccess(1);
  819.         $em->persist($partner);
  820.         $em->flush();
  821.         $registerEvent->addModifiedBy($partner$currentUser->getId());
  822.         $master $em->createQuery('SELECT u'
  823.             ' FROM App\Entity\User u'
  824.             ' WHERE u.master = 1'
  825.             ' AND u.partner = :partner')
  826.             ->setParameter('partner'$partner)
  827.             ->getOneOrNullResult();
  828.         $master->setLocked(0);
  829.         $myPassword $userRepository->randomPassword();
  830.         $master->setPassword($this->passwordHasher->hashPassword($currentUser$myPassword));
  831.         $master->setChangepassdate(null);
  832.         $em->persist($master);
  833.         $em->flush();
  834.         $registerEvent->addModifiedBy($master$currentUser->getId());
  835.         $data = [
  836.             'password' => $myPassword,
  837.             'user' => $master,
  838.         ];
  839.         //Send email
  840.         $serviceNotification->Notify(1, array($master), $data);
  841.         $session->getFlashBag()->add('success'$partner->getName() . ' ' $translator->trans('app.General.SystemMessages.Activated'));
  842.         return $this->redirect($this->generateUrl('partner_view', ['id' => $id]));
  843.     }
  844.     /**
  845.      * @Route("/partner/default/partnerquestionnaire", name="partner_questionnaire")
  846.      */
  847.     public function partnerquestionnaire(TranslatorInterface $translatorTranslation $translationRequest $requestTrafficTracker $trafficTracker): Response
  848.     {
  849.         $trafficTracker->registerTraffic();
  850.         $session $this->get('session');
  851.         $em $this->getDoctrine()->getManager();
  852.         $user $this->getUser();
  853.         $locale $request->getLocale();
  854.         $partnerProfile = new \App\Entity\Partnerprofile();
  855.         $partnerProfile->setPartner($user->getPartner());
  856.         $employeesRange $em->createQuery('SELECT er'
  857.             ' FROM App\Entity\Employeesrange er')
  858.             ->getResult();
  859.         $categoryList $em->createQuery('SELECT c'
  860.             ' FROM App\Entity\Category c'
  861.             ' ORDER BY c.name')
  862.             ->getResult();
  863.         $invoiceRange $em->createQuery('SELECT ir'
  864.             ' FROM App\Entity\Invoicerange ir')
  865.             ->getResult();
  866.         $vendorsList $em->createQuery('SELECT v'
  867.             ' FROM App\Entity\Vendors v'
  868.             ' WHERE v.isminivendor = 0'
  869.             ' AND v.name not like \'Katy\''
  870.             ' ORDER BY v.name')
  871.             ->getResult();
  872.         $productTypes $em->createQuery('SELECT q'
  873.             ' FROM App\Entity\Questionnaireproducttype q')
  874.             ->getResult();
  875.         // Init form
  876.         $form $this->createForm(PartnerQuestionnaireEditType::class, null, array(
  877.             'translator' => $translator,
  878.             'employeesRange' => $employeesRange,
  879.             'categoryList' => $categoryList,
  880.             'invoiceRange' => $invoiceRange,
  881.             'vendorsList' => $vendorsList,
  882.             'productTypes' => $productTypes,
  883.             'translation' => $translation,
  884.             'locale' => $locale,
  885.         ));
  886.         // If posting data
  887.         $form->handleRequest($request);
  888.         if ($form->isSubmitted()) {
  889.             $post $form->getData();
  890.             if (
  891.                 empty($post['businessType']) || empty($post['productType']) ||
  892.                 (empty($post['vendorsInterested']) && empty($post['otherVendorsInterested']))
  893.                 || (empty($post['categoryInterested']) && empty($post['otherCategoryInterested']))
  894.             ) {
  895.                 $session->getFlashBag()->add('warning'$translator->trans('app.ManageUsers&Profiles.CheckAllLists'));
  896.                 return $this->render('partner/partnerquestionnaire.html.twig', [
  897.                     'form' => $form->createView(),
  898.                 ]);
  899.             }
  900.             $employeesRange $em->createQuery('SELECT er'
  901.                 ' FROM App\Entity\Employeesrange er'
  902.                 ' WHERE er.id = :id')
  903.                 ->setParameter('id'$form->get('idEmployeesRange')->getData())
  904.                 ->getOneOrNullResult();
  905.             $partnerProfile->setEpmloyeesRange($employeesRange);
  906.             $partnerProfile->setActiveclients($post['activeClients']);
  907.             $invoiceRange $em->createQuery('SELECT ir'
  908.                 ' FROM App\Entity\Invoicerange ir'
  909.                 ' WHERE ir.id = :id')
  910.                 ->setParameter('id'$form->get('idInvoiceRange')->getData())
  911.                 ->getOneOrNullResult();
  912.             $partnerProfile->setInvoiceRange($invoiceRange);
  913.             $businessType '';
  914.             $businessTypeData $post['businessType'];
  915.             if (count($businessTypeData) == 2) {
  916.                 $businessType $translator->trans('app.ManageUsers&Profiles.PartnerForm.A1Business') . ' / ' $translator->trans('app.ManageUsers&Profiles.PartnerForm.A2Business');
  917.             } else {
  918.                 switch ($businessTypeData[0]) {
  919.                     case 1:
  920.                         $businessType $translator->trans('app.ManageUsers&Profiles.PartnerForm.A1Business');
  921.                         break;
  922.                     case 2:
  923.                         $businessType $translator->trans('app.ManageUsers&Profiles.PartnerForm.A2Business');
  924.                         break;
  925.                 }
  926.             }
  927.             $partnerProfile->setBusinesstype($businessType);
  928.             foreach ($post['productType'] as $key => $value) {
  929.                 if ($value != 0) {
  930.                     $partnerProductType = new Partnerproducttype();
  931.                     $partnerProductType->setPartner($user->getPartner());
  932.                     $questionnaireProductType $em->createQuery('SELECT q'
  933.                         ' FROM App\Entity\QuestionnaireProductType q'
  934.                         ' WHERE q.id = :id')
  935.                         ->setParameter('id'$value)
  936.                         ->getOneOrNullResult();
  937.                     $partnerProductType->setQuestionnaireProductType($questionnaireProductType);
  938.                     $em->persist($partnerProductType);
  939.                     $em->flush();
  940.                 }
  941.             }
  942.             foreach ($post['vendorsInterested'] as $key => $value) {
  943.                 if ($value != 0) {
  944.                     $partnerVendorsInterested = new Partnervendorsinterested();
  945.                     $partnerVendorsInterested->setPartner($user->getPartner());
  946.                     $vendor $em->createQuery('SELECT v'
  947.                         ' FROM App\Entity\Vendors v'
  948.                         ' WHERE v.id = :id')
  949.                         ->setParameter('id'$value)
  950.                         ->getOneOrNullResult();
  951.                     $partnerVendorsInterested->setVendor($vendor);
  952.                     $em->persist($partnerVendorsInterested);
  953.                     $em->flush();
  954.                 }
  955.             }
  956.             $partnerProfile->setOthervendorsinterested($post['otherVendorsInterested']);
  957.             foreach ($post['categoryInterested'] as $key => $value) {
  958.                 if ($value != 0) {
  959.                     $partnerCategoryInterested = new Partnercategoryinterested();
  960.                     $partnerCategoryInterested->setPartner($user->getPartner());
  961.                     $category $em->createQuery('SELECT c'
  962.                         ' FROM App\Entity\Category c'
  963.                         ' WHERE c.id = :id')
  964.                         ->setParameter('id'$value)
  965.                         ->getOneOrNullResult();
  966.                     $partnerCategoryInterested->setCategory($category);
  967.                     $em->persist($partnerCategoryInterested);
  968.                     $em->flush();
  969.                 }
  970.             }
  971.             $partnerProfile->setOthercategoryinterested($post['otherCategoryInterested']);
  972.             $partnerProfile->setCreatedby($user);
  973.             $partnerProfile->setModifiedby($user);
  974.             $partnerProfile->setSupporttool($post['supportTool']);
  975.             if ($post['supportTool'] == 1) {
  976.                 $partnerProfile->setInfosupporttool($post['infoSupportTool']);
  977.             }
  978.             $em->persist($partnerProfile);
  979.             $em->flush();
  980.             // Redirect and show result
  981.             $session->getFlashBag()->add('success'$translator->trans('app.General.SystemMessages.ChangesSaved'));
  982.             if (!$user->getAcceptedpolicies() || !$user->getAcceptedcookies()) {
  983.                 return $this->redirectToRoute('user_policies');
  984.             }
  985.             return $this->redirectToRoute('home');
  986.         }
  987.         return $this->render('partner/partnerquestionnaire.html.twig', [
  988.             'form' => $form->createView(),
  989.         ]);
  990.     }
  991.     private function addUserRoles()
  992.     {
  993.         $em $this->getDoctrine()->getManager();
  994.         $partnerRoles $em->createQuery('SELECT r'
  995.             ' FROM App\Entity\Role r'
  996.             ' WHERE r.partner = true')
  997.             ->getResult();
  998.         $roles = array();
  999.         foreach ($partnerRoles as $roleValue) {
  1000.             $roles[] = $roleValue->getInternalRole();
  1001.         }
  1002.         return $roles;
  1003.     }
  1004.     private function SalesTotal($idpartner)
  1005.     {
  1006.         $em $this->getDoctrine()->getManager();
  1007.         $arraysales $em->createQuery('SELECT SUM(s.price) as totalprice,'
  1008.             ' CONCAT(YEAR(s.datecreated), \' -\',MONTH(s.datecreated), \' -\', DAY(s.datecreated)) as date'
  1009.             ' FROM App\Entity\Sales s'
  1010.             ' JOIN s.customer c'
  1011.             ' JOIN c.partner p'
  1012.             ' WHERE p.id = :idpartner'
  1013.             ' GROUP BY date')
  1014.             ->setParameter('idpartner'$idpartner)
  1015.             ->getArrayResult();
  1016.         $data = array();
  1017.         $salesdata = array();
  1018.         foreach ($arraysales as $sales) {
  1019.             $data['date'] = $sales['date'];
  1020.             $data['value'] = $sales['totalprice'];
  1021.             array_push($salesdata$data);
  1022.         }
  1023.         return json_encode($salesdata);
  1024.     }
  1025.     private function TotalClient($idpartner)
  1026.     {
  1027.         $em $this->getDoctrine()->getManager();
  1028.         $total_client $em->createQuery('SELECT count(c.id)'
  1029.             ' FROM App\Entity\Customer c'
  1030.             ' JOIN c.partner p'
  1031.             ' WHERE p.id = :idpartner'
  1032.             ' AND p.wholesaler = :wholesaler')
  1033.             ->setParameter('idpartner'$idpartner)
  1034.             ->setParameter('wholesaler'$this->getUser()->getWholesaler())
  1035.             ->getOneOrNullResult();
  1036.         return $total_client[1];
  1037.     }
  1038.     private function TotalSalesWidget($idpartner)
  1039.     {
  1040.         $em $this->getDoctrine()->getManager();
  1041.         $total_sales $em->createQuery('SELECT count(s.id)'
  1042.             ' FROM App\Entity\Sales s'
  1043.             ' JOIN s.customer c'
  1044.             ' JOIN c.partner p'
  1045.             ' WHERE p.id = :idpartner'
  1046.             ' AND p.wholesaler = :wholesaler')
  1047.             ->setParameter('idpartner'$idpartner)
  1048.             ->setParameter('wholesaler'$this->getUser()->getWholesaler())
  1049.             ->getOneOrNullResult();
  1050.         return $total_sales[1];
  1051.     }
  1052.     private function TotalTicket($idpartner)
  1053.     {
  1054.         $em $this->getDoctrine()->getManager();
  1055.         $total_ticket $em->createQuery('SELECT count(t.id)'
  1056.             ' FROM App\Entity\Ticket t'
  1057.             ' JOIN t.user u'
  1058.             ' JOIN u.partner p'
  1059.             ' WHERE p.id = :idpartner'
  1060.             ' AND p.wholesaler = :wholesaler')
  1061.             ->setParameter('idpartner'$idpartner)
  1062.             ->setParameter('wholesaler'$this->getUser()->getWholesaler())
  1063.             ->getOneOrNullResult();
  1064.         return $total_ticket[1];
  1065.     }
  1066.     /**
  1067.      * @Route("/partner/default/getregions", name="partner_create_regions" )
  1068.      */
  1069.     public function partnerCreateRegions(Request $requestTrafficTracker $trafficTrackerTranslatorInterface $translatorTranslation $translation)
  1070.     {
  1071.         $trafficTracker->registerTraffic();
  1072.         /** @var EntityManager */
  1073.         $entityManager $this->getDoctrine()->getManager();
  1074.         $user $this->getUser();
  1075.         $responseArray null;
  1076.         $countryRepository $entityManager->getRepository(Countries::class);
  1077.         $country $countryRepository->find($request->get('country'));
  1078.         $regionsRepository $entityManager->getRepository(Regions::class);
  1079.         $regions $regionsRepository->findRegionsByCountry($country)->getQuery()->getResult();
  1080.         foreach ($regions as $region) {
  1081.             $responseArray[$region->getId()] = $translation->getTranslationBy($region$user->getLocale(), 'regionName') . ' (' $region->getCode() . ')';
  1082.         }
  1083.         $response json_encode($responseArray);
  1084.         return new Response($response200, array(
  1085.             'Content-Type' => 'application/json'
  1086.         ));
  1087.     }
  1088. }