2021-03-25 21:10:44 -03:00
|
|
|
<?php
|
|
|
|
namespace App\Controller\API;
|
|
|
|
|
2021-03-25 23:33:37 -03:00
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
2021-03-25 21:10:44 -03:00
|
|
|
use Incoviba\old\Proyecto\Proyecto;
|
|
|
|
|
|
|
|
class Unidades {
|
2021-03-25 23:33:37 -03:00
|
|
|
public function no_reservadas(Request $request, Response $response, $id_proyecto, $id_tipo) {
|
2021-03-25 21:10:44 -03:00
|
|
|
$proyecto = model(Proyecto::class)->findOne($id_proyecto);
|
|
|
|
if (!$proyecto) {
|
|
|
|
throw new \InvalidArgumentException('Proyecto identificado por ' . $id_proyecto . ' no existe.');
|
|
|
|
}
|
|
|
|
$unidades = $proyecto->unidades($id_tipo);
|
|
|
|
$unidades = array_filter($unidades, function($item) {
|
2021-03-26 16:01:56 -03:00
|
|
|
return !$item->isVendida() and !$item->isReservada();
|
2021-03-25 21:10:44 -03:00
|
|
|
});
|
|
|
|
$unidades = array_map(function($item) {
|
|
|
|
return $item->asArray();
|
|
|
|
}, $unidades);
|
|
|
|
usort($unidades, function($a, $b) {
|
|
|
|
$ap = strpos($a['descripcion'], ' ');
|
|
|
|
$ad = $a['descripcion'];
|
|
|
|
if ($ap != false) {
|
|
|
|
$ad = substr($ad, 0, $ap);
|
|
|
|
}
|
|
|
|
$bd = $b['descripcion'];
|
|
|
|
$bp = strpos($b['descripcion'], ' ');
|
|
|
|
if ($bp != false) {
|
|
|
|
$bd = substr($bd, 0, $bp);
|
|
|
|
}
|
|
|
|
return strcmp(
|
|
|
|
str_pad($ad, 4, '0', \STR_PAD_LEFT),
|
|
|
|
str_pad($bd, 4, '0', \STR_PAD_LEFT)
|
|
|
|
);
|
|
|
|
});
|
|
|
|
$output = array_values($unidades);
|
2021-03-25 23:33:37 -03:00
|
|
|
$response->getBody()->write(\json_encode($output));
|
|
|
|
return $response->withHeader('Content-Type', 'application/json');
|
2021-03-25 21:10:44 -03:00
|
|
|
}
|
|
|
|
}
|