<?php
namespace App\Controller\API;
use App\Controller\BaseController;
use App\Entity\Log\LogInteraction;
use App\Repository\App\TipoCategoriaRepository;
use App\Services\API\CategoriaService;
use App\Services\API\TramiteService;
use App\Utils\APIResponse;
use App\Utils\CommonFunctions;
use Exception;
use OpenApi\Annotations as OA;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/categorias")
*/
class CategoriaController extends BaseController
{
/**
* @Route("", name="get_categorias", methods={"GET"})
* @param Request $request
* @param CategoriaService $categoriaService
* @param TipoCategoriaRepository $tipoCategoriaRepository
* @return Response
*
* @OA\Get(
* path="/api/v1/categorias",
* summary="Obtener todas las categorias",
* @OA\Response(
* response=200,
* description="Response",
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* @OA\Property(property="status", type="integer"),
* @OA\Property(property="errors", type="array", @OA\Items(type="string")),
* @OA\Property(property="content", type="object")
* )
* )
* )
* )
*/
public function categoriasAction(Request $request, CategoriaService $categoriaService, TipoCategoriaRepository $tipoCategoriaRepository)
{
$statusCode = APIResponse::$SUCCESS;
$status = APIResponse::$SUCCESS;
$errors = array();
$result = null;
try {
$tipoCategoria = $tipoCategoriaRepository->findOneBy(['nombre' => 'Tramites y servicios']);
$result = $categoriaService->getCategoriasByTipoCategoria($tipoCategoria);
}
catch (Exception $e) {
$statusCode = APIResponse::$INTERNAL_ERROR;
$status = APIResponse::$INTERNAL_ERROR;
$errors = array($e->getMessage());
$errorInfo = CommonFunctions::getErrorException($e);
$this->logInteractionService->addErrorLog(
LogInteraction::$LIST,
CommonFunctions::getClassMethod(__METHOD__),
$e->getMessage(),
$errorInfo
);
}
return $this->generateJsonResponse($result, $statusCode, $status, $errors);
}
/**
* @Route("/sub-categorias-grupos/{categoriaId}", name="get_sub_categorias_grupos", methods={"GET"})
* @param Request $request
* @param CategoriaService $categoriaService
* @param $categoriaId
* @return Response
*
* @OA\Get(
* path="/api/v1/categorias/sub-categorias-grupos/{categoriaId}",
* summary="Obtener sub categorias y grupos",
* @OA\Response(
* response=200,
* description="Response",
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* @OA\Property(property="status", type="integer"),
* @OA\Property(property="errors", type="array", @OA\Items(type="string")),
* @OA\Property(property="content", type="object")
* )
* )
* )
* )
*/
public function subCategoriasGruposAction(Request $request, CategoriaService $categoriaService, $categoriaId)
{
$statusCode = APIResponse::$SUCCESS;
$status = APIResponse::$SUCCESS;
$errors = array();
$result = null;
try {
$result = $categoriaService->getSubCategoriasGrupos($categoriaId);
} catch (Exception $e) {
$statusCode = APIResponse::$INTERNAL_ERROR;
$status = APIResponse::$INTERNAL_ERROR;
$errors = array($e->getMessage());
$errorInfo = CommonFunctions::getErrorException($e);
$this->logInteractionService->addErrorLog(
LogInteraction::$LIST,
CommonFunctions::getClassMethod(__METHOD__),
$e->getMessage(),
$errorInfo
);
}
return $this->generateJsonResponse($result, $statusCode, $status, $errors);
}
/**
* @Route("/tramite/ficha-tramite/{id}", name="get_ficha", methods={"GET"})
* @param TramiteService $tramiteService
* @param $id
* @return Response
*
* @OA\Get(
* path="/api/v1/categorias/tramite/ficha-tramite/{id}",
* summary="Obtiene la ficha de un trĂ¡mite para mostrarla en el front",
* @OA\Response(
* response=200,
* description="Response",
* @OA\MediaType(
* mediaType="application/json",
* @OA\Schema(
* @OA\Property(property="status", type="integer"),
* @OA\Property(property="errors", type="array", @OA\Items(type="string")),
* @OA\Property(property="content", type="object")
* )
* )
* )
* )
*/
public function getFichaAction(TramiteService $tramiteService, $id)
{
$statusCode = APIResponse::$SUCCESS;
$status = APIResponse::$SUCCESS;
$errors = array();
$result = null;
try {
$result = $tramiteService->obtenerFichaTramite($id);
} catch (Exception $e) {
$statusCode = APIResponse::$INTERNAL_ERROR;
$status = APIResponse::$INTERNAL_ERROR;
$errors = array($e->getMessage());
$errorInfo = CommonFunctions::getErrorException($e);
$this->logInteractionService->addErrorLog(
LogInteraction::$LIST,
CommonFunctions::getClassMethod(__METHOD__),
$e->getMessage(),
$errorInfo
);
}
return $this->generateJsonResponse($result, $statusCode, $status, $errors);
}
}