Files
oficial/app/Controller/API/Unidades.php
2021-03-25 23:33:37 -03:00

42 lines
1.3 KiB
PHP

<?php
namespace App\Controller\API;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Incoviba\old\Proyecto\Proyecto;
class Unidades {
public function no_reservadas(Request $request, Response $response, $id_proyecto, $id_tipo) {
$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) {
return !$item->isReservada();
});
$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);
$response->getBody()->write(\json_encode($output));
return $response->withHeader('Content-Type', 'application/json');
}
}