src/Controller/FlexController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use App\Repository\ConferenceRepository;
  8. use Twig\Environment;
  9. use Symfony\Component\HttpFoundation\Session\Session;
  10. use Symfony\Component\HttpFoundation\Cookie;
  11. class FlexController extends AbstractController
  12. {
  13.     var $session;
  14.     var $error;
  15.     var $twig_values;
  16.     var $respond;
  17.     var $db;
  18.     var $soap;
  19.     function __construct(Environment $twig)
  20.     {
  21.         $this->session = new Session();
  22.         //$this->session->start();
  23.         $this->twig_values = new TwigValuesController();
  24.         $this->db = new DBController();
  25.         $this->error $this->session->get("error") ?? "";
  26.         $this->soap = new SoapApiController();
  27.     }
  28.     /**
  29.      * @Route("/", name="homepage")
  30.      */
  31.     public function homepage(Request $requestEnvironment $twig): Response
  32.     {
  33.         $method $request->request->get('method');
  34.         $soap = new SoapApiController();
  35.         switch ($method){
  36.             case "auth":
  37.                 $soap->auth($request$twig);
  38.                 break;
  39.             default:
  40.                 break;
  41.         }
  42.         $new_cont = new NewsController();
  43.         $news $new_cont->getNews();
  44.         $banners $new_cont->getBanners();
  45.         if($this->soap->reLogin($request)) {
  46.             return new Response($twig->render('flex/index.html'$this->twig_values->getTwigTemplate($request) +
  47.                 ["News" => $news"Banners" => $banners]));
  48.         } else {
  49.             return new Response($twig->render('flex/login.html'$this->twig_values->getTwigTemplate($request)));
  50.         }
  51.     }
  52.     /**
  53.      * @Route("/index", name="index")
  54.      */
  55.     public function index(Request $requestEnvironment $twig): Response
  56.     {
  57.         $new_cont = new NewsController();
  58.         $news $new_cont->getNews();
  59.         $banners $new_cont->getBanners();
  60. //        $Token = $this->session->get('Token');
  61. //        $CustomerGUID = $this->session->get("CustomerGUID");
  62. //        $soap = new SoapApiController();
  63. //        $response = $soap->getCustomerAttributes($Token, $CustomerGUID);
  64. //        dump($response);
  65.         if($this->soap->reLogin($request)) {
  66.             return new Response($twig->render('flex/index.html'$this->twig_values->getTwigTemplate($request) +
  67.                 ["News" => $news"Banners" => $banners]));
  68.         } else {
  69.             return new Response($twig->render('flex/login.html'$this->twig_values->getTwigTemplate($request)));
  70.         }
  71.     }
  72.     /**
  73.      * @Route("/carrot_assign_admin", name="carrot_assign_admin")
  74.      */
  75.     function carrot_assign_admin(Request $requestEnvironment $twig){
  76.         $AccessLevel $this->session->get("AccessLevel");
  77.         if($AccessLevel === "demo"){
  78.             $this->respond["status"] = "false";
  79.             $this->respond["error"] = "У демо-доступа ограничены права";
  80.             return new Response($twig->render('flex/respond.html', ["Respond" => $this->getRespond()]));
  81.         }
  82.         $auth_token "app.44452.edff457a6ea7e692b1f1bdd3418c2b1b279aecd1cc91eeed";
  83.         $token $request->request->get("carrot_token") ?? "";
  84.         $conversation_id $request->request->get("conversation_id") ?? "";
  85.         if($token "" || $conversation_id == ""){
  86.             $this->respond["status"] = "false";
  87.             $this->respond["error"] = "Не указаны параметры";
  88.             return new Response($twig->render('flex/respond.html', ["Respond" => $this->getRespond()]));
  89.         }
  90.         // id оператора которому мы хотим назначить диалог. Узнать id оператора можно при редактировании администраторов в разделе: Администраторы
  91.         $manager_info $this->session->get('manager_info');
  92.         $this->respond["status"] = "true";
  93.         //return new Response($twig->render('flex/respond.html', ["Respond" => $this->getRespond()]));
  94.         $operator $manager_info[0]["ChatID"];
  95.         $url 'https://api.carrotquest.io/v1/conversations/'.$conversation_id.'/assign';
  96.         // Делаем post запрос на назначение оператора на диалог в Carrot https://carrotquest.io/developers/endpoints/conversations/assign/
  97. //        $result = file_get_contents($url, false, stream_context_create(array(
  98. //            'http' => array(
  99. //                'method'  => 'POST',
  100. //                'header'  => 'Content-type: application/json',
  101. //                'content' => '{"admin": "'.$operator.'",
  102. //                "auth_token": "'.$token.'"}'
  103. //            )
  104. //        )));
  105.         $result $this->post_api($url, ["admin" => $operator"auth_token" => $auth_token"from_admin" => $operator]);
  106.         $this->respond["result"] = $result;
  107.         return new Response($twig->render('flex/respond.html', ["Respond" => $this->getRespond()]));
  108.     }
  109.     /**
  110.      * @Route("/login", name="login")
  111.      */
  112.     public function login(Environment $twigRequest $request): Response
  113.     {
  114.         if($this->soap->reLogin($request)) {
  115.             return new Response($twig->render('flex/index.html'$this->twig_values->getTwigTemplate($request)));
  116.         } else {
  117.             return new Response($twig->render('flex/login.html'$this->twig_values->getTwigTemplate($request)));
  118.         }
  119.     }
  120.     /**
  121.      * @Route("/change_theme", name="change_theme")
  122.      */
  123.     public function change_theme(Environment $twigRequest $request): Response
  124.     {
  125.         $theme $request->request->get('theme');
  126.         $this->session->set('theme'$theme);
  127.         $this->respond["status"] = true;
  128.         $this->respond["theme"] = $theme;
  129.         $res = new Response($twig->render('flex/respond.html', ["Respond" => $this->getRespond()]));
  130.         $cookie = new Cookie("theme"$theme);
  131.         $res->headers->setCookie($cookie);
  132.         return $res->send();
  133.     }
  134.     /**
  135.      * @Route("/contacts", name="contacts")
  136.      */
  137.     public function contacts(Environment $twigRequest $request): Response
  138.     {
  139.         if($this->soap->reLogin($request)) {
  140.             return new Response($twig->render('flex/contacts.html'$this->twig_values->getTwigTemplate($request)));
  141.         } else {
  142.             return new Response($twig->render('flex/login.html'$this->twig_values->getTwigTemplate($request)));
  143.         }
  144.     }
  145.     /**
  146.      * @Route("/reg", name="reg")
  147.      */
  148.     public function reg(Environment $twigRequest $request): Response
  149.     {
  150.         $reg = [];
  151.         $reg["error"] = "";
  152.         $reg["status"] = "true";
  153.         $reg["reg"] = $request->request->get("reg") ?? "";
  154.         if($reg["reg"] != ""){
  155.             $postfields = [];
  156.             $postfields["user_info"] = [];
  157.             $postfields["user_info"]["name"]["key"] = "Наименование";
  158.             $postfields["user_info"]["name"]["value"] = $request->request->get("name") ?? "";
  159.             $postfields["user_info"]["inn"]["key"] = "ИНН";
  160.             $postfields["user_info"]["inn"]["value"] = $request->request->get("inn") ?? "";
  161.             $postfields["user_info"]["email"]["key"] = "Электронная почта";
  162.             $postfields["user_info"]["email"]["value"] = $request->request->get("email") ?? "";
  163.             $postfields["user_info"]["tel"]["key"] = "Номер телефона";
  164.             $postfields["user_info"]["tel"]["value"] = $request->request->get("tel") ?? "";
  165.             $postfields["user_info"]["contact"]["key"] = "Контактное лицо";
  166.             $postfields["user_info"]["contact"]["value"] = $request->request->get("contact") ?? "";
  167.             $postfields["user_info"]["address"]["key"] = "Фактический адрес";
  168.             $postfields["user_info"]["address"]["value"] = $request->request->get("address") ?? "";
  169.             $postfields["html"] = "";
  170.             foreach ($postfields["user_info"] as $value){
  171.                 $postfields["html"] .= $value["key"].": ".$value["value"]."<br>";
  172.                 //$result = $this->post_api("localhost/email", $postfields);
  173.             }
  174.             $this->db->insert("reg", ["text" => $postfields["html"]]);
  175.             $result $this->post_api("https://".$_SERVER["HTTP_HOST"]."/email"$postfields);
  176.             $postfields["to"] = $postfields["user_info"]["email"]["value"];
  177.             $postfields["html"] = "Спасибо, ваша заявка принята. С вами свяжется менеджер отдела продаж в ближайшее рабочее время.<br><br><strong>Ваши данные:</strong><br>".$postfields["html"];
  178.             $result $this->post_api("https://".$_SERVER["HTTP_HOST"]."/email"$postfields);
  179.             //$result = $this->post_api("localhost/email", $postfields);
  180.             $reg["error"] = "Спасибо, ваша заявка принята. С вами свяжется менеджер отдела продаж в ближайшее рабочее время.";
  181.         }
  182.         if($this->soap->reLogin($request)) {
  183.             return new Response($twig->render('flex/index.html',
  184.                 $this->twig_values->getTwigTemplate($request)
  185.             ));
  186.         } else {
  187.             return new Response($twig->render('flex/reg.html',
  188.                 $this->twig_values->getTwigTemplate($request) + ["Reg" => $reg]
  189.             ));
  190.         }
  191.     }
  192.     /**
  193.      * @Route("/forgot_password", name="forgot_password")
  194.      */
  195.     public function forgot_password(Environment $twigRequest $request): Response
  196.     {
  197.         $reg = [];
  198.         $reg["error"] = "";
  199.         $reg["status"] = "true";
  200.         $reg["reg"] = $request->request->get("reg") ?? "";
  201.         if($reg["reg"] != ""){
  202.             $Login $request->request->get("Login");
  203.             $Mail $request->request->get("Mail");
  204.             $soap = new SoapApiController();
  205.             $result $soap->resetPassword($Login$Mail);
  206.             if(isset($result["return"]["ErrorCode"]) && $result["return"]["ErrorCode"] == 0){
  207.                 $reg["status"] = 'true';
  208.                 $reg["error"] = "Временный пароль отправлен на ваш Email";
  209.             }else{
  210.                 $reg["status"] = 'false';
  211.                 $reg["error"] = $result["return"]["ErrorDescription"] ?? $result["Error"];
  212.             }
  213.         }
  214.         return new Response($twig->render('flex/forgot_password.html',
  215.             $this->twig_values->getTwigTemplate($request) + ["Reg" => $reg]
  216.         ));
  217.     }
  218.     /**
  219.      * @Route("/change_pass_first", name="change_pass_first")
  220.      */
  221.     public function change_pass_first(Environment $twigRequest $request): Response
  222.     {
  223.         $reg = [];
  224.         $reg["error"] = "";
  225.         $reg["status"] = "true";
  226.         $reg["reg"] = $request->request->get("reg") ?? "";
  227.         $password "";
  228.         if($reg["reg"] != ""){
  229.             $Login $this->session->get('Login');
  230.             $Token $this->session->get('Token');
  231.             $OldPassword $request->request->get("oldpass");
  232.             $password $OldPassword;
  233.             $NewPassword $request->request->get("newpass");
  234.             $PassRepeat $request->request->get("passrepeat");
  235.             if($NewPassword != $PassRepeat){
  236.                 $reg["status"] = 'false';
  237.                 $reg["error"] = "Пароли не совпадают";
  238.             }else{
  239.                 $soap = new SoapApiController();
  240.                 $result $soap->changePassword($Token$Login$OldPassword$NewPassword);
  241.                 if(isset($result["return"]["ErrorCode"]) && $result["return"]["ErrorCode"] == 0){
  242.                     $reg["status"] = 'true';
  243.                     $reg["error"] = "Пароль изменен";
  244.                 }else{
  245.                     $reg["status"] = 'false';
  246.                     $reg["error"] = $result["return"]["ErrorDescription"];
  247.                 }
  248.             }
  249.         }
  250.         return new Response($twig->render('flex/change_pass_first.html',
  251.             $this->twig_values->getTwigTemplate($request) + ["Reg" => $reg"password" => $password]
  252.         ));
  253.     }
  254.     /**
  255.      * @Route("/logout", name="logout")
  256.      */
  257.     public function logout(Environment $twigRequest $request): Response
  258.     {
  259.         $this->session->clear();
  260.         $response = new Response($twig->render('flex/login.html'$this->twig_values->getTwigTemplate($request)));
  261.         $response->headers->setCookie(Cookie::create('login'""));
  262.         $response->headers->setCookie(Cookie::create('password'""));
  263.         return $response;
  264.     }
  265.     function getRespond()
  266.     {
  267.         $respond json_encode($this->respondJSON_UNESCAPED_SLASHES JSON_UNESCAPED_UNICODE JSON_FORCE_OBJECT);
  268.         echo $respond;
  269.     }
  270.     function post_api($url$postfields) {
  271.         $ch curl_init();
  272.         curl_setopt($chCURLOPT_URL$url);
  273.         curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  274.         curl_setopt($chCURLOPT_POST1);
  275.         curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($postfields));
  276.         curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  277.         curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
  278. //        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  279.         curl_setopt($chCURLOPT_CONNECTTIMEOUT3);
  280.         $result curl_exec($ch);
  281.         if (curl_errno($ch)) {
  282.             dump(curl_error($ch));
  283.         }
  284.         curl_close($ch);
  285.         return $result;
  286.     }
  287. }