pdo = $pdo; $this->orderRepository = $orderRepository; $this->versionRepository = $versionRepository; $this->sourceRepository = $sourceRepository; } // ==================== Delegation to specialized repositories ==================== public function findAllOrders(array $filters = [], int $limit = 50, int $offset = 0): array { return $this->orderRepository->findAllOrders($filters, $limit, $offset); } public function findOrder(int $id): ?array { return $this->orderRepository->findOrder($id); } public function getLastOrderSettings(): array { return $this->orderRepository->getLastOrderSettings(); } public function createOrder(array $data): int { return $this->orderRepository->createOrder($data); } public function updateOrderStatus(int $id, string $status): void { $this->orderRepository->updateOrderStatus($id, $status); } public function updateGenerationStatus(int $id, string $status, ?string $error = null): void { $this->orderRepository->updateGenerationStatus($id, $status, $error); } public function updateCritiqueStatus(int $id, string $status, ?string $error = null): void { $this->orderRepository->updateCritiqueStatus($id, $status, $error); } public function updateOrder(int $id, array $data): bool { return $this->orderRepository->updateOrder($id, $data); } public function findVersionsByOrder(int $orderId): array { return $this->versionRepository->findVersionsByOrder($orderId); } public function findLatestVersion(int $orderId): ?array { return $this->versionRepository->findLatestVersion($orderId); } public function findVersion(int $id): ?array { return $this->versionRepository->findVersion($id); } public function findCritiquesByVersion(int $versionId): array { return $this->versionRepository->findCritiquesByVersion($versionId); } public function findSourcesByOrder(int $orderId): array { return $this->sourceRepository->findSourcesByOrder($orderId); } // ==================== Profiles ==================== public function findAllProfiles(): array { $stmt = $this->pdo->query(" SELECT id, name, slug, content as config FROM content_config WHERE type = 'author_profile' AND status = 'active' ORDER BY name "); return $stmt->fetchAll(); } // ==================== Contracts ==================== public function findAllContracts(): array { $stmt = $this->pdo->query(" SELECT id, name, slug, content as config FROM content_config WHERE type = 'contract' AND status = 'active' ORDER BY name "); return $stmt->fetchAll(); } // ==================== Structures ==================== public function findAllStructures(): array { $stmt = $this->pdo->query(" SELECT id, name, slug, content as config FROM content_config WHERE type = 'structure' AND status = 'active' ORDER BY name "); return $stmt->fetchAll(); } // ==================== Critics ==================== public function findAllCritics(): array { $stmt = $this->pdo->query(' SELECT * FROM critics WHERE is_active = 1 ORDER BY sort_order '); return $stmt->fetchAll(); } // ==================== Statistics ==================== public function getStatistics(): array { $stats = []; $stmt = $this->pdo->query('SELECT COUNT(*) FROM content_orders'); $stats['total_orders'] = (int) $stmt->fetchColumn(); $stmt = $this->pdo->query('SELECT status, COUNT(*) as count FROM content_orders GROUP BY status'); $stats['by_status'] = $stmt->fetchAll(\PDO::FETCH_KEY_PAIR); $stmt = $this->pdo->query('SELECT COUNT(*) FROM content_versions'); $stats['total_versions'] = (int) $stmt->fetchColumn(); $stmt = $this->pdo->query('SELECT COUNT(*) FROM content_critiques'); $stats['total_critiques'] = (int) $stmt->fetchColumn(); return $stats; } }