<?php
namespace App\Controller\WS;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Util\Util as Utilx;
use App\Util\WS\Util;
use App\Util\WS\PointsUtilPorcessor;
use App\Entity\WebService;
use App\Transformer\LicensorGenericTransformer;
/**
* Description of ServicesAndPricesController
* @author zaealan
*/
class ServicesAndPricesController extends ApiController {
/**
* Funcion encargada de verificar un servicio y sus marcas (brands)
*
*/
public function verificarServicesAndBrand(Request $request) {
if ($request->getMethod() === WebService::REQUEST_METHOD_POST) {
$data = json_decode($request->getContent(),true);
if(!isset($data['nickname']) || empty($data['nickname'])) {
return $this->errorWrongArgs('Wrong Arguments!', WebService::CODE_WRONG_ARGUMENTS);
}
$em = $this->getDoctrine()->getManager();
$accountLicenseData = $em->getRepository('App\Entity\AccountLicense')->findByAlLicenseUsername($data['nickname']);
$countResult = count($accountLicenseData);
if ($countResult <= 0) {
return $this->setStatusCode(WebService::HTTP_CODE_UNAUTHORIZED)
->respondWithError('Invalid nickname', WebService::CODE_COULD_NOT_AUTHENTICATE);
}
$container = $this->realContainer;
$emLic = $container->get("doctrine")->getManager();
$emLic->getConnection()->getConfiguration()->setSQLLogger(null);
$emLev = Util::emLicenseConnection($container, $emLic, $accountLicenseData[0]);
$servicesType = $emLev->getRepository('App\Structure\OrderServiceTypes')->findBy(["ostStatus" => 1]);
$typeBrand = $emLev->getRepository('App\Structure\BrandTypeMenu')->findAll(['order' => 'ASC']);
$services= [];
if($servicesType) {
foreach ($servicesType as $datos) {
$array = [
"id" => $datos->getOmtSync(),
"levelId" => $datos->getId(),
"ostType" => $datos->getOstType(),
"ostName" => $datos->getOstName(),
"ostStatus" => $datos->getOstStatus(),
"androidSync" => $datos->getAndroidSync(),
"omtSync" => $datos->getOmtSync()
];
array_push($services, $array);
}
}
$brand=[];
if($typeBrand) {
foreach ($typeBrand as $datosBrand) {
$array = [
"id" => $datosBrand->getId(),
"name" => $datosBrand->getName(),
"alias" => $datosBrand->getAlias(),
"order" => $datosBrand->getOrder(),
"status" => $datosBrand->getStatus(),
"lastStatus" => $datosBrand->getLastStatus(),
"androidSync" => $datosBrand->getAndroidSync(),
"omtSync" => $datosBrand->getOmtSync()
];
array_push($brand, $array);
}
}
$responseArr['msg'] = 'type services and brand of the restaurant: ' . $accountLicenseData[0]->getAlRestaurantName() ;
$responseArr['status'] = WebService::CODE_SUCCESS;
$responseArr['servicesType'] = $services;
$responseArr['brand'] = $brand;
$responseArr['bigbag'] = true;
$theUrlTrSt = new LicensorGenericTransformer($this->realContainer, $responseArr);
$xxArray = $theUrlTrSt->transform();
$jsonContent = json_encode($xxArray);
return $this->respondWithItem($jsonContent, $theUrlTrSt);
}
}
public function searchServicesPrices(Request $request) {
if ($request->getMethod() === WebService::REQUEST_METHOD_POST) {
$data = json_decode($request->getContent(),true);
if(!isset($data['nickname']) || empty($data['nickname'])) {
return $this->errorWrongArgs('Wrong Arguments nickname!', WebService::CODE_WRONG_ARGUMENTS);
}
if(!isset($data['brand']) || empty($data['brand'])) {
return $this->errorWrongArgs('Wrong Arguments brand!', WebService::CODE_WRONG_ARGUMENTS);
}
$em = $this->getDoctrine()->getManager();
$accountLicenseData = $em->getRepository('App\Entity\AccountLicense')->findByAlLicenseUsername($data['nickname']);
$countResult = count($accountLicenseData);
if ($countResult > 0) {
} else {
return $this->setStatusCode(WebService::HTTP_CODE_UNAUTHORIZED)
->respondWithError('Invalid nickname', WebService::CODE_COULD_NOT_AUTHENTICATE);
}
$container = $this->realContainer;
$emLic = $container->get("doctrine")->getManager();
$emLic->getConnection()->getConfiguration()->setSQLLogger(null);
$emLev = Util::emLicenseConnection($container, $emLic, $accountLicenseData[0]);
$servicesPrice = $emLev->getRepository('App\Structure\ServicePrice')->searchServicePriceByBrand($data);
$price = [];
if ($servicesPrice) {
foreach ($servicesPrice as $datos) {
$array = [
"id" => $datos->getId(),
"ostId" => $datos->getOstId(),
"prdtllaId" => $datos->getPrdtllaId(),
"brandId" => $datos->getBrandId(),
"value" => $datos->getValue(),
"status" => $datos->getStatus(),
"androidSync" => $datos->getAndroidSync(),
"omtSync" => $datos->getOmtSync()
];
array_push($price, $array);
}
}
$responseArr['msg'] = 'services price of the restaurant: ' . $accountLicenseData[0]->getAlRestaurantName() ;
$responseArr['status'] = WebService::CODE_SUCCESS;
$responseArr['servicesPrices'] = $price;
$responseArr['bigbag'] = true;
$theUrlTrSt = new LicensorGenericTransformer($this->realContainer, $responseArr);
$xxArray = $theUrlTrSt->transform();
$jsonContent = json_encode($xxArray);
return $this->respondWithItem($jsonContent, $theUrlTrSt);
}
}
/**
* {post} /changeServicesStatus. Funcion encargada de cambiar el estado de un servicio en level web (DINE IN - PICK UP - DELIVERY)
* 0.1.0
* Jose idier Alzate - Noviembre. 21/2024
*
*/
public function changeServicesStatus(Request $request) {
if ($request->getMethod() === WebService::REQUEST_METHOD_POST) {
$data = json_decode($request->getContent(),true);
$data = array_values($data)[0];
// validamos el nickname
if (!isset($data['nickname']) || empty($data['nickname'])) {
return $this->errorWrongArgs('Wrong Arguments nickname!', WebService::CODE_WRONG_ARGUMENTS);
}
// Validamos el estado
if (!isset($data['status'])) {
return $this->errorWrongArgs('Wrong Arguments status!', WebService::CODE_WRONG_ARGUMENTS);
}
// Validamos el servicio
if (!isset($data['service']) || empty($data['service'])) {
return $this->errorWrongArgs('Wrong Arguments service!', WebService::CODE_WRONG_ARGUMENTS);
}
$em = $this->getDoctrine()->getManager();
$accountLicenseData = $em->getRepository('App\Entity\AccountLicense')->findByAlLicenseUsername($data['nickname']);
if (count($accountLicenseData) <= 0) {
return $this->setStatusCode(WebService::HTTP_CODE_UNAUTHORIZED)
->respondWithError('Invalid nickname', WebService::CODE_COULD_NOT_AUTHENTICATE);
}
$container = $this->realContainer;
$emLic = $container->get("doctrine")->getManager();
$emLic->getConnection()->getConfiguration()->setSQLLogger(null);
$emLev = Util::emLicenseConnection($container, $emLic, $accountLicenseData[0]);
// ya teniendo la conexion vamos a cambiar el registro que necesitamos
$setData = $emLev->getRepository('App\Structure\OrderServiceTypes')->findOneBy([ 'ostType' => $data['service'] ]);
if ($setData->getOstStatus() != $data['status'] ) {
$setData->setOstStatus($data['status']);
$emLev->persist($setData);
$emLev->flush();
}
$responseArr['msg'] = "Service type status saved successfully";
$responseArr['status'] = WebService::CODE_SUCCESS;
$responseArr['bigbag'] = true;
$theUrlTrSt = new LicensorGenericTransformer($container, $responseArr);
$xxArray = $theUrlTrSt->transform();
$jsonContent = json_encode($xxArray);
return $this->respondWithItem($jsonContent, $theUrlTrSt);
}
}
}