src/Controller/PersonalController.php line 772

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