2023-07-24 20:55:26 -04:00
|
|
|
<?php
|
|
|
|
namespace Incoviba\Controller;
|
|
|
|
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
|
|
use Incoviba\Common\Alias\View;
|
2023-09-07 23:03:21 -03:00
|
|
|
use Incoviba\Model;
|
2023-10-20 19:03:29 -03:00
|
|
|
use Incoviba\Repository;
|
|
|
|
use Incoviba\Service;
|
2023-07-24 20:55:26 -04:00
|
|
|
|
|
|
|
class Proyectos
|
|
|
|
{
|
2023-10-13 10:45:21 -03:00
|
|
|
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, View $view, Repository\Proyecto $proyectoRepository): ResponseInterface
|
2023-07-24 20:55:26 -04:00
|
|
|
{
|
2023-10-13 10:45:21 -03:00
|
|
|
$proyectos = $proyectoRepository->fetchAll();
|
|
|
|
usort($proyectos, function(Model\Proyecto $a, Model\Proyecto $b) {
|
|
|
|
return strcmp($a->descripcion, $b->descripcion);
|
|
|
|
});
|
|
|
|
return $view->render($response, 'proyectos.list', compact('proyectos'));
|
2023-07-24 20:55:26 -04:00
|
|
|
}
|
2023-10-13 10:45:21 -03:00
|
|
|
public function unidades(ServerRequestInterface $request, ResponseInterface $response, View $view, Repository\Proyecto $proyectoRepository, Repository\Venta\Unidad $unidadRepository): ResponseInterface
|
2023-07-24 20:55:26 -04:00
|
|
|
{
|
2023-10-13 10:45:21 -03:00
|
|
|
$proyectos = $proyectoRepository->fetchAll();
|
|
|
|
$proyectos = array_filter($proyectos, function(Model\Proyecto $proyecto) use ($unidadRepository) {
|
|
|
|
$unidades = $unidadRepository->fetchByProyecto($proyecto->id);
|
|
|
|
return count($unidades) > 0;
|
|
|
|
});
|
|
|
|
usort($proyectos, function(Model\Proyecto $a, Model\Proyecto $b) {
|
|
|
|
return strcmp($a->descripcion, $b->descripcion);
|
|
|
|
});
|
|
|
|
return $view->render($response, 'proyectos.unidades', compact('proyectos'));
|
2023-09-07 23:03:21 -03:00
|
|
|
}
|
2023-10-20 19:03:29 -03:00
|
|
|
public function show(ServerRequestInterface $request, ResponseInterface $response, View $view, Service\Proyecto $proyectoService, int $proyecto_id): ResponseInterface
|
|
|
|
{
|
|
|
|
$proyecto = $proyectoService->getById($proyecto_id);
|
|
|
|
return $view->render($response, 'proyectos.show', compact('proyecto'));
|
|
|
|
}
|
2023-07-24 20:55:26 -04:00
|
|
|
}
|