src/Controller/PersonalController.php line 773

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.         
  417.         if(isset($data['service_code']) AND (  $data['service_code'] == 63  OR $data['service_code'] == 10 ))
  418.             $valid $this->valid$data, ['account''user''phone''service_code''description''pdf'] );
  419.         else 
  420.             $valid $this->valid$data, ['account''user''phone''service_code''description''media''pdf'] );
  421.         if( empty($valid) ){
  422.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  423.             if($find){
  424.                 if($data['service_code'] != 63 AND $data['service_code'] != 10){
  425.                 // $mediaObject = $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
  426.                     $mediaObjects $this->entityManager->getRepository(MediaObject::class)->findBy(['id' => $data['media']]);
  427.                     if (!$mediaObjects) {
  428.                         return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
  429.                     }
  430.                 }
  431.                 $pdf = (!empty($data['pdf'])) ? $data['pdf']: false;
  432.                 $data =  [
  433.                     'account' => $data['account'],
  434.                     'app_user_id' => $find->getId(),
  435.                     'phone' => $data['phone'],
  436.                     'service_code' => $data['service_code'],
  437.                     'description' => $data['description'],
  438.                     // 'imageFile' => new \CURLFile( $filePath ),
  439.                 ];
  440.                 $i 1;
  441.                 if($data['service_code'] != 63 AND $data['service_code'] != 10)
  442.                     foreach($mediaObjects as $k => $mediaObject){
  443.                         $i $k 1;
  444.                         $filePath $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  445.                         $data["imageFile$i"] = new \CURLFile$filePath );
  446.                     }
  447.                 if($pdf){
  448.                     if(isset($data["imageFile$i"]))
  449.                         ++$i;
  450.                     $data["imageFile$i"] = new \CURLFile$this->kernel->getProjectDir() . '/public' $pdf );
  451.                 }
  452.                 // $filePath = $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  453.                 // echo "<br> $filePath <br>";
  454.                 // $permission = json_decode( $this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true); 
  455.                 // if(!$permission['rez'] AND $permission['dozvil'] !== true){
  456.                 //     // print_r( $permission); die;
  457.                 //     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  458.                 // }
  459.                 // var_dump( $permission);
  460.                 // die;
  461.                 // $data =  [
  462.                 //     'account' => $data['account'],
  463.                 //     'phone' => $data['phone'],
  464.                 //     'voltage' => $data['voltage'],
  465.                 //     'voltage_susidy' => $data['voltage_susidy'],
  466.                 //     'imageFile' => new \CURLFile( $filePath ),
  467.                 // ];
  468. /*
  469. const serviceCodesArr = [
  470.       { service_code: 9, label: "Встановлення зонного лічильника" },
  471.       { service_code: 10, label: "Лічильник не працює" },
  472.       { service_code: 21, label: "Неправильний показ" },
  473.       { service_code: 32, label: "Зміна власника" },
  474.       { service_code: 35, label: "Підключення електроустановок замовника після виконання ТУ" },
  475.       { service_code: 63, label: "Звернення щодо підозри на крадіжку" },
  476.       { service_code: 79, label: "Заміна автоматичного вимикача, який опломбований ОСР" },
  477.       { service_code: 85, label: "Відсутність пломб на засобі обліку" },
  478.       { service_code: 86, label: "Закриття особового рахунку" },
  479.    ];
  480. */
  481.                 $orderNames = [
  482.                     =>  "Встановлення зонного лічильника",
  483.                     10 =>  "Лічильник не працює",
  484.                     21 =>  "Неправильний показ",
  485.                     32 =>  "Зміна власника",
  486.                     35 =>  "Підключення електроустановок замовника після виконання ТУ",
  487.                     63 =>  "Звернення щодо підозри на крадіжку",
  488.                     79 =>  "Заміна автоматичного вимикача, який опломбований ОСР",
  489.                     85 =>  "Відсутність пломб на засобі обліку",
  490.                     86 =>  "Закриття особового рахунку",
  491.                 ];
  492.                 foreach($find->getAppPersonalAccounts() as $acc){
  493.                     if($acc->getNumber() == $data['account'])
  494.                         $account $acc;
  495.                 }
  496.                 if($account){
  497.                     $ServiceOrderHistory = new ServiceOrderHistory();
  498.                     $ServiceOrderHistory->setName($orderNames[$data['service_code']]);
  499.                     // $ServiceOrderHistory->setRequest($data);
  500.                     $ServiceOrderHistory->setDateEntered( new \DateTime() );
  501.                     $ServiceOrderHistory->setType($data['service_code']);
  502.                     $ServiceOrderHistory->setStatus('new');
  503.                     $ServiceOrderHistory->setPersonalAccount($account);
  504.                     if($pdf)
  505.                         $ServiceOrderHistory->setPdf(  $pdf );
  506.                     $ServiceOrderHistory->setPersonalAccount($account);
  507.                     $this->entityManager->persist($ServiceOrderHistory);
  508.                     $this->entityManager->flush();
  509.                     $data["id"] = $ServiceOrderHistory->getId();
  510.                 }
  511.                 $rezult json_decode$this->appApiService->service_order($data) , true );
  512.                 if($rezult['rez']){
  513.                     $account false;
  514.                     
  515.                     $rez = [
  516.                         'rezult' => true
  517.                         'message' => 'Дані відправлено!',
  518.                         // 'account' => $rezult['account'],
  519.                     ];   
  520.                 }else{
  521.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  522.                 }
  523.             }else{
  524.                 $rez = ['rezult' => false'error' => "Користувача не знайдено!"];   
  525.             }
  526.         }else{
  527.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  528.         }
  529.         $response = new JsonResponse();
  530.         $response->setData($rez);
  531.         $this->logHistory($logId'check-user'$rez);
  532.         return $response;
  533.     }
  534.     #[Route('/api/set-broken-lines'name'set_broken_lines')]
  535.     public function set_broken_lines(Request $request)
  536.     {
  537.         // echo '<pre>';
  538.         $data json_decode($request->getContent(), true);
  539.         // $data = [
  540.         //     'user' => 31,
  541.         //     'account' => '0900015104',
  542.         //     'phone' => '380xxxxxxxxx',
  543.         //     'voltage' => '123',
  544.         //     'voltage_susidy' => 'Так',
  545.         //     'media' => 2,
  546.         //     'lat' => '1111',
  547.         //     'lon' => '2222',
  548.         //     'reason_type' => '22',
  549.         //     'address' => '222',
  550.         //     // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
  551.         // ];
  552.         $logId $this->logHistory(false'set_broken_lines'$data);
  553.         
  554.         
  555.         $valid $this->valid$data, ['reason_type''user''phone''address''lat''lon'] );
  556.         if( empty($valid) ){
  557.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  558.             if($find){
  559.                 if(isset($data['media'])){
  560.                     $mediaObject $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
  561.                     if (!$mediaObject) {
  562.                         return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
  563.                     }
  564.                     // Отримуємо шлях до файлу
  565.                     // $filePath = 'https://api-app.de-svitlo.com.ua' .$mediaObject->getFullPath() ;
  566.                     $filePath $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
  567.                 }
  568.                 // echo "<br> $filePath <br>";
  569.                 $permission json_decode$this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true); 
  570.                 if(!$permission['rez'] AND $permission['dozvil'] !== true){
  571.                     // print_r( $permission); die;
  572.                     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  573.                 }
  574.                 // var_dump( $permission);
  575.                 // die;
  576.                 $data =  [
  577.                     'phone' => $data['phone'],
  578.                     'app_user_id' => $find->getId(),
  579.                     'reason_type' => $data['reason_type'],
  580.                     'address' => $data['address'],
  581.                     'lat' => $data['lat'],
  582.                     'lon' => $data['lon'],
  583.                     // 'imageFile' => new \CURLFile( $filePath ),
  584.                 ];
  585.                 if(isset($filePath))
  586.                     $data['imageFile'] = new \CURLFile$filePath );
  587.                 $rezult json_decode$this->appApiService->set_broken_lines($data) , true );
  588.                 
  589.                 if($rezult['rez']){
  590.                     $rez = [
  591.                         'rezult' => true
  592.                         'message' => 'Дані відправлено!',
  593.                         // 'account' => $rezult['account'],
  594.                     ];   
  595.                 }else{
  596.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  597.                 }
  598.             }else{
  599.                 $rez = ['rezult' => false'error' => "Користувача не знайдено!"];   
  600.             }
  601.         }else{
  602.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  603.         }
  604.         $response = new JsonResponse();
  605.         $response->setData($rez);
  606.         $this->logHistory($logId'check-user'$rez);
  607.         return $response;
  608.     }
  609.     #[Route('/api/get-last-meter-readings'name'get_last_meter_readings')]
  610.     public function get_last_meter_readings(Request $request)
  611.     {
  612.         // echo '<pre>';
  613.         $data json_decode($request->getContent(), true);
  614.         // $data = [
  615.         //     'user' => 31,
  616.         //     'account' => '0900015104',
  617.         // ];
  618.         $logId $this->logHistory(false'get_last_meter_readings'$data);
  619.         
  620.         
  621.         $valid $this->valid$data, ['account''user'] );
  622.         if( empty($valid) ){
  623.            
  624.             $data = [
  625.                 'method' => 'get-last-meter-readings',
  626.                 'data' => [
  627.                     'account' => $data['account'],
  628.                 ],
  629.             ]; 
  630.             $rezult json_decode$this->appApiService->get($data) , true );
  631.             if($rezult['rez']){
  632.                 $rez = [
  633.                     'rezult' => true
  634.                     'date_on' => $rezult['date_on'],
  635.                     'reading1' => $rezult['reading1'],
  636.                     'reading2' => $rezult['reading2'],
  637.                     'reading3' => $rezult['reading3'],
  638.                     // 'account' => $rezult['account'],
  639.                 ];   
  640.             }else{
  641.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  642.             }
  643.         }else{
  644.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  645.         }
  646.         $response = new JsonResponse();
  647.         $response->setData($rez);
  648.         $this->logHistory($logId'check-user'$rez);
  649.         return $response;
  650.     }
  651.     #[Route('/api/cron-set-meter-readings'name'cron_set_meter_readings')]
  652.     public function cron_set_meter_readings(Request $request)
  653.     {
  654.         $AppCounterReading $this->entityManager->getRepository(AppCounterReading::class)->findBy(['status' => 'new']);
  655.         $i 0;
  656.         foreach($AppCounterReading as $counterReding){
  657.             $p =  $counterReding->getPersonal()->getOwner()->getPhone();
  658.             $p str_replace('+'''$p);
  659.             $data =  [
  660.                 'method' => 'set-meter-readings',
  661.                 'data' => [
  662.                     'phone' => $p,
  663.                     'app_user_id' => $counterReding->getPersonal()->getOwner()->getId(),
  664.                     'account' => $counterReding->getPersonal()->getNumber(),
  665.                     'number_of_scale' => $counterReding->getPersonal()->getNumberOfScale(),
  666.                     'reading1' => $counterReding->getValue(),
  667.                     'reading2' => $counterReding->getValue2(),
  668.                     'reading3' => $counterReding->getValue3(),
  669.                 ]
  670.             ];
  671.             $rezult json_decode$this->appApiService->get($data) , true );
  672.             file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'print_r($rezulttrue) . "\n"FILE_APPEND);
  673.             if($rezult['rez']){
  674.                 $counterReding->setStatus('complate');
  675.                 $this->entityManager->persist($counterReding);
  676.                 $this->entityManager->flush();
  677.                 $i++;  
  678.             }else{
  679.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  680.             }
  681.         }
  682.        
  683.        
  684.        
  685.        
  686.         $rez = ['count' => count($AppCounterReading)];
  687.         $response = new JsonResponse();
  688.         $response->setData($rez);
  689.         return $response;
  690.     }
  691.     #[Route('/api/set-meter-readings'name'set_meter_readings')]
  692.     public function set_meter_readings(Request $request)
  693.     {
  694.    
  695.         $data json_decode($request->getContent(), true);
  696.         $logId $this->logHistory(false'set_meter_readings'$data);
  697.         
  698.         
  699.         $valid $this->valid$data, ['account''user''number_of_scale''reading1''reading2''reading3'] );
  700.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'"************set-meter-readings****************\n"FILE_APPEND);
  701.         if( empty($valid)  ){
  702.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  703.             if($find){
  704.                 $data =  [
  705.                     'method' => 'set-meter-readings',
  706.                     'data' => [
  707.                         'phone' => $find->getPhone(),
  708.                         'app_user_id' => $find->getId(),
  709.                         'account' => $data['account'],
  710.                         'number_of_scale' => $data['number_of_scale'],
  711.                         'reading1' => $data['reading1'],
  712.                         'reading2' => $data['reading2'],
  713.                         'reading3' => $data['reading3'],
  714.                     ]
  715.                 ];
  716.                 $rezult json_decode$this->appApiService->get($data) , true );
  717.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'print_r($rezulttrue) . "\n"FILE_APPEND);
  718.                 if($rezult['rez']){
  719.                     $rez = [
  720.                         'rezult' => true
  721.                         'message' => 'Дані відправлено!',
  722.                     ];   
  723.                 }else{
  724.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  725.                 }
  726.             }else{
  727.                 $rez = ['rezult' => false'error' => 'Користувача не знайдено!'];   
  728.             }
  729.         }else{
  730.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  731.         }
  732.         $response = new JsonResponse();
  733.         $response->setData($rez);
  734.         $this->logHistory($logId'check-user'$rez);
  735.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log'"************set-meter-readings END ****************\n"FILE_APPEND);
  736.         return $response;
  737.     }
  738.     #[Route('/api/set-no-light-request'name'set_no_light_request')]
  739.     public function set_no_light_request(Request $request)
  740.     {
  741.         // echo '<pre>';
  742.         $data json_decode($request->getContent(), true);
  743.         // $data = [
  744.         //     'user' => 31,
  745.         //     'account' => '0900015104',
  746.         //     'phone' => '380xxxxxxxxx',
  747.         //     'voltage' => '123',
  748.         //     'voltage_susidy' => 'Так',
  749.         //     'media' => 2
  750.         //     // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
  751.         // ];
  752.         $logId $this->logHistory(false'set_no_light_request'$data);
  753.         
  754.         
  755.         $valid $this->valid$data, ['account''eic''user''dno_id''when_off''pib''phone''eic_count'] );
  756.         if( empty($valid) ){
  757.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
  758.             if($find){
  759.                 $permission json_decode$this->appApiService->check_last_register_no_power($data['account']) , true); 
  760.                 if(!$permission['rez'] AND $permission['dozvil'] !== true){
  761.                     // print_r( $permission); die;
  762.                     return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
  763.                 }
  764.                 // var_dump( $permission);
  765.                 // die;
  766.                 $data =  [
  767.                     'method' => 'set-no-light-request',
  768.                     'data' => [
  769.                         'account' => $data['account'],
  770.                         'app_user_id' => $find->getId(),
  771.                         'eic' => $data['eic'],
  772.                         'dno_id' => $data['dno_id'],
  773.                         'when_off' => $data['when_off'],
  774.                         'pib' => $data['pib'],
  775.                         'phone' => $data['phone'],
  776.                         'eic_count' => $data['eic_count'],
  777.                     ],
  778.                 ];
  779.                 $rezult json_decode$this->appApiService->get($data) , true );
  780.                 if($rezult['rez']){
  781.                     $rez = [
  782.                         'rezult' => true
  783.                         'message' => 'Дані відправлено!',
  784.                         // 'account' => $rezult['account'],
  785.                     ];   
  786.                 }else{
  787.                     $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  788.                 }
  789.             }else{
  790.                 $rez = ['rezult' => false'error' => 'Користувача не знайдено!'];   
  791.             }
  792.         }else{
  793.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  794.         }
  795.         $response = new JsonResponse();
  796.         $response->setData($rez);
  797.         $this->logHistory($logId'check-user'$rez);
  798.         return $response;
  799.     }
  800.     #[Route('/api/get-all-accounts-by-phone'name'get_all_accounts_by_phone')]
  801.     public function get_all_accounts_by_phone(Request $request)
  802.     {
  803.         $data json_decode($request->getContent(), true);
  804.       
  805.         $logId $this->logHistory(false'get_all_accounts_by_phone'$data);
  806.         
  807.         
  808.         $valid $this->valid$data, ['phone''bot_type'] );
  809.         if( empty($valid) ){
  810.             
  811.             $data =  [
  812.                 'method' => 'get-all-accounts-by-phone',
  813.                 'data' => [
  814.                     'phone' => $data['phone'],
  815.                     'bot_type' => $data['bot_type'],
  816.                 ],
  817.             ];
  818.             $rezult json_decode$this->appApiService->get($data) , true );
  819.             
  820.             if($rezult['rez']){
  821.                 $rez = [
  822.                     'rezult' => true
  823.                     'accounts' => $rezult['accounts']
  824.                 ];   
  825.             }else{
  826.                 $rez = ['rezult' => false'error' => $rezult['err_msg']];   
  827.             }
  828.             
  829.         }else{
  830.             $rez = ['rezult' => false'error' => "Не задано поля: $valid"];   
  831.         }
  832.         $response = new JsonResponse();
  833.         $response->setData($rez);
  834.         $this->logHistory($logId'check-user'$rez);
  835.         return $response;
  836.     }
  837.     #[Route('/api/yur-create-personal-account'name'yurCreatePersonalAccount')]
  838.     public function yurCreatePersonalAccount(Request $request)
  839.     {
  840.         $data json_decode($request->getContent(), true);
  841.         $logId $this->logHistory(false'createPersonalAccount'$data);
  842.         file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  "\n\n\n" .  print_r($datatrue) . "\n"FILE_APPEND);
  843.         $valid $this->valid$data, ['eic''edrpou''name''owner'] );
  844.         if( empty($valid) ){
  845.             $find $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
  846.             if($find){
  847.                 $data = ['eic' => $data['eic'], 'app_user_id' => $find->getId(), 'edrpou' => $data['edrpou'],'name' => $data['name']];
  848.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($datatrue) . "\n"FILE_APPEND);
  849.                 
  850.                 $res json_decode$this->appApiService->YurCheckPersonalAccount($data) , true );
  851.                 file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log',  print_r($restrue) . "\n"FILE_APPEND);
  852.                 $name = (!empty($data['name'])) ? $data['name'] : $data['eic'];
  853.                 // var_dump($res); die;
  854.                 if(isset($res['rez']) AND $res['rez']  AND $res['correct_data']){
  855.                     $personal = new AppPersonalAccount();
  856.                     $personal->setOwner($find);
  857.                     $personal->setNumber($data['eic']);
  858.                     $personal->setName($name);
  859.                     $personal->setNumberOfScale(0);
  860.                     $personal->setActive(true);
  861.                     $personal->setIsMain(true);
  862.                     $personal->setDateEntered($this->datetime);
  863.                     $personal->setType('factory');
  864.                     $personal->setEic($data['eic']);
  865.                     $this->entityManager->persist($personal);
  866.                     $this->entityManager->flush();
  867.                     foreach($res['data'] as $res_data){
  868.                         $accounts $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $res_data['acc'], 'eic' => $res_data['eic_kod']]);
  869.                         if(!$accounts){
  870.                             $accounts = new Accounts();
  871.                             $accounts->setNumber($res_data['acc']);
  872.                             $accounts->setEic($res_data['eic_kod']);
  873.                             $accounts->setEicParent($res_data['eic_kod_place']);
  874.                             $this->entityManager->persist($accounts);
  875.                             $this->entityManager->flush();
  876.                         }
  877.                         $personalChild = new AppPersonalAccount();
  878.                         $personalChild->setOwner($find);
  879.                         $personalChild->setNumber($res_data['acc']);
  880.                         $personalChild->setName($res_data['name']);
  881.                         $personalChild->setCounter($res_data['counter']);
  882.                         $personalChild->setNumberOfScale(0);
  883.                         $personalChild->setActive(true);
  884.                         $personalChild->setIsMain(false);
  885.                         $personalChild->setDateEntered($this->datetime);
  886.                         $personalChild->setType('factory');
  887.                         $personalChild->setEic($res_data['eic_kod']);
  888.                         $personalChild->setParent($personal);
  889.                         $fullAdresses $res_data['city_name'] . ' ' $res_data['street_name'] . ' ' $res_data['building_name'];
  890.                         $personalChild->setFullAddress($fullAdresses);
  891.                         $personalChild->setCity($res_data['city_name']);
  892.                         $personalChild->setStreet($res_data['street_name']);
  893.                         $personalChild->setBuilding($res_data['building_name']);
  894.                         $personalChild->setMainFullAddress($fullAdresses);
  895.                         $this->entityManager->persist($personalChild);
  896.                         $this->entityManager->flush();
  897.                     }
  898.                     
  899.                     $rez = [
  900.                         'registered' => true,
  901.                         'id' => $personal->getId(),
  902.                         
  903.                     ];
  904.                 }else{
  905.                     $rez = ['registered' => false];
  906.                 }
  907.             }else{
  908.                 $rez = ['registered' => false];
  909.             }
  910.         }else{
  911.             $rez = ['registered' => false'error' => "Не задано поля: $valid"];
  912.         }
  913.         
  914.         
  915.     
  916.         $response = new JsonResponse();
  917.         $response->setData($rez);
  918.         $this->logHistory($logId'check-user'$rez);
  919.         return $response;
  920.     }
  921. }