ventaRepository->fetchById($venta_id)) ->addFactory('estados', (new Implement\Repository\Factory()) ->setCallable([$this->estadoVentaRepository, 'fetchByVenta']) ->setArgs([$venta_id])) ->addFactory('currentEstado', (new Implement\Repository\Factory()) ->setCallable([$this->estadoVentaRepository, 'fetchCurrentByVenta']) ->setArgs([$venta_id])); } public function getByProyecto(int $proyecto_id): array { $ventas = $this->ventaRepository->fetchByProyecto($proyecto_id); foreach ($ventas as &$venta) { $venta->estados = $this->estadoVentaRepository->fetchByVenta($venta->id); $venta->currentEstado = $this->estadoVentaRepository->fetchCurrentByVenta($venta->id); } return $ventas; } public function getByProyectoAndUnidad(string $proyecto_nombre, int $unidad_descripcion): Model\Venta { $venta = $this->ventaRepository->fetchByProyectoAndUnidad($proyecto_nombre, $unidad_descripcion); $venta->addFactory('estados', ['callable' => [$this->estadoVentaRepository, 'fetchByVenta'], 'args' => [$venta->id]]); $venta->addFactory('currentEstado', ['callable' => [$this->estadoVentaRepository, 'fetchCurrentByVenta'], 'args' => [$venta->id]]); return $venta; } }