App control
This commit is contained in:
44
app/Controller/API/Unidades.php
Normal file
44
app/Controller/API/Unidades.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user