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->isVendida() and !$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'); } }