src/Controller/BaseController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Bitrix\CRest;
  4. use App\Entity\Menu;
  5. use App\Entity\Order;
  6. use App\Entity\Page;
  7. use App\Entity\PageBlock;
  8. use App\Service\SmsService;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use Mpdf\Mpdf;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. class BaseController extends AbstractController
  17. {
  18.     public function header(ManagerRegistry $doctrine$route$request$action null): Response
  19.     {
  20.         $em $doctrine->getManager();
  21.         $menuItems $em->getRepository(Menu::class)->findBy(['enabled'=>true'parent'=>null], ['sort'=>'ASC']);
  22.         $menus = [
  23.             'about'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'about']),
  24.             'project'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'project']),
  25.             'korolev'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'korolev']),
  26.             'publications'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'publications']),
  27.             'contacts'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'contacts']),
  28.             'region'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'o-regione']),
  29. //            'jukovskii'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'jukovskii'])
  30.         ];
  31.         return $this->render('new/base/header.html.twig', [
  32.             'items' => $menuItems'route'=> $route'request' => $request'action' => $action'menus' => $menus]);
  33.     }
  34.     public function headerNew(ManagerRegistry $doctrine$route$request$action null): Response
  35.     {
  36.         $em $doctrine->getManager();
  37.         $menuItems $em->getRepository(Menu::class)->findBy(['enabled'=>true'parent'=>null], ['sort'=>'ASC']);
  38.         $menus = [
  39.             'about'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'about']),
  40.             'project'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'project']),
  41.             'korolev'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'korolev']),
  42.             'publications'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'publications']),
  43.             'contacts'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'contacts']),
  44.             'region'=>  $em->getRepository(Page::class)->findOneBy(['slug' => 'o-regione'])
  45.         ];
  46.         return $this->render('new/index/jukovskii_header.html.twig', [
  47.             'items' => $menuItems'route'=> $route'request' => $request'action' => $action'menus' => $menus]);
  48.     }
  49.     public function siteSelected(){
  50.         return $this->render('base/site_selected.html.twig');
  51.     }
  52.     #[Route('/map'name"app_map")]
  53.     public function map(){
  54.         return $this->render('new/index/map.html.twig');
  55.     }
  56.     public function modal(ManagerRegistry $doctrine$modalName){
  57.         $modal $doctrine->getRepository(PageBlock::class)->findOneBy(['name'=>$modalName]);
  58.         if ($modal){
  59.             return $this->render('new/modals/modal_template.html.twig', ['modal'=> $modal]);
  60.         }else{
  61.             return  new Response();
  62.         }
  63.     }
  64.     #[Route('/order/{orderNumber}'defaults: ['orderNumber' => null])]
  65.     public function orderAction(Request $request\Swift_Mailer $mailer$orderNumber null){
  66.         if ($orderNumber && $request->getMethod() != 'POST'){
  67.             $data CRest::call(
  68.                 'crm.deal.get',
  69.                 [ 'id' => $orderNumber ]
  70.             );
  71.             if ($data['result']['UF_CRM_1682083532812'] == '1804'){
  72.                 return $this->redirectToRoute('app_index');
  73.             }
  74.         }
  75.         if ($request->getMethod() == 'POST'){
  76. //            ')
  77.             $order = new Order();
  78.             $order->setCompanyTitle($request->request->get('companyTitle'));
  79.             $order->setCompanyInn($request->request->get('inn'));
  80.             $order->setCompanyKpp($request->request->get('ogrn'));
  81.             $order->setCompanyCity($request->request->get('city'));
  82.             $order->setIndustry($request->request->get('a2-5'));
  83.             $order->setIndustryDesc($request->request->get('a2-1'));
  84.             $order->setProjectType($request->request->get('a2-2'));
  85.             $order->setSiteOrBuilding($request->request->get('a3-1'));
  86.             $order->setBuyOrRent($request->request->get('a3-2'));
  87.             $order->setDirection($request->request->get('a3-3'));
  88.             $order->setRemotenessByMkad($request->request->get('a3-4-1'));
  89.             $order->setSquareMin(isset($_POST['a4-1-1']) ? $_POST['a4-1-1'] : 0);
  90.             $order->setSquareMax(isset($_POST['a4-1-2']) ? $_POST['a4-1-2'] : 0);
  91.             $order->setHeightMin(isset($_POST['a4-4-1']) ? $_POST['a4-4-1'] : 0);
  92.             $order->setHeightMin(isset($_POST['a4-4-2']) ? $_POST['a4-4-2'] : 0);
  93. //            $order->setHeightMin($_POST['a4-4-1']);
  94. //            $order->setHeightMax($_POST['a4-4-2']);
  95.             $order->setLandAreaMin($request->request->get('a3-5-1'));
  96.             $order->setLendAreaMax($request->request->get('a3-5-2'));
  97.             $order->setClassZone($request->request->get('a5-1'''));
  98.             $order->setRzd($request->request->get('a6-1'));
  99.             $order->setPowerSupply($request->request->get('a7-1-1'));
  100.             $order->setGasSupply($request->request->get('a7-2-1'));
  101.             $order->setWaterDisposal($request->request->get('a7-4-1'));
  102.             $order->setWaterSupply($request->request->get('a7-6-1'));
  103.             $order->setWorkPeople($request->request->get('a8-1-1'));
  104.             $order->setInvestCount($request->request->get('a9-1'));
  105.             $order->setTaxCount($request->request->get('a9-2'));
  106.             $order->setPercentSelfMoney($request->request->get('a9-3'));
  107.             $order->setAttractingFinancing($request->request->get('a9-4'));
  108.             $order->setExportProducts($request->request->get('a10-1'));
  109.             $order->setDatePlan($request->request->get('a11-1'));
  110. //            $order->setSourceinfo($request->request->get('a12-1'));
  111.             $order->setContactFio($request->request->get('a13-1'));
  112.             $order->setContactPost($request->request->get('a13-2'));
  113.             $order->setContactEmail($request->request->get('a13-4'));
  114.             $order->setContactPhone($request->request->get('a13-3'));
  115.             $order->setCreated(new \DateTime());
  116. //            dump($order);
  117. //            exit;
  118.             $this->getDoctrine()->getManager()->persist($order);
  119.             $this->getDoctrine()->getManager()->flush($order);
  120.             $array $request->request->all();
  121.             $time time();
  122.             $filename '/pdf/'.$time.'.pdf';
  123.             $company CRest::call(
  124.                 'crm.company.add',
  125.                 ['FIELDS' => [
  126.                     'TITLE' => $_POST['companyTitle'] ,
  127.                     'COMPANY_TYPE' => 'COSTOMER' ,
  128.                 ]
  129.                 ]
  130.             );
  131.             $fip explode(' '$_POST['a13-1']);
  132.             $client CRest::call(
  133.                 'crm.contact.add',
  134.                 ['FIELDS' => [
  135.                     'LAST_NAME' => (isset($fip[0]) ? $fip[0] : '') ,
  136.                     'NAME' => (isset($fip[1]) ? $fip[1] : '') ,
  137.                     'SECOND_NAME' => (isset($fip[2]) ? $fip[2] : '') ,
  138.                     'POST' => $_POST['a13-2'] ,
  139.                     'COMPANY_ID' => $company['result'] ,
  140.                     'PHONE' => ['0' => ['VALUE' => $_POST['a13-3'], 'VALUE_TYPE' => 'WORK' ]],
  141.                     'EMAIL' => ['0' => ['VALUE' => $_POST['a13-4'], 'VALUE_TYPE' => 'WORK' ]]
  142.                 ]
  143.                 ]
  144.             );
  145.             $fields = [
  146.                 // 1
  147.                 'CLIENT_ID' => $client['result'],
  148.                 'COMPANY_ID' => $company['result'],
  149.                 'TITLE' => $_POST['companyTitle'] ,
  150.                 // 2
  151.                 'UF_CRM_1606465800' => htmlspecialchars($request->request->get('a2-1')) ,
  152.                 'UF_CRM_1670866739817' => htmlspecialchars($request->request->get('a2-2')) ,
  153.                 // 3
  154.                 'UF_CRM_1675845053079' => $this->zeml($_POST['a3-1']) ,
  155.                 'UF_CRM_1606377438' => $_POST['a2-2'] ,
  156.                 'UF_CRM_1606381074' => $_POST['a2-5'] ,
  157.                 'UF_CRM_1695918921855' => $_POST['a2-6'] ,
  158.                 'UF_CRM_1679571797939' => $_POST['a3-2'],
  159.                 'UF_CRM_1670869181929' => $_POST['a3-3'],
  160.                 'UF_CRM_1607609497932' => htmlspecialchars(implode(', '$_POST['a3-4-1'])),
  161.                 'UF_CRM_1677854515829' => @htmlspecialchars($_POST['a3-5-1']) . ' - ' . @htmlspecialchars($_POST['a3-5-2']),
  162. //                    'UF_CRM_1675321766138' => htmlspecialchars($_POST['a3-6']),
  163.                 // 4
  164.                 'UF_CRM_1679568817892' => @htmlspecialchars($_POST['a4-1-1']). ' - ' . @htmlspecialchars($_POST['a4-1-2']),
  165. //                    'UF_CRM_1675337484117' => htmlspecialchars($_POST['a4-2-1']) . ' - ' . htmlspecialchars($_POST['a4-2-2']),
  166. //                    'UF_CRM_1675337493501' => htmlspecialchars($_POST['a4-3-1']) . ' - ' . htmlspecialchars($_POST['a4-3-2']),
  167.                 'UF_CRM_1675337503316' => @htmlspecialchars($_POST['a4-4-1']) . ' - ' . @htmlspecialchars($_POST['a4-4-2']),
  168.                 // 5
  169.                 'UF_CRM_1606467793' => htmlspecialchars($_POST['a5-1']),
  170.                 'UF_CRM_1671092333590' => ($_POST['a5-1'] == 259 '1 000 м' : ($_POST['a5-1'] == 260 '500 м' : ($_POST['a5-1'] == 261 '100 м' '50 м' ))) ,
  171. //                    'UF_CRM_1675337610212' => htmlspecialchars($_POST['a5-2']) . ' '.htmlspecialchars($_POST['a5-3']),
  172.                 // 6
  173.                 'UF_CRM_1675362708976' => $_POST['a6-1'],
  174.                 'UF_CRM_1606378175' => ($_POST['a6-1'] ? 172 173),
  175.                 // 7
  176.                 'UF_CRM_1606307259' => $_POST['a7-1-1'],
  177. //                    'UF_CRM_1676454782840' => $_POST['a7-1-2'],
  178. //                    'UF_CRM_1676454792113' => $_POST['a7-1-3'],
  179. //                    'UF_CRM_1676454802581' => $_POST['a7-1-4'],
  180.                 'UF_CRM_1606307305' =>    $_POST['a7-2-1'],
  181. //                    'UF_CRM_1676454942092' => $_POST['a7-2-2'],
  182. //                    'UF_CRM_1676454949378' => $_POST['a7-2-3'],
  183. //                    'UF_CRM_1676454956188' => $_POST['a7-2-4'],
  184.                 'UF_CRM_1607609478634' => $_POST['a7-4-1'],
  185. //                    'UF_CRM_1676455787543' => $_POST['a7-4-2'],
  186. //                    'UF_CRM_1676455794233' => $_POST['a7-4-3'],
  187. //                    'UF_CRM_1676455801248' => $request->request->get('a7-4-4'),
  188.                 'UF_CRM_1675362597546' => $request->request->get('a7-5-1'),
  189. //                    'UF_CRM_1677584791600' => $request->request->get('a7-5-2'),
  190. //                    'UF_CRM_1677584801663' => $request->request->get('a7-5-3'),
  191. //                    'UF_CRM_1677584809559' => $request->request->get('a7-5-4'),
  192.                 'UF_CRM_1606307281' => $request->request->get('a7-6-1'),
  193.                 // 8
  194.                 'UF_CRM_1606738971379' => $request->request->get('a8-1-1'),
  195.                 // 9
  196.                 'OPPORTUNITY' => htmlspecialchars($request->request->get('a9-1')) ,
  197.                 // Заинтересованность в привлечении финансирования
  198.                 'UF_CRM_1670869865629' => htmlspecialchars($request->request->get('a9-2')) ,
  199.                 'UF_CRM_1675363011684' => htmlspecialchars($request->request->get('a9-4')) ,
  200.                 'UF_CRM_1675848015746' => htmlspecialchars($request->request->get('a9-3')) ,
  201.                 // 10
  202.                 'UF_CRM_1675363052446' => htmlspecialchars($request->request->get('a10-1')) ,
  203.                 // 11
  204.                 'UF_CRM_1675363070079' => htmlspecialchars($request->request->get('a11-1')) ,
  205.                 // 12
  206. //                'UF_CRM_1675363093767' => htmlspecialchars($request->request->get('a12-1')) ,
  207.                 // PDF
  208.                 'UF_CRM_1678207562009' => 'https://mosregco.ru'.$filename ,
  209.                 'UF_CRM_1682083532812' => '1804' ,
  210.                 'UF_CRM_1685378974312' => (new \DateTime())->format('Y-m-d H:i:s'),
  211.             ];
  212.             if (!$orderNumber){
  213.                 $fields['SOURCE_ID'] = 'Сайт';
  214.             }
  215.             if ($orderNumber == null){
  216.                 $result CRest::call(
  217.                     'crm.deal.add',
  218.                     ['FIELDS' => $fields]
  219.                 );
  220.                 $filename2 '/pdf-generate/'.$result['result'];
  221.                 CRest::call(
  222.                     'crm.deal.update',
  223.                     [
  224.                         'ID' => $orderNumber,
  225.                         'FIELDS' => [
  226.                             'UF_CRM_1697204561963' => 'https://mosregco.ru'.$filename2 ,
  227.                         ]
  228.                     ]
  229.                 );
  230.             }else{
  231.                 $result CRest::call(
  232.                     'crm.deal.update',
  233.                     [
  234.                         'ID' => $orderNumber,
  235.                         'FIELDS' => $fields
  236.                     ]
  237.                 );
  238.             }
  239.             $addcon CRest::call(
  240.                 'crm.deal.contact.add',
  241.                [
  242.                    'ID' => $result['result'],
  243.                    'FIELDS'=> [
  244.                        'CONTACT_ID'=>$client['result'],
  245.                        'SORT'=>0,
  246.                        'PRIMARY'=>true,
  247.                    ]
  248.                 ]
  249.             );
  250.             $array['orderId'] = ($orderNumber $orderNumber $result['result']);
  251.             $path $this->generatePdf($array$time);
  252.             $order->setBitrixCode($array['orderId']);
  253.             $this->getDoctrine()->getManager()->flush();
  254.             $mailhtml $this->renderView('new/mail/order.html.twig', ['order'=>$array'path' => $path]);
  255.             $message = (new \Swift_Message('Новый запрос формы заявки'))
  256.                 ->setFrom('marketing@mosregco.ru''marketing@mosregco.ru')
  257. //                ->setFrom('marketing@mosregco.ru', 'marketing@mosregco.ru')
  258. //                ->setFrom('test@projectwork.ru', 'test@projectwork.ru')
  259.                 ->setTo(['marketing@mosregco.ru''t.ershova@mosregco.ru'])
  260.                 ->setBody(
  261.                     $mailhtml,
  262.                     'text/html'
  263.                 );
  264.             $mailer->send($message);
  265.             if (filter_var($request->request->get('a13-4'), FILTER_VALIDATE_EMAIL)) {
  266.                 $mailhtml $this->renderView('new/mail/order_client.html.twig', ['order'=>$array'path' => $path]);
  267.                 $message = (new \Swift_Message('Заявка с сайта КРМО'))
  268. //                    ->setFrom('test@projectwork.ru', 'test@projectwork.ru')
  269.                     ->setFrom('marketing@mosregco.ru''marketing@mosregco.ru')
  270.                     ->setTo($request->request->get('a13-4'))
  271.                     ->setBody(
  272.                         $mailhtml,
  273.                         'text/html'
  274.                     );
  275.                 
  276.                 @$mailer->send($message);
  277.             }
  278. //            dump($result);
  279.             return $this->render('new/order.html.twig', [ 'data'=> $array ]);
  280.         }
  281.         return $this->render('new/order.html.twig');
  282.     }
  283.     #[Route('/order-sms'name"send_sms"options: ["expose" => true ])]
  284.     public function orderSmsAction(Request $requestSmsService $smsService){
  285.         $phone $request->request->get('a13-3');
  286.         if (!$phone){
  287.             return new JsonResponse('error');
  288.         }
  289.         $num rand(1234,9854);
  290.         $session $request->getSession()->set('sms'$num);
  291. //        $session->save();
  292.         $phone str_replace(['-',' ','(',')'],'',$phone);
  293.         $r $smsService->smsapi_push_msg_nologin('s.cherkasov@mosregco.ru''eKoxZ(e2yxmo'$phone,
  294.             "Код: $num", array("sender_name"=>"KRMO"));
  295.         return  new JsonResponse(['code' => $num]);
  296.     }
  297.     #[Route('/pdf-generate/{code}')]
  298.     public function pdfGenerate($code){
  299.         $order $this->getDoctrine()->getRepository(Order::class)->findOneBy(['bitrixCode'=>$code]);
  300.         if (!$order){
  301.             echo '<h1>Документ не найден</h1>';
  302.             exit;
  303.         }
  304.         $arguments = array(
  305.             'constructorArgs' => ['',''0''000000'P'],
  306.             'writeHtmlMode' => null//$mode argument for WriteHTML method
  307.             'writeHtmlInitialise' => null//$mode argument for WriteHTML method
  308.             'writeHtmlClose' => null//$close argument for WriteHTML method
  309.             'outputFilename' => null//$filename argument for Output method
  310.             'outputDest' => null//$dest argument for Output method
  311.             'defaultheaderline' => 0,  //for header
  312.             'defaulfooterline' => 0  //for footer
  313.         );
  314.         $mpdf = new Mpdf(['mode' => 'utf-8''format' => [360472]]);
  315. //        $mpdfService = $this->container->get('t_fox_mpdf_port.mpdf');
  316.         $mpdf->defaultheaderline 0;
  317.         $mpdf->defaultfooterline 0;
  318.         $stylesheet file_get_contents(__DIR__.'/../../public/assets/bootstrap/dist/css/bootstrap.css');
  319.         $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
  320.         $stylesheet file_get_contents(__DIR__.'/../../public/assets/less/newsite2.css');
  321.         $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
  322.         $stylesheet file_get_contents(__DIR__.'/../../public/assets/less/fonts.css');
  323.         $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
  324.         $html $this->renderView('new/pdf/order_2.html.twig', ['order' => $order]);
  325.         $mpdf->WriteHTML($html);
  326.         $name $code.'.pdf';
  327.         $mpdf->Output($name,'D');
  328.         return $name;
  329.     }
  330.     private function generatePdf(array $array$time)
  331.     {
  332.         $arguments = array(
  333.             'constructorArgs' => ['',''0''000000'P'],
  334.             'writeHtmlMode' => null//$mode argument for WriteHTML method
  335.             'writeHtmlInitialise' => null//$mode argument for WriteHTML method
  336.             'writeHtmlClose' => null//$close argument for WriteHTML method
  337.             'outputFilename' => null//$filename argument for Output method
  338.             'outputDest' => null//$dest argument for Output method
  339.             'defaultheaderline' => 0,  //for header
  340.             'defaulfooterline' => 0  //for footer
  341.         );
  342.         $mpdf = new Mpdf(['mode' => 'utf-8''format' => [360472]]);
  343. //        $mpdfService = $this->container->get('t_fox_mpdf_port.mpdf');
  344.         $mpdf->defaultheaderline 0;
  345.         $mpdf->defaultfooterline 0;
  346.         $stylesheet file_get_contents(__DIR__.'/../../public/assets/bootstrap/dist/css/bootstrap.css');
  347.         $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
  348.         $stylesheet file_get_contents(__DIR__.'/../../public/assets/less/newsite.css');
  349.         $stylesheet file_get_contents(__DIR__.'/../../public/assets/less/fonts.css');
  350.         $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
  351.         $mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
  352.         $html $this->renderView('new/pdf/order.html.twig', ['order' => $array]);
  353.         $mpdf->WriteHTML($html);
  354.         $name '/pdf/'.$time.'.pdf';
  355.         $mpdf->Output(__DIR__.'/../../public'.$name,'F');
  356.         return $name;
  357.     }
  358.     private function zeml($post)
  359.     {
  360.         if (in_array(1786,$post) && in_array(1787,$post)){
  361.             return 1788;
  362.         }elseif(in_array(1786,$post)){
  363.             return 1786;
  364.         }elseif(in_array(1787,$post)){
  365.             return 1787;
  366.         }
  367.         return null;
  368.     }
  369. }