<?php
namespace App\Controller;
use App\Bitrix\CRest;
use App\Entity\Menu;
use App\Entity\Order;
use App\Entity\Page;
use App\Entity\PageBlock;
use App\Service\SmsService;
use Doctrine\Persistence\ManagerRegistry;
use Mpdf\Mpdf;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class BaseController extends AbstractController
{
public function header(ManagerRegistry $doctrine, $route, $request, $action = null): Response
{
$em = $doctrine->getManager();
$menuItems = $em->getRepository(Menu::class)->findBy(['enabled'=>true, 'parent'=>null], ['sort'=>'ASC']);
$menus = [
'about'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'about']),
'project'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'project']),
'korolev'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'korolev']),
'publications'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'publications']),
'contacts'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'contacts']),
'region'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'o-regione']),
// 'jukovskii'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'jukovskii'])
];
return $this->render('new/base/header.html.twig', [
'items' => $menuItems, 'route'=> $route, 'request' => $request, 'action' => $action, 'menus' => $menus]);
}
public function headerNew(ManagerRegistry $doctrine, $route, $request, $action = null): Response
{
$em = $doctrine->getManager();
$menuItems = $em->getRepository(Menu::class)->findBy(['enabled'=>true, 'parent'=>null], ['sort'=>'ASC']);
$menus = [
'about'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'about']),
'project'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'project']),
'korolev'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'korolev']),
'publications'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'publications']),
'contacts'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'contacts']),
'region'=> $em->getRepository(Page::class)->findOneBy(['slug' => 'o-regione'])
];
return $this->render('new/index/jukovskii_header.html.twig', [
'items' => $menuItems, 'route'=> $route, 'request' => $request, 'action' => $action, 'menus' => $menus]);
}
public function siteSelected(){
return $this->render('base/site_selected.html.twig');
}
#[Route('/map', name: "app_map")]
public function map(){
return $this->render('new/index/map.html.twig');
}
public function modal(ManagerRegistry $doctrine, $modalName){
$modal = $doctrine->getRepository(PageBlock::class)->findOneBy(['name'=>$modalName]);
if ($modal){
return $this->render('new/modals/modal_template.html.twig', ['modal'=> $modal]);
}else{
return new Response();
}
}
#[Route('/order/{orderNumber}', defaults: ['orderNumber' => null])]
public function orderAction(Request $request, \Swift_Mailer $mailer, $orderNumber = null){
if ($orderNumber && $request->getMethod() != 'POST'){
$data = CRest::call(
'crm.deal.get',
[ 'id' => $orderNumber ]
);
if ($data['result']['UF_CRM_1682083532812'] == '1804'){
return $this->redirectToRoute('app_index');
}
}
if ($request->getMethod() == 'POST'){
// ')
$order = new Order();
$order->setCompanyTitle($request->request->get('companyTitle'));
$order->setCompanyInn($request->request->get('inn'));
$order->setCompanyKpp($request->request->get('ogrn'));
$order->setCompanyCity($request->request->get('city'));
$order->setIndustry($request->request->get('a2-5'));
$order->setIndustryDesc($request->request->get('a2-1'));
$order->setProjectType($request->request->get('a2-2'));
$order->setSiteOrBuilding($request->request->get('a3-1'));
$order->setBuyOrRent($request->request->get('a3-2'));
$order->setDirection($request->request->get('a3-3'));
$order->setRemotenessByMkad($request->request->get('a3-4-1'));
$order->setSquareMin(isset($_POST['a4-1-1']) ? $_POST['a4-1-1'] : 0);
$order->setSquareMax(isset($_POST['a4-1-2']) ? $_POST['a4-1-2'] : 0);
$order->setHeightMin(isset($_POST['a4-4-1']) ? $_POST['a4-4-1'] : 0);
$order->setHeightMin(isset($_POST['a4-4-2']) ? $_POST['a4-4-2'] : 0);
// $order->setHeightMin($_POST['a4-4-1']);
// $order->setHeightMax($_POST['a4-4-2']);
$order->setLandAreaMin($request->request->get('a3-5-1'));
$order->setLendAreaMax($request->request->get('a3-5-2'));
$order->setClassZone($request->request->get('a5-1', ''));
$order->setRzd($request->request->get('a6-1'));
$order->setPowerSupply($request->request->get('a7-1-1'));
$order->setGasSupply($request->request->get('a7-2-1'));
$order->setWaterDisposal($request->request->get('a7-4-1'));
$order->setWaterSupply($request->request->get('a7-6-1'));
$order->setWorkPeople($request->request->get('a8-1-1'));
$order->setInvestCount($request->request->get('a9-1'));
$order->setTaxCount($request->request->get('a9-2'));
$order->setPercentSelfMoney($request->request->get('a9-3'));
$order->setAttractingFinancing($request->request->get('a9-4'));
$order->setExportProducts($request->request->get('a10-1'));
$order->setDatePlan($request->request->get('a11-1'));
// $order->setSourceinfo($request->request->get('a12-1'));
$order->setContactFio($request->request->get('a13-1'));
$order->setContactPost($request->request->get('a13-2'));
$order->setContactEmail($request->request->get('a13-4'));
$order->setContactPhone($request->request->get('a13-3'));
$order->setCreated(new \DateTime());
// dump($order);
// exit;
$this->getDoctrine()->getManager()->persist($order);
$this->getDoctrine()->getManager()->flush($order);
$array = $request->request->all();
$time = time();
$filename = '/pdf/'.$time.'.pdf';
$company = CRest::call(
'crm.company.add',
['FIELDS' => [
'TITLE' => $_POST['companyTitle'] ,
'COMPANY_TYPE' => 'COSTOMER' ,
]
]
);
$fip = explode(' ', $_POST['a13-1']);
$client = CRest::call(
'crm.contact.add',
['FIELDS' => [
'LAST_NAME' => (isset($fip[0]) ? $fip[0] : '') ,
'NAME' => (isset($fip[1]) ? $fip[1] : '') ,
'SECOND_NAME' => (isset($fip[2]) ? $fip[2] : '') ,
'POST' => $_POST['a13-2'] ,
'COMPANY_ID' => $company['result'] ,
'PHONE' => ['0' => ['VALUE' => $_POST['a13-3'], 'VALUE_TYPE' => 'WORK' ]],
'EMAIL' => ['0' => ['VALUE' => $_POST['a13-4'], 'VALUE_TYPE' => 'WORK' ]]
]
]
);
$fields = [
// 1
'CLIENT_ID' => $client['result'],
'COMPANY_ID' => $company['result'],
'TITLE' => $_POST['companyTitle'] ,
// 2
'UF_CRM_1606465800' => htmlspecialchars($request->request->get('a2-1')) ,
'UF_CRM_1670866739817' => htmlspecialchars($request->request->get('a2-2')) ,
// 3
'UF_CRM_1675845053079' => $this->zeml($_POST['a3-1']) ,
'UF_CRM_1606377438' => $_POST['a2-2'] ,
'UF_CRM_1606381074' => $_POST['a2-5'] ,
'UF_CRM_1695918921855' => $_POST['a2-6'] ,
'UF_CRM_1679571797939' => $_POST['a3-2'],
'UF_CRM_1670869181929' => $_POST['a3-3'],
'UF_CRM_1607609497932' => htmlspecialchars(implode(', ', $_POST['a3-4-1'])),
'UF_CRM_1677854515829' => @htmlspecialchars($_POST['a3-5-1']) . ' - ' . @htmlspecialchars($_POST['a3-5-2']),
// 'UF_CRM_1675321766138' => htmlspecialchars($_POST['a3-6']),
// 4
'UF_CRM_1679568817892' => @htmlspecialchars($_POST['a4-1-1']). ' - ' . @htmlspecialchars($_POST['a4-1-2']),
// 'UF_CRM_1675337484117' => htmlspecialchars($_POST['a4-2-1']) . ' - ' . htmlspecialchars($_POST['a4-2-2']),
// 'UF_CRM_1675337493501' => htmlspecialchars($_POST['a4-3-1']) . ' - ' . htmlspecialchars($_POST['a4-3-2']),
'UF_CRM_1675337503316' => @htmlspecialchars($_POST['a4-4-1']) . ' - ' . @htmlspecialchars($_POST['a4-4-2']),
// 5
'UF_CRM_1606467793' => htmlspecialchars($_POST['a5-1']),
'UF_CRM_1671092333590' => ($_POST['a5-1'] == 259 ? '1 000 м' : ($_POST['a5-1'] == 260 ? '500 м' : ($_POST['a5-1'] == 261 ? '100 м' : '50 м' ))) ,
// 'UF_CRM_1675337610212' => htmlspecialchars($_POST['a5-2']) . ' '.htmlspecialchars($_POST['a5-3']),
// 6
'UF_CRM_1675362708976' => $_POST['a6-1'],
'UF_CRM_1606378175' => ($_POST['a6-1'] ? 172 : 173),
// 7
'UF_CRM_1606307259' => $_POST['a7-1-1'],
// 'UF_CRM_1676454782840' => $_POST['a7-1-2'],
// 'UF_CRM_1676454792113' => $_POST['a7-1-3'],
// 'UF_CRM_1676454802581' => $_POST['a7-1-4'],
'UF_CRM_1606307305' => $_POST['a7-2-1'],
// 'UF_CRM_1676454942092' => $_POST['a7-2-2'],
// 'UF_CRM_1676454949378' => $_POST['a7-2-3'],
// 'UF_CRM_1676454956188' => $_POST['a7-2-4'],
'UF_CRM_1607609478634' => $_POST['a7-4-1'],
// 'UF_CRM_1676455787543' => $_POST['a7-4-2'],
// 'UF_CRM_1676455794233' => $_POST['a7-4-3'],
// 'UF_CRM_1676455801248' => $request->request->get('a7-4-4'),
'UF_CRM_1675362597546' => $request->request->get('a7-5-1'),
// 'UF_CRM_1677584791600' => $request->request->get('a7-5-2'),
// 'UF_CRM_1677584801663' => $request->request->get('a7-5-3'),
// 'UF_CRM_1677584809559' => $request->request->get('a7-5-4'),
'UF_CRM_1606307281' => $request->request->get('a7-6-1'),
// 8
'UF_CRM_1606738971379' => $request->request->get('a8-1-1'),
// 9
'OPPORTUNITY' => htmlspecialchars($request->request->get('a9-1')) ,
// Заинтересованность в привлечении финансирования
'UF_CRM_1670869865629' => htmlspecialchars($request->request->get('a9-2')) ,
'UF_CRM_1675363011684' => htmlspecialchars($request->request->get('a9-4')) ,
'UF_CRM_1675848015746' => htmlspecialchars($request->request->get('a9-3')) ,
// 10
'UF_CRM_1675363052446' => htmlspecialchars($request->request->get('a10-1')) ,
// 11
'UF_CRM_1675363070079' => htmlspecialchars($request->request->get('a11-1')) ,
// 12
// 'UF_CRM_1675363093767' => htmlspecialchars($request->request->get('a12-1')) ,
// PDF
'UF_CRM_1678207562009' => 'https://mosregco.ru'.$filename ,
'UF_CRM_1682083532812' => '1804' ,
'UF_CRM_1685378974312' => (new \DateTime())->format('Y-m-d H:i:s'),
];
if (!$orderNumber){
$fields['SOURCE_ID'] = 'Сайт';
}
if ($orderNumber == null){
$result = CRest::call(
'crm.deal.add',
['FIELDS' => $fields]
);
$filename2 = '/pdf-generate/'.$result['result'];
CRest::call(
'crm.deal.update',
[
'ID' => $orderNumber,
'FIELDS' => [
'UF_CRM_1697204561963' => 'https://mosregco.ru'.$filename2 ,
]
]
);
}else{
$result = CRest::call(
'crm.deal.update',
[
'ID' => $orderNumber,
'FIELDS' => $fields
]
);
}
$addcon = CRest::call(
'crm.deal.contact.add',
[
'ID' => $result['result'],
'FIELDS'=> [
'CONTACT_ID'=>$client['result'],
'SORT'=>0,
'PRIMARY'=>true,
]
]
);
$array['orderId'] = ($orderNumber ? $orderNumber : $result['result']);
$path = $this->generatePdf($array, $time);
$order->setBitrixCode($array['orderId']);
$this->getDoctrine()->getManager()->flush();
$mailhtml = $this->renderView('new/mail/order.html.twig', ['order'=>$array, 'path' => $path]);
$message = (new \Swift_Message('Новый запрос формы заявки'))
->setFrom('marketing@mosregco.ru', 'marketing@mosregco.ru')
// ->setFrom('marketing@mosregco.ru', 'marketing@mosregco.ru')
// ->setFrom('test@projectwork.ru', 'test@projectwork.ru')
->setTo(['marketing@mosregco.ru', 't.ershova@mosregco.ru'])
->setBody(
$mailhtml,
'text/html'
);
$mailer->send($message);
if (filter_var($request->request->get('a13-4'), FILTER_VALIDATE_EMAIL)) {
$mailhtml = $this->renderView('new/mail/order_client.html.twig', ['order'=>$array, 'path' => $path]);
$message = (new \Swift_Message('Заявка с сайта КРМО'))
// ->setFrom('test@projectwork.ru', 'test@projectwork.ru')
->setFrom('marketing@mosregco.ru', 'marketing@mosregco.ru')
->setTo($request->request->get('a13-4'))
->setBody(
$mailhtml,
'text/html'
);
@$mailer->send($message);
}
// dump($result);
return $this->render('new/order.html.twig', [ 'data'=> $array ]);
}
return $this->render('new/order.html.twig');
}
#[Route('/order-sms', name: "send_sms", options: ["expose" => true ])]
public function orderSmsAction(Request $request, SmsService $smsService){
$phone = $request->request->get('a13-3');
if (!$phone){
return new JsonResponse('error');
}
$num = rand(1234,9854);
$session = $request->getSession()->set('sms', $num);
// $session->save();
$phone = str_replace(['-',' ','(',')'],'',$phone);
$r = $smsService->smsapi_push_msg_nologin('s.cherkasov@mosregco.ru', 'eKoxZ(e2yxmo', $phone,
"Код: $num", array("sender_name"=>"KRMO"));
return new JsonResponse(['code' => $num]);
}
#[Route('/pdf-generate/{code}')]
public function pdfGenerate($code){
$order = $this->getDoctrine()->getRepository(Order::class)->findOneBy(['bitrixCode'=>$code]);
if (!$order){
echo '<h1>Документ не найден</h1>';
exit;
}
$arguments = array(
'constructorArgs' => ['','', 0, '', 0, 0, 0, 0, 0, 0, 'P'],
'writeHtmlMode' => null, //$mode argument for WriteHTML method
'writeHtmlInitialise' => null, //$mode argument for WriteHTML method
'writeHtmlClose' => null, //$close argument for WriteHTML method
'outputFilename' => null, //$filename argument for Output method
'outputDest' => null, //$dest argument for Output method
'defaultheaderline' => 0, //for header
'defaulfooterline' => 0 //for footer
);
$mpdf = new Mpdf(['mode' => 'utf-8', 'format' => [360, 472]]);
// $mpdfService = $this->container->get('t_fox_mpdf_port.mpdf');
$mpdf->defaultheaderline = 0;
$mpdf->defaultfooterline = 0;
$stylesheet = file_get_contents(__DIR__.'/../../public/assets/bootstrap/dist/css/bootstrap.css');
$mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
$stylesheet = file_get_contents(__DIR__.'/../../public/assets/less/newsite2.css');
$mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
$stylesheet = file_get_contents(__DIR__.'/../../public/assets/less/fonts.css');
$mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
$html = $this->renderView('new/pdf/order_2.html.twig', ['order' => $order]);
$mpdf->WriteHTML($html);
$name = $code.'.pdf';
$mpdf->Output($name,'D');
return $name;
}
private function generatePdf(array $array, $time)
{
$arguments = array(
'constructorArgs' => ['','', 0, '', 0, 0, 0, 0, 0, 0, 'P'],
'writeHtmlMode' => null, //$mode argument for WriteHTML method
'writeHtmlInitialise' => null, //$mode argument for WriteHTML method
'writeHtmlClose' => null, //$close argument for WriteHTML method
'outputFilename' => null, //$filename argument for Output method
'outputDest' => null, //$dest argument for Output method
'defaultheaderline' => 0, //for header
'defaulfooterline' => 0 //for footer
);
$mpdf = new Mpdf(['mode' => 'utf-8', 'format' => [360, 472]]);
// $mpdfService = $this->container->get('t_fox_mpdf_port.mpdf');
$mpdf->defaultheaderline = 0;
$mpdf->defaultfooterline = 0;
$stylesheet = file_get_contents(__DIR__.'/../../public/assets/bootstrap/dist/css/bootstrap.css');
$mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
$stylesheet = file_get_contents(__DIR__.'/../../public/assets/less/newsite.css');
$stylesheet = file_get_contents(__DIR__.'/../../public/assets/less/fonts.css');
$mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
$mpdf->WriteHTML($stylesheet,\Mpdf\HTMLParserMode::HEADER_CSS);
$html = $this->renderView('new/pdf/order.html.twig', ['order' => $array]);
$mpdf->WriteHTML($html);
$name = '/pdf/'.$time.'.pdf';
$mpdf->Output(__DIR__.'/../../public'.$name,'F');
return $name;
}
private function zeml($post)
{
if (in_array(1786,$post) && in_array(1787,$post)){
return 1788;
}elseif(in_array(1786,$post)){
return 1786;
}elseif(in_array(1787,$post)){
return 1787;
}
return null;
}
}