0]; try { $proyectos = $proyectoRepository->fetchAllActive(); $output['proyectos'] = $proyectos; $output['total'] = count($proyectos); } catch (EmptyResult) {} return $this->withJson($response, $output); } public function unidades(ServerRequestInterface $request, ResponseInterface $response, Repository\Venta\Unidad $unidadRepository, int $proyecto_id): ResponseInterface { $output = ['proyecto_id' => $proyecto_id, 'unidades' => [], 'total' => 0]; try { $unidades = $unidadRepository->fetchDisponiblesByProyecto($proyecto_id); $tipos = []; foreach ($unidades as $unidad) { if (!isset($tipos[$unidad->proyectoTipoUnidad->tipoUnidad->descripcion])) { $tipos[$unidad->proyectoTipoUnidad->tipoUnidad->descripcion] = []; } $tipos[$unidad->proyectoTipoUnidad->tipoUnidad->descripcion] []= $unidad; } foreach ($tipos as &$subtipo) { usort($subtipo, function(Model\Venta\Unidad $a, Model\Venta\Unidad $b) { return strcmp(str_pad($a->descripcion, 4, '0', STR_PAD_LEFT), str_pad($b->descripcion, 4, '0', STR_PAD_LEFT)); }); } $output['unidades'] = $tipos; $output['total'] = count($unidades); } catch (EmptyResult) {} return $this->withJson($response, $output); } }