proyectoRepository->fetchAllActive(); } public function getEscriturando(): array { return $this->proyectoRepository->fetchAllEscriturando(); } 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; } }