Mostrar alertas en inicio

This commit is contained in:
2023-10-19 18:20:37 -03:00
parent c2a3192b32
commit 02e1f3e091
25 changed files with 915 additions and 225 deletions

View File

@ -0,0 +1,56 @@
<?php
namespace Incoviba\Controller\API\Ventas;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Common\Implement\Exception\EmptyResult;
use Incoviba\Controller\API\withJson;
use Incoviba\Model;
use Incoviba\Repository;
class Unidades
{
use withJson;
public function disponibles(ServerRequestInterface $request, ResponseInterface $response, Repository\Venta\Unidad $unidadRepository, Repository\Proyecto\TipoUnidad $tipoUnidadRepository): ResponseInterface
{
$body = $request->getBody();
$json = json_decode($body->getContents());
$proyecto_id = $json->proyecto_id;
$output = [
'proyecto_id' => $proyecto_id,
'unidades' => [
'total' => [
'departamentos' => 0,
'estacionamientos' => 0,
'bodegas' => 0,
],
'departamentos' => 0,
'estacionamientos' => 0,
'bodegas' => 0,
]
];
try {
$totalUnidades = $unidadRepository->fetchByProyecto($proyecto_id);
$unidades = $unidadRepository->fetchDisponiblesByProyecto($proyecto_id);
$tiposUnidades = $tipoUnidadRepository->fetchAll();
foreach ($tiposUnidades as $tipoUnidad) {
$tempUnidades = array_filter($totalUnidades, function(Model\Venta\Unidad $unidad) use ($tipoUnidad) {
return $unidad->proyectoTipoUnidad->tipoUnidad->id === $tipoUnidad->id;
});
if (count($tempUnidades) > 0) {
$output['unidades']['total']["{$tipoUnidad->descripcion}s"] = count($tempUnidades);
}
$tempUnidades = array_filter($unidades, function(Model\Venta\Unidad $unidad) use ($tipoUnidad) {
return $unidad->proyectoTipoUnidad->tipoUnidad->id === $tipoUnidad->id;
});
if (count($tempUnidades) === 0) {
continue;
}
$output['unidades']["{$tipoUnidad->descripcion}s"] = count($tempUnidades);
}
} catch (EmptyResult) {}
return $this->withJson($response, $output);
}
}