Files
oficial/app/Controller/API/Unidades.php
2021-03-25 21:10:44 -03:00

45 lines
1.2 KiB
PHP

<?php
namespace App\Controller\API;
use App\Definition\Controller;
use Incoviba\old\Proyecto\Proyecto;
use Incoviba\old\Venta\Unidad;
class Unidades {
use Controller;
public static function unidades_no_reservadas() {
$id_proyecto = get('proyecto');
$id_tipo = get('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);
return json_encode($output);
}
}