This commit is contained in:
2023-11-23 00:53:49 -03:00
parent 9ab0515954
commit bf03e85975
32 changed files with 599 additions and 314 deletions

View File

@ -1,39 +1,51 @@
<?php
namespace Incoviba\Controller\API;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Implement\Exception\EmptyRedis;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Repository;
use Incoviba\Controller\withRedis;
use Incoviba\Model;
use Incoviba\Repository;
use Incoviba\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
class Proyectos
{
use withJson, withRedis;
public function list(ServerRequestInterface $request, ResponseInterface $response, Repository\Proyecto $proyectoRepository): ResponseInterface
public function list(ServerRequestInterface $request, ResponseInterface $response, Service\Redis $redisService,
Repository\Proyecto $proyectoRepository): ResponseInterface
{
$output = ['total' => 0];
$output = ['total' => 0, 'proyectos' => []];
$redisKey = 'proyectos:activos';
try {
$proyectos = $proyectoRepository->fetchAllActive();
$output['proyectos'] = $proyectos;
$output['total'] = count($proyectos);
} catch (EmptyResult) {}
$output['proyectos'] = $this->fetchRedis($redisService, $redisKey);
$output['total'] = count($output['proyectos']);
} catch (EmptyRedis) {
try {
$output['proyectos'] = $proyectoRepository->fetchAllActive();
$output['total'] = count($output['proyectos']);
$this->saveRedis($redisService, $redisKey, $output['proyectos']);
} catch (EmptyResult) {}
}
return $this->withJson($response, $output);
}
public function escriturando(ServerRequestInterface $request, ResponseInterface $response, Repository\Proyecto $proyectoRepository): ResponseInterface
public function escriturando(ServerRequestInterface $request, ResponseInterface $response,
Service\Redis $redisService, Repository\Proyecto $proyectoRepository): ResponseInterface
{
$output = [
'total' => 0,
'proyectos' => []
];
$output = ['total' => 0, 'proyectos' => []];
$redisKey = 'proyectos:escriturando';
try {
$proyectos = $proyectoRepository->fetchAllEscriturando();
$output['proyectos'] = $proyectos;
$output['total'] = count($proyectos);
} catch (EmptyResult) {}
$output['proyectos'] = $this->fetchRedis($redisService, $redisKey);
$output['total'] = count($output['proyectos']);
} catch (EmptyRedis) {
try {
$output['proyectos'] = $proyectoRepository->fetchAllEscriturando();
$output['total'] = count($output['proyectos']);
$this->saveRedis($redisService, $redisKey, $output['proyectos']);
} catch (EmptyResult) {}
}
return $this->withJson($response, $output);
}
public function unidades(ServerRequestInterface $request, ResponseInterface $response,
@ -41,7 +53,7 @@ class Proyectos
int $proyecto_id): ResponseInterface
{
$output = ['proyecto_id' => $proyecto_id, 'unidades' => [], 'total' => 0];
$redisKey = "unidades-proyecto-{$proyecto_id}";
$redisKey = "unidades:proyecto:{$proyecto_id}";
try {
$output = $this->fetchRedis($redisService, $redisKey);
} catch (EmptyRedis) {
@ -66,21 +78,29 @@ class Proyectos
}
return $this->withJson($response, $output);
}
public function disponibles(ServerRequestInterface $request, ResponseInterface $response, Repository\Venta\Unidad $unidadRepository, int $proyecto_id): ResponseInterface
public function disponibles(ServerRequestInterface $request, ResponseInterface $response,
Service\Redis $redisService, Repository\Venta\Unidad $unidadRepository,
int $proyecto_id): ResponseInterface
{
$output = [
'proyecto_id' => $proyecto_id,
'unidades' => []
];
$redisKey = "unidades:disponibles:proyecto:{$proyecto_id}";
try {
$output['unidades'] = $unidadRepository->fetchDisponiblesByProyecto($proyecto_id);
} catch (EmptyResult) {}
$output['unidades'] = $this->fetchRedis($redisService, $redisKey);
} catch (EmptyRedis) {
try {
$output['unidades'] = $unidadRepository->fetchDisponiblesByProyecto($proyecto_id);
$this->saveRedis($redisService, $redisKey, $output['unidades']);
} catch (EmptyResult) {}
}
return $this->withJson($response, $output);
}
public function superficies(ServerRequestInterface $request, ResponseInterface $response,
Repository\Proyecto $proyectoRepository, Repository\Venta $ventaRepository,
Repository\Venta\Unidad $unidadRepository, Service\Redis $redisService,
Service\Format $formatService, int $proyecto_id): ResponseInterface
Repository\Venta $ventaRepository, Repository\Venta\Unidad $unidadRepository,
Service\Redis $redisService, Service\Format $formatService,
int $proyecto_id): ResponseInterface
{
$output = [
'proyecto_id' => $proyecto_id,
@ -95,7 +115,7 @@ class Proyectos
'por_vender' => '0m²'
]
];
$redisKey = "superficices-proyecto-{$proyecto_id}";
$redisKey = "superficices:proyecto:{$proyecto_id}";
try {
$output = $this->fetchRedis($redisService, $redisKey);
} catch (EmptyRedis) {