'error', 'message' => 'Unauthorized'])); // } $action = $_GET['action'] ?? ''; $platform = $_GET['platform'] ?? 'facebook'; try { $con = Database::get('main'); switch ($action) { case 'get_task': $stmt = $con->prepare(" SELECT id, type FROM marketing_tasks WHERE status = 'pending' AND platform = ? ORDER BY id ASC LIMIT 1 "); $stmt->execute([$platform]); $task = $stmt->fetch(PDO::FETCH_ASSOC); if ($task) { $update = $con->prepare("UPDATE marketing_tasks SET status = 'in_progress' WHERE id = ?"); $update->execute([$task['id']]); echo json_encode(['status' => 'success', 'data' => $task]); } else { echo json_encode(['status' => 'success', 'message' => 'No tasks available', 'data' => null]); } break; case 'complete_task': $taskId = $_POST['task_id'] ?? null; $result = $_POST['result'] ?? ''; if ($taskId) { $stmt = $con->prepare("UPDATE marketing_tasks SET status = 'completed', completed_at = NOW() WHERE id = ?"); $stmt->execute([$taskId]); echo json_encode(['status' => 'success']); } else { echo json_encode(['status' => 'error', 'message' => 'task_id required']); } break; case 'fail_task': $taskId = $_POST['task_id'] ?? null; $errorMsg = $_POST['error_message'] ?? 'Unknown error'; if ($taskId) { $stmt = $con->prepare("UPDATE marketing_tasks SET status = 'failed', error_message = ? WHERE id = ?"); $stmt->execute([$errorMsg, $taskId]); echo json_encode(['status' => 'success']); } else { echo json_encode(['status' => 'error', 'message' => 'task_id required']); } break; case 'evaluate_posts': $input = json_decode(file_get_contents('php://input'), true); $posts = $input['posts'] ?? []; if (empty($posts)) { echo json_encode(['status' => 'success', 'data' => null]); break; } $gemini = new SiroGeminiService(); $reportHtml = $gemini->evaluatePostsForReporting($posts); if ($reportHtml) { // Save to database $stmt = $con->prepare("INSERT INTO marketing_reports (platform, report_html) VALUES (?, ?)"); $stmt->execute([$platform, $reportHtml]); $reportId = $con->lastInsertId(); // Send FCM notification to admins $fcm = new FcmService(); $fcm->send( token: '/topics/admin_alerts', title: 'New Social Media Intelligence Report 📊', body: "A new autonomous analysis report for {$platform} has been generated.", data: [ 'type' => 'marketing_report', 'report_id' => $reportId, 'platform' => $platform ], category: 'marketing_report' ); } echo json_encode(['status' => 'success', 'message' => 'Posts evaluated and report saved']); break; case 'get_reports': $stmt = $con->prepare(" SELECT id, platform, report_html, is_weekly, created_at FROM marketing_reports ORDER BY created_at DESC LIMIT 50 "); $stmt->execute(); $reports = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['status' => 'success', 'data' => $reports]); break; default: echo json_encode(['status' => 'error', 'message' => 'Invalid action']); } } catch (Exception $e) { http_response_code(500); echo json_encode(['status' => 'error', 'message' => 'Server error: ' . $e->getMessage()]); }