<?php
namespace App\Controller\Api;
use App\Service\ComercioManager;
use App\Service\DocumentsService;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\View\View;
use Symfony\Component\HttpFoundation\{Request, Response};
class ComercioController extends AbstractFOSRestController {
// * CRUD PRODUCTO
// ? READ
/**
* @Rest\Get(path="/api/comercio/mesas/findAll")
*/
public function getMesasLocal(ComercioManager $comercioManager) {
$data = $comercioManager->getMesas();
return View::create($data, Response::HTTP_ACCEPTED);
}
/**
* @Rest\Get(path="/api/comercio/cuentas")
*/
public function getCuentas(ComercioManager $comercioManager) {
$data = $comercioManager->getCuentas();
return View::create($data, Response::HTTP_ACCEPTED);
}
/**
* @Rest\Get(path="/api/comercio/cuentas/{id}")
*/
public function getFindCuentas(int $id, ComercioManager $comercioManager) {
$data = $comercioManager->getFindCuenta($id);
return View::create($data, Response::HTTP_ACCEPTED);
}
/**
* @Rest\Get(path="/api/producto/categoria_producto/{id}")
*/
public function getProductos(int $id, ComercioManager $comercioManager, Request $request) {
$url = $request->getUri();
$data = $comercioManager->getProductos($id, $url);
return View::create($data, Response::HTTP_OK);
}
/**
* @Rest\Get(path="/api/menu/{idMenu}/imagen")
*/
public function getImagenProducto(int $idMenu, ComercioManager $comercioManager) {
$base64 = $comercioManager->getImagenProducto($idMenu);
if (!$base64) : return new Response('', Response::HTTP_NOT_FOUND); endif;
if (strpos($base64, 'base64,') !== false) : $base64 = explode('base64,', $base64, 2)[1]; endif;
$imagen = base64_decode($base64);
if ($imagen === false) : return new Response('', Response::HTTP_BAD_REQUEST); endif;
$finfo = new \finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->buffer($imagen);
return new Response($imagen, Response::HTTP_OK, ['Content-Type' => $mimeType, 'Content-Disposition' => 'inline']);
}
// ? CREATE
/**
* @Rest\Post(path="/api/comercio/orden/crear")
*/
public function crearOrden(ComercioManager $comercioManager, Request $request) {
$response = $comercioManager->crearOrden($request);
return View::create($response, Response::HTTP_ACCEPTED);
}
/**
* @Rest\Post(path="/api/comercio/orden/agregar")
*/
public function agregarOrden(ComercioManager $comercioManager, Request $request) {
$response = $comercioManager->agregarOrden($request);
return View::create($response, Response::HTTP_ACCEPTED);
}
/**
* @Rest\Post(path="/api/comercio/orden/pagar")
*/
public function pagarOrden(ComercioManager $comercioManager, Request $request, DocumentsService $documentsService) {
$response = $comercioManager->pagarOrden($request, $documentsService);
return View::create($response, Response::HTTP_ACCEPTED);
}
/**
* @Rest\Post(path="/api/comercio/orden/directa")
*/
public function ordenDirecta(ComercioManager $comercioManager, Request $request, DocumentsService $documentsService) {
$response = $comercioManager->ordenDirecta($request, $documentsService);
return View::create($response, Response::HTTP_ACCEPTED);
}
// ? UPDATE
/**
* @Rest\Put(path="/api/comercio/orden/{id}")
*/
public function actualizarOrden(int $id, ComercioManager $comercioManager, Request $request) {
$response = $comercioManager->actualizarOrden($id, $request);
return View::create($response, Response::HTTP_ACCEPTED);
}
// ? DELETE
/**
* @Rest\Delete(path="/api/comercio/orden/eliminar/{id}")
*/
public function deleteOrden(int $id, ComercioManager $comercioManager) {
$response = $comercioManager->deleteOrden($id);
return View::create($response, Response::HTTP_ACCEPTED);
}
}