src/Controller/PersonalController.php line 771

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Entity\Menu;
  7. use App\Entity\LogHistoryRequest;
  8. use App\Entity\User;
  9. use App\Entity\UserToken;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  14. use App\Service\AppApiService;
  15. use App\Entity\AppPersonalAccount;
  16. use App\Entity\MediaObject;
  17. use App\Entity\AppCounterReading;
  18. use App\Entity\ServiceOrderHistory;
  19. use App\Entity\Accounts;
  20. use Symfony\Component\HttpKernel\KernelInterface
  21. class PersonalController extends AbstractController
  22. {
  23.     public $datetime;
  24.     public $entityManager;
  25.     public $passwordEncoder;
  26.     public $appApiService;
  27.     private $kernel;
  28.     public function __construct( ?\DateTimeInterface $datetimeEntityManagerInterface $entityManagerAppApiService $appApiServiceKernelInterface $kernel ){
  29.         $this->datetime $datetime;
  30.         $this->entityManager $entityManager;
  31.         $this->appApiService $appApiService;
  32.         $this->kernel $kernel;
  33.     }
  34.     public function valid($requestFilds$requiredFilds){
  35.         $errors '';
  36.         foreach($requiredFilds as $f){
  37.             if(!isset($requestFilds[$f]))
  38.                 $errors .= $f"
  39.         }
  40.         return $errors;
  41.     }
  42.     public function logHistory($id$method$data){
  43.         if(!$id){
  44.             $LogHistoryRequest = new LogHistoryRequest();
  45.             $LogHistoryRequest->setMethod($method);
  46.             $LogHistoryRequest->setRequest($data);
  47.             $LogHistoryRequest->setDate($this->datetime);
  48.             $LogHistoryRequest->setStatus('start');
  49.             $this->entityManager->persist($LogHistoryRequest);
  50.             $this->entityManager->flush();
  51.             return $LogHistoryRequest->getId();
  52.         }else{
  53.             $LogHistoryRequest $this->entityManager->getRepository(LogHistoryRequest::class)->findOneBy(['id' => $id]);
  54.             if($LogHistoryRequest){
  55.                 $LogHistoryRequest->setStatus('finish');
  56.                 $LogHistoryRequest->setResponseAnswer($data);
  57.                 $this->entityManager->persist($LogHistoryRequest);
  58.                 $this->entityManager->flush();
  59.             }
  60.             return true;
  61.         }
  62.         
  63.     }
  64.     
  65.     #[Route('/api/create-personal-account-bot'name'createPersonalAccountBot')]
  66.     public function createPersonalAccountBot(Request $request)
  67.     {
  68.         $data json_decode($request->getContent(), true);
  69.         $logId $this->logHistory(false'createPersonalAccountBot'$data);
  70.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "\n\n\n" .  print_r($datatrue) . "\n"FILE_APPEND);
  71.         $valid $this->valid$data, ['accounts''method''owner'] );
  72.         if( empty($valid) ){
  73.             file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "1111111111111\n"FILE_APPEND);
  74.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
  75.             if($find){
  76.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "2222222222222\n"FILE_APPEND);
  77.                 $resultAccounts = [];
  78.                 foreach($data['accounts'] as $value){
  79.                     $number array_key_first($value);
  80.                     $name $value[$number];
  81.                     file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "\n\n\n" .  print_r($nametrue) . "\n"FILE_APPEND);
  82.                     $resultAccounts[$number] = false;
  83.                     $data = [
  84.                         'account' => $number
  85.                     ];
  86.                     $res json_decode$this->appApiService->account_all_data($data) , true );  
  87.                     if(isset($res['rez']) AND $res['rez'] == 1){
  88.                         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',   print_r($restrue)  . "\n"FILE_APPEND);
  89.                         if(isset($res['data']) AND count($res['data']) > 0){
  90.                             $name = (!empty($name)) ? $name $number;
  91.                             $accounts $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $number]);
  92.                             if(!$accounts){
  93.                                 $accounts = new Accounts();
  94.                                 $accounts->setNumber($number);
  95.                                 $accounts->setEic($res['data'][0]['eic_kod']);
  96.                                 $this->entityManager->persist($accounts);
  97.                                 $this->entityManager->flush();
  98.                             }
  99.                             $personal = new AppPersonalAccount();
  100.                             $personal->setOwner($find);
  101.                             $personal->setNumber($number);
  102.                             $personal->setName($name);
  103.                             $personal->setNumberOfScale((int) $res['data'][0]['number_of_scale']);
  104.                             $personal->setActive(true);
  105.                             $personal->setIsMain(true);
  106.                             $personal->setFullAddress($res['data'][0]['name']);
  107.                             $personal->setCity($res['data'][0]['city_name']);
  108.                             $personal->setStreet($res['data'][0]['street_name']);
  109.                             $personal->setBuilding($res['data'][0]['building_name']);
  110.                             // $personal->setRoom($res['room']);
  111.                             $personal->setMainFullAddress($res['data'][0]['name']);
  112.                             $personal->setEic($res['data'][0]['eic_kod']);
  113.                             $personal->setDateEntered($this->datetime);
  114.                             $personal->setType('person');
  115.                             $personal->setAccounts($accounts);
  116.                             $this->entityManager->persist($personal);
  117.                             $this->entityManager->flush();
  118.                             $resultAccounts[$number] = true;
  119.                         }
  120.                     }  
  121.                     $rez = [
  122.                         'registered' => true,
  123.                         'registerAccounts' => $resultAccounts
  124.                     ];
  125.                 }
  126.             }else{
  127.                 $rez = ['registered' => false];
  128.             }
  129.         }else{
  130.             $rez = ['registered' => false'error' => "Не задано поля: $valid"];
  131.         }
  132.         $response = new JsonResponse();
  133.         $response->setData($rez);
  134.         $this->logHistory($logId'check-user'$rez);
  135.         return $response;
  136.     }
  137.     #[Route('/api/create-personal-account'name'createPersonalAccount')]
  138.     public function createPersonalAccount(Request $request)
  139.     {
  140.         $data json_decode($request->getContent(), true);
  141.         $logId $this->logHistory(false'createPersonalAccount'$data);
  142.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "\n\n\n" .  print_r($datatrue) . "\n"FILE_APPEND);
  143.         $valid $this->valid$data, ['account''method''value'] );
  144.         if( empty($valid) ){
  145.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
  146.             if($find){
  147.                 $data = ['account' => $data['account'], 'app_user_id' => $find->getId(), 'check_method' => $data['method'], 'check_value' => $data['value'], 'name' => $data['name']];
  148.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($datatrue) . "\n"FILE_APPEND);
  149.                 $res json_decode$this->appApiService->checkPersonalAccount($data) , true );
  150.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($restrue) . "\n"FILE_APPEND);
  151.                 $name = (!empty($data['name'])) ? $data['name'] : $data['account'];
  152.                 // var_dump($res); die;
  153.                 if(isset($res['account_ok']) AND $res['account_ok'] ){
  154.                     $accounts $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $data['account']]);
  155.                     if(!$accounts){
  156.                         $accounts = new Accounts();
  157.                         $accounts->setNumber($data['account']);
  158.                         $accounts->setEic($data['eic']);
  159.                         $this->entityManager->persist($accounts);
  160.                         $this->entityManager->flush();
  161.                     }
  162.                     $personal = new AppPersonalAccount();
  163.                     $personal->setOwner($find);
  164.                     $personal->setNumber($data['account']);
  165.                     $personal->setName($name);
  166.                     $personal->setNumberOfScale((int) $res['number_of_scale']);
  167.                     $personal->setActive(true);
  168.                     $personal->setIsMain(true);
  169.                     $personal->setFullAddress($res['full_address']);
  170.                     $personal->setCity($res['city']);
  171.                     $personal->setStreet($res['street']);
  172.                     $personal->setBuilding($res['building']);
  173.                     $personal->setRoom($res['room']);
  174.                     $personal->setMainFullAddress($res['full_address']);
  175.                     $personal->setEic($res['eic']);
  176.                     $personal->setDateEntered($this->datetime);
  177.                     $personal->setType('person');
  178.                     $personal->setAccounts($accounts);
  179.                     $this->entityManager->persist($personal);
  180.                     $this->entityManager->flush();
  181.                     $rez = [
  182.                         'registered' => true,
  183.                         'id' => $personal->getId(),
  184.                         'name' => $personal->getName(),
  185.                         'number' => $personal->getNumber(),
  186.                         'numberOfScale' => $personal->getNumberOfScale(),
  187.                         'fullAddress' => $personal->getFullAddress(),
  188.                         'city' => $personal->getCity(),
  189.                         'street' => $personal->getStreet(),
  190.                         'building' => $personal->getBuilding(),
  191.                         'room' => $personal->getRoom(),
  192.                         'mainFullAddress' => $personal->getMainFullAddress(),
  193.                         'account' => [
  194.                             'statusLight' => $accounts->getStatusLight(),
  195.                             'statusPlanning' => $accounts->getStatusPlanning(),
  196.                         ]
  197.                     ];
  198.                 }else{
  199.                     $rez = ['registered' => false$res];
  200.                 }
  201.             }else{
  202.                 $rez = ['registered' => false];
  203.             }
  204.         }else{
  205.             $rez = ['registered' => false'error' => "Не задано поля: $valid"];
  206.         }
  207.         
  208.         
  209.     
  210.         $response = new JsonResponse();
  211.         $response->setData($rez);
  212.         $this->logHistory($logId'check-user'$rez);
  213.         return $response;
  214.     }
  215.     #[Route('/api/create-personal-account_test'name'createPersonalAccountTest')]
  216.     public function createPersonalAccountTest(Request $request)
  217.     {
  218.         $data json_decode($request->getContent(), true);
  219.         // $data = ['account' => '0900015104', 'check_method' => 'by_name', 'check_value' => 'Подолюк'];
  220.         $res json_decode$this->appApiService->checkPersonalAccount($data) , true );
  221.         var_dump($res); die;
  222.         
  223.     }
  224.     #[Route('/api/check-light'name'check_light')]
  225.     public function check_light(Request $request)
  226.     {
  227.         $data json_decode($request->getContent(), true);
  228.         $logId $this->logHistory(false'check_light'$data);
  229.         $valid $this->valid$data, ['account''user'] );
  230.         if( empty($valid) ){
  231.             $data =  [
  232.                     'method' => 'check-light',
  233.                     'data' => [
  234.                         'account' => $data['account'],
  235.                         // 'eic'     => '36457',
  236.                 ],
  237.             ];
  238.             $rezult json_decode$this->appApiService->get($data) , true );
  239.             file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($rezulttrue) . "\n"FILE_APPEND);
  240.             if($rezult['rez']){
  241.                 $rez = [
  242.                     'rezult' => true
  243.                     'іs_included_disconnection_task' => (isset( $rezult['іs_included_disconnection_task']) ) ? $rezult['іs_included_disconnection_task'] : 0,
  244.                     'reazon' => (isset( $rezult['reazon']) ) ? $rezult['reazon'] : ''
  245.                     'reazon_yur' => (isset( $rezult['reazon_yur']) ) ? $rezult['reazon_yur']: ''    ,
  246.                     'owner_adress' => $rezult['owner_adress'],
  247.                     'light' => $rezult['light'],
  248.                     'date' => $rezult['date'],
  249.                     'diff_eic_count' => $rezult['diff_eic_count'],
  250.                     'eic' => $rezult['eic'],
  251.                     'dno_id' => $rezult['dno_id'],
  252.                     'disconnect_warning_guid' =>  (isset( $rezult['disconnect_warning_guid']))?$rezult['disconnect_warning_guid'] : '',
  253.                 ];   
  254.             }else{
  255.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  256.             }
  257.         }else{
  258.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  259.         }
  260.         $response = new JsonResponse();
  261.         $response->setData($rez);
  262.         $this->logHistory($logId'check-user'$rez);
  263.         return $response;
  264.     }
  265.     #[Route('/api/get-group-gpv'name'get_group_gpv')]
  266.     public function get_group_gpv(Request $request)
  267.     {
  268.         $data json_decode($request->getContent(), true);
  269.         $logId $this->logHistory(false'get_group_gpv'$data);
  270.         $valid $this->valid$data, ['account''user'] );
  271.         if( empty($valid) ){
  272.             $data =  [
  273.                     'method' => 'get-group-gpv',
  274.                     'data' => [
  275.                         'account' => $data['account'],
  276.                         // 'eic'     => '36457',
  277.                 ],
  278.             ];
  279.             $rezult json_decode$this->appApiService->get($data) , true );
  280.             if($rezult['rez']){
  281.                 $rez = [
  282.                     'rezult' => true
  283.                     'rem_name' => $rezult['rem_name'],
  284.                     'odg_name' => $rezult['odg_name'],
  285.                     'cherg_gav' => $rezult['cherg_gav'],
  286.                     'cherg_achr' => $rezult['cherg_achr'],
  287.                     'cherg_gvsp' => $rezult['cherg_gvsp'],
  288.                     'cherg_sgav' => $rezult['cherg_sgav'],
  289.                     'cherg_gpv' => $rezult['cherg_gpv'],
  290.                 ];   
  291.             }else{
  292.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  293.             }
  294.         }else{
  295.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  296.         }
  297.         $response = new JsonResponse();
  298.         $response->setData($rez);
  299.         $this->logHistory($logId'check-user'$rez);
  300.         return $response;
  301.     }
  302.     #[Route('/api/get-scheduled-works'name'get_scheduled_works')]
  303.     public function get_scheduled_works(Request $request)
  304.     {
  305.         $data json_decode($request->getContent(), true);
  306.         $logId $this->logHistory(false'get_group_gpv'$data);
  307.         $valid $this->valid$data, ['account''user'] );
  308.         if( empty($valid) ){
  309.             $data =  [
  310.                     'method' => 'get-scheduled-works',
  311.                     'data' => [
  312.                         'account' => $data['account'],
  313.                         // 'eic'     => '36457',
  314.                 ],
  315.             ];
  316.             $rezult json_decode$this->appApiService->get($data) , true );
  317.             if($rezult['rez']){
  318.                 $rez = [
  319.                     'rezult' => true
  320.                     'message' => $rezult['message'],
  321.                     'works' => $rezult['works'],
  322.                 ];   
  323.             }else{
  324.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  325.             }
  326.         }else{
  327.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  328.         }
  329.         $response = new JsonResponse();
  330.         $response->setData($rez);
  331.         $this->logHistory($logId'check-user'$rez);
  332.         return $response;
  333.     }
  334.     #[Route('/api/set-low-quality-voltage'name'set_low_quality_voltage')]
  335.     public function set_low_quality_voltage(Request $request)
  336.     {
  337.         // echo '<pre>';
  338.         $data json_decode($request->getContent(), true);
  339.         // $data = [
  340.         //     'user' => 31,
  341.         //     'account' => '0900015104',
  342.         //     'phone' => '380xxxxxxxxx',
  343.         //     'voltage' => '123',
  344.         //     'voltage_susidy' => 'Так',
  345.         //     'media' => 2
  346.         //     // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
  347.         // ];
  348.         $logId $this->logHistory(false'set_low_quality_voltage'$data);
  349.         
  350.         
  351.         $valid $this->valid$data, ['account''user''phone''voltage''voltage_susidy''media'] );
  352.         if( empty($valid) ){
  353.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  354.             if($find){
  355.                 $mediaObject $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
  356.                 if (!$mediaObject) {
  357.                     return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
  358.                 }
  359.                 // Отримуємо шлях до файлу
  360.                 // $filePath = 'https://api-app.de-svitlo.com.ua' .$mediaObject->getFullPath() ;
  361.                 $filePath $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  362.                 // echo "<br> $filePath <br>";
  363.                 $permission json_decode$this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true); 
  364.                 if(!$permission['rez'] AND $permission['dozvil'] !== true){
  365.                     // print_r( $permission); die;
  366.                     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  367.                 }
  368.                 // var_dump( $permission);
  369.                 // die;
  370.                 $data =  [
  371.                     'app_user_id' => $find->getId(),
  372.                     'account' => $data['account'],
  373.                     'phone' => $data['phone'],
  374.                     'voltage' => $data['voltage'],
  375.                     'voltage_susidy' => $data['voltage_susidy'],
  376.                     'imageFile' => new \CURLFile$filePath ),
  377.                 ];
  378.                 $rezult json_decode$this->appApiService->set_low_quality_voltage($data) , true );
  379.                 if($rezult['rez']){
  380.                     $rez = [
  381.                         'rezult' => true
  382.                         'message' => 'Дані відправлено!',
  383.                         // 'account' => $rezult['account'],
  384.                     ];   
  385.                 }else{
  386.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  387.                 }
  388.             }else{
  389.                 $rez = ['rezult' => false'error' => "Користувача не знайдено!"];   
  390.             }
  391.         }else{
  392.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  393.         }
  394.         $response = new JsonResponse();
  395.         $response->setData($rez);
  396.         $this->logHistory($logId'check-user'$rez);
  397.         return $response;
  398.     }
  399.     #[Route('/api/service-order'name'service_order')]
  400.     public function service_order(Request $request)
  401.     {
  402.         // echo '<pre>';
  403.         $data json_decode($request->getContent(), true);
  404.         // $data = [
  405.         //     'user' => 31,
  406.         //     'account' => '0900015104',
  407.         //     'phone' => '380xxxxxxxxx',
  408.         //     'service_code' => '9',
  409.         //     'description' => 'Так',
  410.         //     'media' => [4,5,6]
  411.         //     // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
  412.         // ];
  413.         $logId $this->logHistory(false'service-order'$data);
  414.         
  415.         if(isset($data['service_code']) AND (  $data['service_code'] == 63  OR $data['service_code'] == 10 ))
  416.             $valid $this->valid$data, ['account''user''phone''service_code''description''pdf'] );
  417.         else 
  418.             $valid $this->valid$data, ['account''user''phone''service_code''description''media''pdf'] );
  419.         if( empty($valid) ){
  420.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  421.             if($find){
  422.                 if($data['service_code'] != 63 AND $data['service_code'] != 10){
  423.                 // $mediaObject = $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
  424.                     $mediaObjects $this->entityManager->getRepository(MediaObject::class)->findBy(['id' => $data['media']]);
  425.                     if (!$mediaObjects) {
  426.                         return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
  427.                     }
  428.                 }
  429.                 $pdf = (!empty($data['pdf'])) ? $data['pdf']: false;
  430.                 $data =  [
  431.                     'account' => $data['account'],
  432.                     'app_user_id' => $find->getId(),
  433.                     'phone' => $data['phone'],
  434.                     'service_code' => $data['service_code'],
  435.                     'description' => $data['description'],
  436.                     // 'imageFile' => new \CURLFile( $filePath ),
  437.                 ];
  438.                 $i 1;
  439.                 if($data['service_code'] != 63 AND $data['service_code'] != 10)
  440.                     foreach($mediaObjects as $k => $mediaObject){
  441.                         $i $k 1;
  442.                         $filePath $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  443.                         $data["imageFile$i"] = new \CURLFile$filePath );
  444.                     }
  445.                 if($pdf){
  446.                     if(isset($data["imageFile$i"]))
  447.                         ++$i;
  448.                     $data["imageFile$i"] = new \CURLFile$this->kernel->getProjectDir() . '/public' $pdf );
  449.                 }
  450.                 // $filePath = $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  451.                 // echo "<br> $filePath <br>";
  452.                 // $permission = json_decode( $this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true); 
  453.                 // if(!$permission['rez'] AND $permission['dozvil'] !== true){
  454.                 //     // print_r( $permission); die;
  455.                 //     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  456.                 // }
  457.                 // var_dump( $permission);
  458.                 // die;
  459.                 // $data =  [
  460.                 //     'account' => $data['account'],
  461.                 //     'phone' => $data['phone'],
  462.                 //     'voltage' => $data['voltage'],
  463.                 //     'voltage_susidy' => $data['voltage_susidy'],
  464.                 //     'imageFile' => new \CURLFile( $filePath ),
  465.                 // ];
  466. /*
  467. const serviceCodesArr = [
  468.       { service_code: 9, label: "Встановлення зонного лічильника" },
  469.       { service_code: 10, label: "Лічильник не працює" },
  470.       { service_code: 21, label: "Неправильний показ" },
  471.       { service_code: 32, label: "Зміна власника" },
  472.       { service_code: 35, label: "Підключення електроустановок замовника після виконання ТУ" },
  473.       { service_code: 63, label: "Звернення щодо підозри на крадіжку" },
  474.       { service_code: 79, label: "Заміна автоматичного вимикача, який опломбований ОСР" },
  475.       { service_code: 85, label: "Відсутність пломб на засобі обліку" },
  476.       { service_code: 86, label: "Закриття особового рахунку" },
  477.    ];
  478. */
  479.                 $orderNames = [
  480.                     =>  "Встановлення зонного лічильника",
  481.                     10 =>  "Лічильник не працює",
  482.                     21 =>  "Неправильний показ",
  483.                     32 =>  "Зміна власника",
  484.                     35 =>  "Підключення електроустановок замовника після виконання ТУ",
  485.                     63 =>  "Звернення щодо підозри на крадіжку",
  486.                     79 =>  "Заміна автоматичного вимикача, який опломбований ОСР",
  487.                     85 =>  "Відсутність пломб на засобі обліку",
  488.                     86 =>  "Закриття особового рахунку",
  489.                 ];
  490.                 foreach($find->getAppPersonalAccounts() as $acc){
  491.                     if($acc->getNumber() == $data['account'])
  492.                         $account $acc;
  493.                 }
  494.                 if($account){
  495.                     $ServiceOrderHistory = new ServiceOrderHistory();
  496.                     $ServiceOrderHistory->setName($orderNames[$data['service_code']]);
  497.                     // $ServiceOrderHistory->setRequest($data);
  498.                     $ServiceOrderHistory->setDateEntered( new \DateTime() );
  499.                     $ServiceOrderHistory->setType($data['service_code']);
  500.                     $ServiceOrderHistory->setStatus('new');
  501.                     $ServiceOrderHistory->setPersonalAccount($account);
  502.                     if($pdf)
  503.                         $ServiceOrderHistory->setPdf(  $pdf );
  504.                     $ServiceOrderHistory->setPersonalAccount($account);
  505.                     $this->entityManager->persist($ServiceOrderHistory);
  506.                     $this->entityManager->flush();
  507.                     $data["id"] = $ServiceOrderHistory->getId();
  508.                 }
  509.                 $rezult json_decode$this->appApiService->service_order($data) , true );
  510.                 if($rezult['rez']){
  511.                     $account false;
  512.                     
  513.                     $rez = [
  514.                         'rezult' => true
  515.                         'message' => 'Дані відправлено!',
  516.                         // 'account' => $rezult['account'],
  517.                     ];   
  518.                 }else{
  519.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  520.                 }
  521.             }else{
  522.                 $rez = ['rezult' => false'error' => "Користувача не знайдено!"];   
  523.             }
  524.         }else{
  525.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  526.         }
  527.         $response = new JsonResponse();
  528.         $response->setData($rez);
  529.         $this->logHistory($logId'check-user'$rez);
  530.         return $response;
  531.     }
  532.     #[Route('/api/set-broken-lines'name'set_broken_lines')]
  533.     public function set_broken_lines(Request $request)
  534.     {
  535.         // echo '<pre>';
  536.         $data json_decode($request->getContent(), true);
  537.         // $data = [
  538.         //     'user' => 31,
  539.         //     'account' => '0900015104',
  540.         //     'phone' => '380xxxxxxxxx',
  541.         //     'voltage' => '123',
  542.         //     'voltage_susidy' => 'Так',
  543.         //     'media' => 2,
  544.         //     'lat' => '1111',
  545.         //     'lon' => '2222',
  546.         //     'reason_type' => '22',
  547.         //     'address' => '222',
  548.         //     // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
  549.         // ];
  550.         $logId $this->logHistory(false'set_broken_lines'$data);
  551.         
  552.         
  553.         $valid $this->valid$data, ['reason_type''user''phone''address''lat''lon'] );
  554.         if( empty($valid) ){
  555.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  556.             if($find){
  557.                 if(isset($data['media'])){
  558.                     $mediaObject $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
  559.                     if (!$mediaObject) {
  560.                         return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
  561.                     }
  562.                     // Отримуємо шлях до файлу
  563.                     // $filePath = 'https://api-app.de-svitlo.com.ua' .$mediaObject->getFullPath() ;
  564.                     $filePath $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  565.                 }
  566.                 // echo "<br> $filePath <br>";
  567.                 $permission json_decode$this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true); 
  568.                 if(!$permission['rez'] AND $permission['dozvil'] !== true){
  569.                     // print_r( $permission); die;
  570.                     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  571.                 }
  572.                 // var_dump( $permission);
  573.                 // die;
  574.                 $data =  [
  575.                     'phone' => $data['phone'],
  576.                     'app_user_id' => $find->getId(),
  577.                     'reason_type' => $data['reason_type'],
  578.                     'address' => $data['address'],
  579.                     'lat' => $data['lat'],
  580.                     'lon' => $data['lon'],
  581.                     // 'imageFile' => new \CURLFile( $filePath ),
  582.                 ];
  583.                 if(isset($filePath))
  584.                     $data['imageFile'] = new \CURLFile$filePath );
  585.                 $rezult json_decode$this->appApiService->set_broken_lines($data) , true );
  586.                 
  587.                 if($rezult['rez']){
  588.                     $rez = [
  589.                         'rezult' => true
  590.                         'message' => 'Дані відправлено!',
  591.                         // 'account' => $rezult['account'],
  592.                     ];   
  593.                 }else{
  594.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  595.                 }
  596.             }else{
  597.                 $rez = ['rezult' => false'error' => "Користувача не знайдено!"];   
  598.             }
  599.         }else{
  600.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  601.         }
  602.         $response = new JsonResponse();
  603.         $response->setData($rez);
  604.         $this->logHistory($logId'check-user'$rez);
  605.         return $response;
  606.     }
  607.     #[Route('/api/get-last-meter-readings'name'get_last_meter_readings')]
  608.     public function get_last_meter_readings(Request $request)
  609.     {
  610.         // echo '<pre>';
  611.         $data json_decode($request->getContent(), true);
  612.         // $data = [
  613.         //     'user' => 31,
  614.         //     'account' => '0900015104',
  615.         // ];
  616.         $logId $this->logHistory(false'get_last_meter_readings'$data);
  617.         
  618.         
  619.         $valid $this->valid$data, ['account''user'] );
  620.         if( empty($valid) ){
  621.            
  622.             $data = [
  623.                 'method' => 'get-last-meter-readings',
  624.                 'data' => [
  625.                     'account' => $data['account'],
  626.                 ],
  627.             ]; 
  628.             $rezult json_decode$this->appApiService->get($data) , true );
  629.             if($rezult['rez']){
  630.                 $rez = [
  631.                     'rezult' => true
  632.                     'date_on' => $rezult['date_on'],
  633.                     'reading1' => $rezult['reading1'],
  634.                     'reading2' => $rezult['reading2'],
  635.                     'reading3' => $rezult['reading3'],
  636.                     // 'account' => $rezult['account'],
  637.                 ];   
  638.             }else{
  639.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  640.             }
  641.         }else{
  642.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  643.         }
  644.         $response = new JsonResponse();
  645.         $response->setData($rez);
  646.         $this->logHistory($logId'check-user'$rez);
  647.         return $response;
  648.     }
  649.     #[Route('/api/cron-set-meter-readings'name'cron_set_meter_readings')]
  650.     public function cron_set_meter_readings(Request $request)
  651.     {
  652.         $AppCounterReading $this->entityManager->getRepository(AppCounterReading::class)->findBy(['status' => 'new']);
  653.         $i 0;
  654.         foreach($AppCounterReading as $counterReding){
  655.             $p =  $counterReding->getPersonal()->getOwner()->getPhone();
  656.             $p str_replace('+'''$p);
  657.             $data =  [
  658.                 'method' => 'set-meter-readings',
  659.                 'data' => [
  660.                     'phone' => $p,
  661.                     'app_user_id' => $counterReding->getPersonal()->getOwner()->getId(),
  662.                     'account' => $counterReding->getPersonal()->getNumber(),
  663.                     'number_of_scale' => $counterReding->getPersonal()->getNumberOfScale(),
  664.                     'reading1' => $counterReding->getValue(),
  665.                     'reading2' => $counterReding->getValue2(),
  666.                     'reading3' => $counterReding->getValue3(),
  667.                 ]
  668.             ];
  669.             $rezult json_decode$this->appApiService->get($data) , true );
  670.             file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'print_r($rezulttrue) . "\n"FILE_APPEND);
  671.             if($rezult['rez']){
  672.                 $counterReding->setStatus('complate');
  673.                 $this->entityManager->persist($counterReding);
  674.                 $this->entityManager->flush();
  675.                 $i++;  
  676.             }else{
  677.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  678.             }
  679.         }
  680.        
  681.        
  682.        
  683.        
  684.         $rez = ['count' => count($AppCounterReading)];
  685.         $response = new JsonResponse();
  686.         $response->setData($rez);
  687.         return $response;
  688.     }
  689.     #[Route('/api/set-meter-readings'name'set_meter_readings')]
  690.     public function set_meter_readings(Request $request)
  691.     {
  692.    
  693.         $data json_decode($request->getContent(), true);
  694.         $logId $this->logHistory(false'set_meter_readings'$data);
  695.         
  696.         
  697.         $valid $this->valid$data, ['account''user''number_of_scale''reading1''reading2''reading3'] );
  698.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'"************set-meter-readings****************\n"FILE_APPEND);
  699.         if( empty($valid)  ){
  700.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  701.             if($find){
  702.                 $data =  [
  703.                     'method' => 'set-meter-readings',
  704.                     'data' => [
  705.                         'phone' => $find->getPhone(),
  706.                         'app_user_id' => $find->getId(),
  707.                         'account' => $data['account'],
  708.                         'number_of_scale' => $data['number_of_scale'],
  709.                         'reading1' => $data['reading1'],
  710.                         'reading2' => $data['reading2'],
  711.                         'reading3' => $data['reading3'],
  712.                     ]
  713.                 ];
  714.                 $rezult json_decode$this->appApiService->get($data) , true );
  715.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'print_r($rezulttrue) . "\n"FILE_APPEND);
  716.                 if($rezult['rez']){
  717.                     $rez = [
  718.                         'rezult' => true
  719.                         'message' => 'Дані відправлено!',
  720.                     ];   
  721.                 }else{
  722.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  723.                 }
  724.             }else{
  725.                 $rez = ['rezult' => false'error' => 'Користувача не знайдено!'];   
  726.             }
  727.         }else{
  728.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  729.         }
  730.         $response = new JsonResponse();
  731.         $response->setData($rez);
  732.         $this->logHistory($logId'check-user'$rez);
  733.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'"************set-meter-readings END ****************\n"FILE_APPEND);
  734.         return $response;
  735.     }
  736.     #[Route('/api/set-no-light-request'name'set_no_light_request')]
  737.     public function set_no_light_request(Request $request)
  738.     {
  739.         // echo '<pre>';
  740.         $data json_decode($request->getContent(), true);
  741.         // $data = [
  742.         //     'user' => 31,
  743.         //     'account' => '0900015104',
  744.         //     'phone' => '380xxxxxxxxx',
  745.         //     'voltage' => '123',
  746.         //     'voltage_susidy' => 'Так',
  747.         //     'media' => 2
  748.         //     // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
  749.         // ];
  750.         $logId $this->logHistory(false'set_no_light_request'$data);
  751.         
  752.         
  753.         $valid $this->valid$data, ['account''eic''user''dno_id''when_off''pib''phone''eic_count'] );
  754.         if( empty($valid) ){
  755.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  756.             if($find){
  757.                 $permission json_decode$this->appApiService->check_last_register_no_power($data['account']) , true); 
  758.                 if(!$permission['rez'] AND $permission['dozvil'] !== true){
  759.                     // print_r( $permission); die;
  760.                     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  761.                 }
  762.                 // var_dump( $permission);
  763.                 // die;
  764.                 $data =  [
  765.                     'method' => 'set-no-light-request',
  766.                     'data' => [
  767.                         'account' => $data['account'],
  768.                         'app_user_id' => $find->getId(),
  769.                         'eic' => $data['eic'],
  770.                         'dno_id' => $data['dno_id'],
  771.                         'when_off' => $data['when_off'],
  772.                         'pib' => $data['pib'],
  773.                         'phone' => $data['phone'],
  774.                         'eic_count' => $data['eic_count'],
  775.                     ],
  776.                 ];
  777.                 $rezult json_decode$this->appApiService->get($data) , true );
  778.                 if($rezult['rez']){
  779.                     $rez = [
  780.                         'rezult' => true
  781.                         'message' => 'Дані відправлено!',
  782.                         // 'account' => $rezult['account'],
  783.                     ];   
  784.                 }else{
  785.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  786.                 }
  787.             }else{
  788.                 $rez = ['rezult' => false'error' => 'Користувача не знайдено!'];   
  789.             }
  790.         }else{
  791.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  792.         }
  793.         $response = new JsonResponse();
  794.         $response->setData($rez);
  795.         $this->logHistory($logId'check-user'$rez);
  796.         return $response;
  797.     }
  798.     #[Route('/api/get-all-accounts-by-phone'name'get_all_accounts_by_phone')]
  799.     public function get_all_accounts_by_phone(Request $request)
  800.     {
  801.         $data json_decode($request->getContent(), true);
  802.       
  803.         $logId $this->logHistory(false'get_all_accounts_by_phone'$data);
  804.         
  805.         
  806.         $valid $this->valid$data, ['phone''bot_type'] );
  807.         if( empty($valid) ){
  808.             
  809.             $data =  [
  810.                 'method' => 'get-all-accounts-by-phone',
  811.                 'data' => [
  812.                     'phone' => $data['phone'],
  813.                     'bot_type' => $data['bot_type'],
  814.                 ],
  815.             ];
  816.             $rezult json_decode$this->appApiService->get($data) , true );
  817.             
  818.             if($rezult['rez']){
  819.                 $rez = [
  820.                     'rezult' => true
  821.                     'accounts' => $rezult['accounts']
  822.                 ];   
  823.             }else{
  824.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  825.             }
  826.             
  827.         }else{
  828.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  829.         }
  830.         $response = new JsonResponse();
  831.         $response->setData($rez);
  832.         $this->logHistory($logId'check-user'$rez);
  833.         return $response;
  834.     }
  835.     #[Route('/api/yur-create-personal-account'name'yurCreatePersonalAccount')]
  836.     public function yurCreatePersonalAccount(Request $request)
  837.     {
  838.         $data json_decode($request->getContent(), true);
  839.         $logId $this->logHistory(false'createPersonalAccount'$data);
  840.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "\n\n\n" .  print_r($datatrue) . "\n"FILE_APPEND);
  841.         $valid $this->valid$data, ['eic''edrpou''name''owner'] );
  842.         if( empty($valid) ){
  843.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
  844.             if($find){
  845.                 $data = ['eic' => $data['eic'], 'app_user_id' => $find->getId(), 'edrpou' => $data['edrpou'],'name' => $data['name']];
  846.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($datatrue) . "\n"FILE_APPEND);
  847.                 
  848.                 $res json_decode$this->appApiService->YurCheckPersonalAccount($data) , true );
  849.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($restrue) . "\n"FILE_APPEND);
  850.                 $name = (!empty($data['name'])) ? $data['name'] : $data['eic'];
  851.                 // var_dump($res); die;
  852.                 if(isset($res['rez']) AND $res['rez']  AND $res['correct_data']){
  853.                     $personal = new AppPersonalAccount();
  854.                     $personal->setOwner($find);
  855.                     $personal->setNumber($data['eic']);
  856.                     $personal->setName($name);
  857.                     $personal->setNumberOfScale(0);
  858.                     $personal->setActive(true);
  859.                     $personal->setIsMain(true);
  860.                     $personal->setDateEntered($this->datetime);
  861.                     $personal->setType('factory');
  862.                     $personal->setEic($data['eic']);
  863.                     $this->entityManager->persist($personal);
  864.                     $this->entityManager->flush();
  865.                     foreach($res['data'] as $res_data){
  866.                         $accounts $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $res_data['acc'], 'eic' => $res_data['eic_kod']]);
  867.                         if(!$accounts){
  868.                             $accounts = new Accounts();
  869.                             $accounts->setNumber($res_data['acc']);
  870.                             $accounts->setEic($res_data['eic_kod']);
  871.                             $accounts->setEicParent($res_data['eic_kod_place']);
  872.                             $this->entityManager->persist($accounts);
  873.                             $this->entityManager->flush();
  874.                         }
  875.                         $personalChild = new AppPersonalAccount();
  876.                         $personalChild->setOwner($find);
  877.                         $personalChild->setNumber($res_data['acc']);
  878.                         $personalChild->setName($res_data['name']);
  879.                         $personalChild->setCounter($res_data['counter']);
  880.                         $personalChild->setNumberOfScale(0);
  881.                         $personalChild->setActive(true);
  882.                         $personalChild->setIsMain(false);
  883.                         $personalChild->setDateEntered($this->datetime);
  884.                         $personalChild->setType('factory');
  885.                         $personalChild->setEic($res_data['eic_kod']);
  886.                         $personalChild->setParent($personal);
  887.                         $fullAdresses $res_data['city_name'] . ' ' $res_data['street_name'] . ' ' $res_data['building_name'];
  888.                         $personalChild->setFullAddress($fullAdresses);
  889.                         $personalChild->setCity($res_data['city_name']);
  890.                         $personalChild->setStreet($res_data['street_name']);
  891.                         $personalChild->setBuilding($res_data['building_name']);
  892.                         $personalChild->setMainFullAddress($fullAdresses);
  893.                         $this->entityManager->persist($personalChild);
  894.                         $this->entityManager->flush();
  895.                     }
  896.                     
  897.                     $rez = [
  898.                         'registered' => true,
  899.                         'id' => $personal->getId(),
  900.                         
  901.                     ];
  902.                 }else{
  903.                     $rez = ['registered' => false];
  904.                 }
  905.             }else{
  906.                 $rez = ['registered' => false];
  907.             }
  908.         }else{
  909.             $rez = ['registered' => false'error' => "Не задано поля: $valid"];
  910.         }
  911.         
  912.         
  913.     
  914.         $response = new JsonResponse();
  915.         $response->setData($rez);
  916.         $this->logHistory($logId'check-user'$rez);
  917.         return $response;
  918.     }
  919. }