proyectoRepository->fetchAll($orderBy)); } catch (Implement\Exception\EmptyResult) { return []; } } public function getVendibles(null|string|array $orderBy = null): array { return $this->proyectoRepository->fetchAllActive($orderBy); } public function getEscriturando(): array { return $this->proyectoRepository->fetchAllEscriturando(); } /** * @param int $proyecto_id * @return Model\Proyecto * @throws Implement\Exception\EmptyResult */ public function getById(int $proyecto_id): Model\Proyecto { return $this->process($this->proyectoRepository->fetchById($proyecto_id)); } public function getByName(string $name): Model\Proyecto { return $this->process($this->proyectoRepository->fetchByName($name)); } public function getByInmobiliaria(int $inmobiliaria_rut): array { return array_map([$this, 'process'], $this->proyectoRepository->fetchByInmobiliaria($inmobiliaria_rut)); } protected function process(Model\Proyecto $proyecto): Model\Proyecto { $proyecto->addFactory('estados', (new Implement\Repository\Factory()) ->setCallable([$this->estadoProyecto, 'fetchByProyecto']) ->setArgs([$proyecto->id])); $proyecto->addFactory('currentEstado', (new Implement\Repository\Factory()) ->setCallable([$this->estadoProyecto, 'fetchCurrentByProyecto']) ->setArgs([$proyecto->id])); return $proyecto; } }