<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Menu;
use App\Entity\LogHistoryRequest;
use App\Entity\User;
use App\Entity\UserToken;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use App\Service\AppApiService;
use App\Entity\AppPersonalAccount;
use App\Entity\MediaObject;
use App\Entity\AppCounterReading;
use App\Entity\ServiceOrderHistory;
use App\Entity\Accounts;
use Symfony\Component\HttpKernel\KernelInterface;
class PersonalController extends AbstractController
{
public $datetime;
public $entityManager;
public $passwordEncoder;
public $appApiService;
private $kernel;
public function __construct( ?\DateTimeInterface $datetime, EntityManagerInterface $entityManager, AppApiService $appApiService, KernelInterface $kernel ){
$this->datetime = $datetime;
$this->entityManager = $entityManager;
$this->appApiService = $appApiService;
$this->kernel = $kernel;
}
public function valid($requestFilds, $requiredFilds){
$errors = '';
foreach($requiredFilds as $f){
if(!isset($requestFilds[$f]))
$errors .= " $f";
}
return $errors;
}
public function logHistory($id, $method, $data){
if(!$id){
$LogHistoryRequest = new LogHistoryRequest();
$LogHistoryRequest->setMethod($method);
$LogHistoryRequest->setRequest($data);
$LogHistoryRequest->setDate($this->datetime);
$LogHistoryRequest->setStatus('start');
$this->entityManager->persist($LogHistoryRequest);
$this->entityManager->flush();
return $LogHistoryRequest->getId();
}else{
$LogHistoryRequest = $this->entityManager->getRepository(LogHistoryRequest::class)->findOneBy(['id' => $id]);
if($LogHistoryRequest){
$LogHistoryRequest->setStatus('finish');
$LogHistoryRequest->setResponseAnswer($data);
$this->entityManager->persist($LogHistoryRequest);
$this->entityManager->flush();
}
return true;
}
}
#[Route('/api/create-personal-account-bot', name: 'createPersonalAccountBot')]
public function createPersonalAccountBot(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'createPersonalAccountBot', $data);
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "\n\n\n" . print_r($data, true) . "\n", FILE_APPEND);
$valid = $this->valid( $data, ['accounts', 'method', 'owner'] );
if( empty($valid) ){
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "1111111111111\n", FILE_APPEND);
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
if($find){
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "2222222222222\n", FILE_APPEND);
$resultAccounts = [];
foreach($data['accounts'] as $value){
$number = array_key_first($value);
$name = $value[$number];
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "\n\n\n" . print_r($name, true) . "\n", FILE_APPEND);
$resultAccounts[$number] = false;
$data = [
'account' => $number
];
$res = json_decode( $this->appApiService->account_all_data($data) , true );
if(isset($res['rez']) AND $res['rez'] == 1){
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($res, true) . "\n", FILE_APPEND);
if(isset($res['data']) AND count($res['data']) > 0){
$name = (!empty($name)) ? $name : $number;
$accounts = $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $number]);
if(!$accounts){
$accounts = new Accounts();
$accounts->setNumber($number);
$accounts->setEic($res['data'][0]['eic_kod']);
$this->entityManager->persist($accounts);
$this->entityManager->flush();
}
$personal = new AppPersonalAccount();
$personal->setOwner($find);
$personal->setNumber($number);
$personal->setName($name);
$personal->setNumberOfScale((int) $res['data'][0]['number_of_scale']);
$personal->setActive(true);
$personal->setIsMain(true);
$personal->setFullAddress($res['data'][0]['name']);
$personal->setCity($res['data'][0]['city_name']);
$personal->setStreet($res['data'][0]['street_name']);
$personal->setBuilding($res['data'][0]['building_name']);
// $personal->setRoom($res['room']);
$personal->setMainFullAddress($res['data'][0]['name']);
$personal->setEic($res['data'][0]['eic_kod']);
$personal->setDateEntered($this->datetime);
$personal->setType('person');
$personal->setAccounts($accounts);
$this->entityManager->persist($personal);
$this->entityManager->flush();
$resultAccounts[$number] = true;
}
}
$rez = [
'registered' => true,
'registerAccounts' => $resultAccounts
];
}
}else{
$rez = ['registered' => false];
}
}else{
$rez = ['registered' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/create-personal-account', name: 'createPersonalAccount')]
public function createPersonalAccount(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'createPersonalAccount', $data);
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "\n\n\n" . print_r($data, true) . "\n", FILE_APPEND);
$valid = $this->valid( $data, ['account', 'method', 'value'] );
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
if($find){
$data = ['account' => $data['account'], 'app_user_id' => $find->getId(), 'check_method' => $data['method'], 'check_value' => $data['value'], 'name' => $data['name']];
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($data, true) . "\n", FILE_APPEND);
$res = json_decode( $this->appApiService->checkPersonalAccount($data) , true );
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($res, true) . "\n", FILE_APPEND);
$name = (!empty($data['name'])) ? $data['name'] : $data['account'];
// var_dump($res); die;
if(isset($res['account_ok']) AND $res['account_ok'] ){
$accounts = $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $data['account']]);
if(!$accounts){
$accounts = new Accounts();
$accounts->setNumber($data['account']);
$accounts->setEic($data['eic']);
$this->entityManager->persist($accounts);
$this->entityManager->flush();
}
$personal = new AppPersonalAccount();
$personal->setOwner($find);
$personal->setNumber($data['account']);
$personal->setName($name);
$personal->setNumberOfScale((int) $res['number_of_scale']);
$personal->setActive(true);
$personal->setIsMain(true);
$personal->setFullAddress($res['full_address']);
$personal->setCity($res['city']);
$personal->setStreet($res['street']);
$personal->setBuilding($res['building']);
$personal->setRoom($res['room']);
$personal->setMainFullAddress($res['full_address']);
$personal->setEic($res['eic']);
$personal->setDateEntered($this->datetime);
$personal->setType('person');
$personal->setAccounts($accounts);
$this->entityManager->persist($personal);
$this->entityManager->flush();
$rez = [
'registered' => true,
'id' => $personal->getId(),
'name' => $personal->getName(),
'number' => $personal->getNumber(),
'numberOfScale' => $personal->getNumberOfScale(),
'fullAddress' => $personal->getFullAddress(),
'city' => $personal->getCity(),
'street' => $personal->getStreet(),
'building' => $personal->getBuilding(),
'room' => $personal->getRoom(),
'mainFullAddress' => $personal->getMainFullAddress(),
'account' => [
'statusLight' => $accounts->getStatusLight(),
'statusPlanning' => $accounts->getStatusPlanning(),
]
];
}else{
$rez = ['registered' => false, $res];
}
}else{
$rez = ['registered' => false];
}
}else{
$rez = ['registered' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/create-personal-account_test', name: 'createPersonalAccountTest')]
public function createPersonalAccountTest(Request $request)
{
$data = json_decode($request->getContent(), true);
// $data = ['account' => '0900015104', 'check_method' => 'by_name', 'check_value' => 'Подолюк'];
$res = json_decode( $this->appApiService->checkPersonalAccount($data) , true );
var_dump($res); die;
}
#[Route('/api/check-light', name: 'check_light')]
public function check_light(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'check_light', $data);
$valid = $this->valid( $data, ['account', 'user'] );
if( empty($valid) ){
$data = [
'method' => 'check-light',
'data' => [
'account' => $data['account'],
// 'eic' => '36457',
],
];
$rezult = json_decode( $this->appApiService->get($data) , true );
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($rezult, true) . "\n", FILE_APPEND);
if($rezult['rez']){
$rez = [
'rezult' => true,
'іs_included_disconnection_task' => (isset( $rezult['іs_included_disconnection_task']) ) ? $rezult['іs_included_disconnection_task'] : 0,
'reazon' => (isset( $rezult['reazon']) ) ? $rezult['reazon'] : '',
'reazon_yur' => (isset( $rezult['reazon_yur']) ) ? $rezult['reazon_yur']: '' ,
'owner_adress' => $rezult['owner_adress'],
'light' => $rezult['light'],
'date' => $rezult['date'],
'diff_eic_count' => $rezult['diff_eic_count'],
'eic' => $rezult['eic'],
'dno_id' => $rezult['dno_id'],
'disconnect_warning_guid' => (isset( $rezult['disconnect_warning_guid']))?$rezult['disconnect_warning_guid'] : '',
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/get-group-gpv', name: 'get_group_gpv')]
public function get_group_gpv(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'get_group_gpv', $data);
$valid = $this->valid( $data, ['account', 'user'] );
if( empty($valid) ){
$data = [
'method' => 'get-group-gpv',
'data' => [
'account' => $data['account'],
// 'eic' => '36457',
],
];
$rezult = json_decode( $this->appApiService->get($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'rem_name' => $rezult['rem_name'],
'odg_name' => $rezult['odg_name'],
'cherg_gav' => $rezult['cherg_gav'],
'cherg_achr' => $rezult['cherg_achr'],
'cherg_gvsp' => $rezult['cherg_gvsp'],
'cherg_sgav' => $rezult['cherg_sgav'],
'cherg_gpv' => $rezult['cherg_gpv'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/get-scheduled-works', name: 'get_scheduled_works')]
public function get_scheduled_works(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'get_group_gpv', $data);
$valid = $this->valid( $data, ['account', 'user'] );
if( empty($valid) ){
$data = [
'method' => 'get-scheduled-works',
'data' => [
'account' => $data['account'],
// 'eic' => '36457',
],
];
$rezult = json_decode( $this->appApiService->get($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'message' => $rezult['message'],
'works' => $rezult['works'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/set-low-quality-voltage', name: 'set_low_quality_voltage')]
public function set_low_quality_voltage(Request $request)
{
// echo '<pre>';
$data = json_decode($request->getContent(), true);
// $data = [
// 'user' => 31,
// 'account' => '0900015104',
// 'phone' => '380xxxxxxxxx',
// 'voltage' => '123',
// 'voltage_susidy' => 'Так',
// 'media' => 2
// // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
// ];
$logId = $this->logHistory(false, 'set_low_quality_voltage', $data);
$valid = $this->valid( $data, ['account', 'user', 'phone', 'voltage', 'voltage_susidy', 'media'] );
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
if($find){
$mediaObject = $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
if (!$mediaObject) {
return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
}
// Отримуємо шлях до файлу
// $filePath = 'https://api-app.de-svitlo.com.ua' .$mediaObject->getFullPath() ;
$filePath = $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
// echo "<br> $filePath <br>";
$permission = json_decode( $this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true);
if(!$permission['rez'] AND $permission['dozvil'] !== true){
// print_r( $permission); die;
return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
}
// var_dump( $permission);
// die;
$data = [
'app_user_id' => $find->getId(),
'account' => $data['account'],
'phone' => $data['phone'],
'voltage' => $data['voltage'],
'voltage_susidy' => $data['voltage_susidy'],
'imageFile' => new \CURLFile( $filePath ),
];
$rezult = json_decode( $this->appApiService->set_low_quality_voltage($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'message' => 'Дані відправлено!',
// 'account' => $rezult['account'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Користувача не знайдено!"];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/service-order', name: 'service_order')]
public function service_order(Request $request)
{
// echo '<pre>';
$data = json_decode($request->getContent(), true);
// $data = [
// 'user' => 31,
// 'account' => '0900015104',
// 'phone' => '380xxxxxxxxx',
// 'service_code' => '9',
// 'description' => 'Так',
// 'media' => [4,5,6]
// // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
// ];
$logId = $this->logHistory(false, 'service-order', $data);
if(isset($data['service_code']) AND ( $data['service_code'] == 63 OR $data['service_code'] == 10 ))
$valid = $this->valid( $data, ['account', 'user', 'phone', 'service_code', 'description', 'pdf'] );
else
$valid = $this->valid( $data, ['account', 'user', 'phone', 'service_code', 'description', 'media', 'pdf'] );
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
if($find){
if($data['service_code'] != 63 AND $data['service_code'] != 10){
// $mediaObject = $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
$mediaObjects = $this->entityManager->getRepository(MediaObject::class)->findBy(['id' => $data['media']]);
if (!$mediaObjects) {
return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
}
}
$pdf = (!empty($data['pdf'])) ? $data['pdf']: false;
$data = [
'account' => $data['account'],
'app_user_id' => $find->getId(),
'phone' => $data['phone'],
'service_code' => $data['service_code'],
'description' => $data['description'],
// 'imageFile' => new \CURLFile( $filePath ),
];
$i = 1;
if($data['service_code'] != 63 AND $data['service_code'] != 10)
foreach($mediaObjects as $k => $mediaObject){
$i = $k + 1;
$filePath = $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
$data["imageFile$i"] = new \CURLFile( $filePath );
}
if($pdf){
if(isset($data["imageFile$i"]))
++$i;
$data["imageFile$i"] = new \CURLFile( $this->kernel->getProjectDir() . '/public' . $pdf );
}
// $filePath = $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
// echo "<br> $filePath <br>";
// $permission = json_decode( $this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true);
// if(!$permission['rez'] AND $permission['dozvil'] !== true){
// // print_r( $permission); die;
// return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
// }
// var_dump( $permission);
// die;
// $data = [
// 'account' => $data['account'],
// 'phone' => $data['phone'],
// 'voltage' => $data['voltage'],
// 'voltage_susidy' => $data['voltage_susidy'],
// 'imageFile' => new \CURLFile( $filePath ),
// ];
/*
const serviceCodesArr = [
{ service_code: 9, label: "Встановлення зонного лічильника" },
{ service_code: 10, label: "Лічильник не працює" },
{ service_code: 21, label: "Неправильний показ" },
{ service_code: 32, label: "Зміна власника" },
{ service_code: 35, label: "Підключення електроустановок замовника після виконання ТУ" },
{ service_code: 63, label: "Звернення щодо підозри на крадіжку" },
{ service_code: 79, label: "Заміна автоматичного вимикача, який опломбований ОСР" },
{ service_code: 85, label: "Відсутність пломб на засобі обліку" },
{ service_code: 86, label: "Закриття особового рахунку" },
];
*/
$orderNames = [
9 => "Встановлення зонного лічильника",
10 => "Лічильник не працює",
21 => "Неправильний показ",
32 => "Зміна власника",
35 => "Підключення електроустановок замовника після виконання ТУ",
63 => "Звернення щодо підозри на крадіжку",
79 => "Заміна автоматичного вимикача, який опломбований ОСР",
85 => "Відсутність пломб на засобі обліку",
86 => "Закриття особового рахунку",
];
foreach($find->getAppPersonalAccounts() as $acc){
if($acc->getNumber() == $data['account'])
$account = $acc;
}
if($account){
$ServiceOrderHistory = new ServiceOrderHistory();
$ServiceOrderHistory->setName($orderNames[$data['service_code']]);
// $ServiceOrderHistory->setRequest($data);
$ServiceOrderHistory->setDateEntered( new \DateTime() );
$ServiceOrderHistory->setType($data['service_code']);
$ServiceOrderHistory->setStatus('new');
$ServiceOrderHistory->setPersonalAccount($account);
if($pdf)
$ServiceOrderHistory->setPdf( $pdf );
$ServiceOrderHistory->setPersonalAccount($account);
$this->entityManager->persist($ServiceOrderHistory);
$this->entityManager->flush();
$data["id"] = $ServiceOrderHistory->getId();
}
$rezult = json_decode( $this->appApiService->service_order($data) , true );
if($rezult['rez']){
$account = false;
$rez = [
'rezult' => true,
'message' => 'Дані відправлено!',
// 'account' => $rezult['account'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Користувача не знайдено!"];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/set-broken-lines', name: 'set_broken_lines')]
public function set_broken_lines(Request $request)
{
// echo '<pre>';
$data = json_decode($request->getContent(), true);
// $data = [
// 'user' => 31,
// 'account' => '0900015104',
// 'phone' => '380xxxxxxxxx',
// 'voltage' => '123',
// 'voltage_susidy' => 'Так',
// 'media' => 2,
// 'lat' => '1111',
// 'lon' => '2222',
// 'reason_type' => '22',
// 'address' => '222',
// // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
// ];
$logId = $this->logHistory(false, 'set_broken_lines', $data);
$valid = $this->valid( $data, ['reason_type', 'user', 'phone', 'address', 'lat', 'lon'] );
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
if($find){
if(isset($data['media'])){
$mediaObject = $this->entityManager->getRepository(MediaObject::class)->findOneBy(['id' => $data['media']]);
if (!$mediaObject) {
return new JsonResponse(['rezult' => false,'error' => 'MediaObject not found'], 404);
}
// Отримуємо шлях до файлу
// $filePath = 'https://api-app.de-svitlo.com.ua' .$mediaObject->getFullPath() ;
$filePath = $this->kernel->getProjectDir() . '/public' .$mediaObject->getFullPath() ;
}
// echo "<br> $filePath <br>";
$permission = json_decode( $this->appApiService->check_allow_for_low_quality_voltage($data['account']) , true);
if(!$permission['rez'] AND $permission['dozvil'] !== true){
// print_r( $permission); die;
return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
}
// var_dump( $permission);
// die;
$data = [
'phone' => $data['phone'],
'app_user_id' => $find->getId(),
'reason_type' => $data['reason_type'],
'address' => $data['address'],
'lat' => $data['lat'],
'lon' => $data['lon'],
// 'imageFile' => new \CURLFile( $filePath ),
];
if(isset($filePath))
$data['imageFile'] = new \CURLFile( $filePath );
$rezult = json_decode( $this->appApiService->set_broken_lines($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'message' => 'Дані відправлено!',
// 'account' => $rezult['account'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Користувача не знайдено!"];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/get-last-meter-readings', name: 'get_last_meter_readings')]
public function get_last_meter_readings(Request $request)
{
// echo '<pre>';
$data = json_decode($request->getContent(), true);
// $data = [
// 'user' => 31,
// 'account' => '0900015104',
// ];
$logId = $this->logHistory(false, 'get_last_meter_readings', $data);
$valid = $this->valid( $data, ['account', 'user'] );
if( empty($valid) ){
$data = [
'method' => 'get-last-meter-readings',
'data' => [
'account' => $data['account'],
],
];
$rezult = json_decode( $this->appApiService->get($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'date_on' => $rezult['date_on'],
'reading1' => $rezult['reading1'],
'reading2' => $rezult['reading2'],
'reading3' => $rezult['reading3'],
// 'account' => $rezult['account'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/cron-set-meter-readings', name: 'cron_set_meter_readings')]
public function cron_set_meter_readings(Request $request)
{
$AppCounterReading = $this->entityManager->getRepository(AppCounterReading::class)->findBy(['status' => 'new']);
$i = 0;
foreach($AppCounterReading as $counterReding){
$p = $counterReding->getPersonal()->getOwner()->getPhone();
$p = str_replace('+', '', $p);
$data = [
'method' => 'set-meter-readings',
'data' => [
'phone' => $p,
'app_user_id' => $counterReding->getPersonal()->getOwner()->getId(),
'account' => $counterReding->getPersonal()->getNumber(),
'number_of_scale' => $counterReding->getPersonal()->getNumberOfScale(),
'reading1' => $counterReding->getValue(),
'reading2' => $counterReding->getValue2(),
'reading3' => $counterReding->getValue3(),
]
];
$rezult = json_decode( $this->appApiService->get($data) , true );
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($rezult, true) . "\n", FILE_APPEND);
if($rezult['rez']){
$counterReding->setStatus('complate');
$this->entityManager->persist($counterReding);
$this->entityManager->flush();
$i++;
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}
$rez = ['count' => count($AppCounterReading)];
$response = new JsonResponse();
$response->setData($rez);
return $response;
}
#[Route('/api/set-meter-readings', name: 'set_meter_readings')]
public function set_meter_readings(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'set_meter_readings', $data);
$valid = $this->valid( $data, ['account', 'user', 'number_of_scale', 'reading1', 'reading2', 'reading3'] );
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "************set-meter-readings****************\n", FILE_APPEND);
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
if($find){
$data = [
'method' => 'set-meter-readings',
'data' => [
'phone' => $find->getPhone(),
'app_user_id' => $find->getId(),
'account' => $data['account'],
'number_of_scale' => $data['number_of_scale'],
'reading1' => $data['reading1'],
'reading2' => $data['reading2'],
'reading3' => $data['reading3'],
]
];
$rezult = json_decode( $this->appApiService->get($data) , true );
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($rezult, true) . "\n", FILE_APPEND);
if($rezult['rez']){
$rez = [
'rezult' => true,
'message' => 'Дані відправлено!',
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => 'Користувача не знайдено!'];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "************set-meter-readings END ****************\n", FILE_APPEND);
return $response;
}
#[Route('/api/set-no-light-request', name: 'set_no_light_request')]
public function set_no_light_request(Request $request)
{
// echo '<pre>';
$data = json_decode($request->getContent(), true);
// $data = [
// 'user' => 31,
// 'account' => '0900015104',
// 'phone' => '380xxxxxxxxx',
// 'voltage' => '123',
// 'voltage_susidy' => 'Так',
// 'media' => 2
// // 'imageFile' => new CURLFile(realpath(__DIR__) . '/11.png'),
// ];
$logId = $this->logHistory(false, 'set_no_light_request', $data);
$valid = $this->valid( $data, ['account', 'eic', 'user', 'dno_id', 'when_off', 'pib', 'phone', 'eic_count'] );
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['user']]);
if($find){
$permission = json_decode( $this->appApiService->check_last_register_no_power($data['account']) , true);
if(!$permission['rez'] AND $permission['dozvil'] !== true){
// print_r( $permission); die;
return new JsonResponse(['rezult' => false,'error' => $permission['err_msg']], 404);
}
// var_dump( $permission);
// die;
$data = [
'method' => 'set-no-light-request',
'data' => [
'account' => $data['account'],
'app_user_id' => $find->getId(),
'eic' => $data['eic'],
'dno_id' => $data['dno_id'],
'when_off' => $data['when_off'],
'pib' => $data['pib'],
'phone' => $data['phone'],
'eic_count' => $data['eic_count'],
],
];
$rezult = json_decode( $this->appApiService->get($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'message' => 'Дані відправлено!',
// 'account' => $rezult['account'],
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => 'Користувача не знайдено!'];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/get-all-accounts-by-phone', name: 'get_all_accounts_by_phone')]
public function get_all_accounts_by_phone(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'get_all_accounts_by_phone', $data);
$valid = $this->valid( $data, ['phone', 'bot_type'] );
if( empty($valid) ){
$data = [
'method' => 'get-all-accounts-by-phone',
'data' => [
'phone' => $data['phone'],
'bot_type' => $data['bot_type'],
],
];
$rezult = json_decode( $this->appApiService->get($data) , true );
if($rezult['rez']){
$rez = [
'rezult' => true,
'accounts' => $rezult['accounts']
];
}else{
$rez = ['rezult' => false, 'error' => $rezult['err_msg']];
}
}else{
$rez = ['rezult' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
#[Route('/api/yur-create-personal-account', name: 'yurCreatePersonalAccount')]
public function yurCreatePersonalAccount(Request $request)
{
$data = json_decode($request->getContent(), true);
$logId = $this->logHistory(false, 'createPersonalAccount', $data);
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', "\n\n\n" . print_r($data, true) . "\n", FILE_APPEND);
$valid = $this->valid( $data, ['eic', 'edrpou', 'name', 'owner'] );
if( empty($valid) ){
$find = $this->entityManager->getRepository(User::class)->findOneBy(['id' => $data['owner']]);
if($find){
$data = ['eic' => $data['eic'], 'app_user_id' => $find->getId(), 'edrpou' => $data['edrpou'],'name' => $data['name']];
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($data, true) . "\n", FILE_APPEND);
$res = json_decode( $this->appApiService->YurCheckPersonalAccount($data) , true );
file_put_contents('/var/www/symfony_docker/public/errorrrrrr.log', print_r($res, true) . "\n", FILE_APPEND);
$name = (!empty($data['name'])) ? $data['name'] : $data['eic'];
// var_dump($res); die;
if(isset($res['rez']) AND $res['rez'] AND $res['correct_data']){
$personal = new AppPersonalAccount();
$personal->setOwner($find);
$personal->setNumber($data['eic']);
$personal->setName($name);
$personal->setNumberOfScale(0);
$personal->setActive(true);
$personal->setIsMain(true);
$personal->setDateEntered($this->datetime);
$personal->setType('factory');
$personal->setEic($data['eic']);
$this->entityManager->persist($personal);
$this->entityManager->flush();
foreach($res['data'] as $res_data){
$accounts = $this->entityManager->getRepository(Accounts::class)->findOneBy(['number' => $res_data['acc'], 'eic' => $res_data['eic_kod']]);
if(!$accounts){
$accounts = new Accounts();
$accounts->setNumber($res_data['acc']);
$accounts->setEic($res_data['eic_kod']);
$accounts->setEicParent($res_data['eic_kod_place']);
$this->entityManager->persist($accounts);
$this->entityManager->flush();
}
$personalChild = new AppPersonalAccount();
$personalChild->setOwner($find);
$personalChild->setNumber($res_data['acc']);
$personalChild->setName($res_data['name']);
$personalChild->setCounter($res_data['counter']);
$personalChild->setNumberOfScale(0);
$personalChild->setActive(true);
$personalChild->setIsMain(false);
$personalChild->setDateEntered($this->datetime);
$personalChild->setType('factory');
$personalChild->setEic($res_data['eic_kod']);
$personalChild->setParent($personal);
$fullAdresses = $res_data['city_name'] . ' ' . $res_data['street_name'] . ' ' . $res_data['building_name'];
$personalChild->setFullAddress($fullAdresses);
$personalChild->setCity($res_data['city_name']);
$personalChild->setStreet($res_data['street_name']);
$personalChild->setBuilding($res_data['building_name']);
$personalChild->setMainFullAddress($fullAdresses);
$this->entityManager->persist($personalChild);
$this->entityManager->flush();
}
$rez = [
'registered' => true,
'id' => $personal->getId(),
];
}else{
$rez = ['registered' => false];
}
}else{
$rez = ['registered' => false];
}
}else{
$rez = ['registered' => false, 'error' => "Не задано поля: $valid"];
}
$response = new JsonResponse();
$response->setData($rez);
$this->logHistory($logId, 'check-user', $rez);
return $response;
}
}