exec("CREATE TABLE IF NOT EXISTS admin.scheduled_campaigns (id SERIAL PRIMARY KEY, campaign_id INTEGER, scheduled_at TIMESTAMP, status VARCHAR(50) DEFAULT 'pending', executed_at TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); $pdo->exec("CREATE TABLE IF NOT EXISTS admin.recurring_jobs (id SERIAL PRIMARY KEY, name VARCHAR(255), job_type VARCHAR(100), schedule VARCHAR(100), config TEXT, last_run TIMESTAMP, next_run TIMESTAMP, is_active BOOLEAN DEFAULT true)"); $action = $_POST['action'] ?? $_GET['action'] ?? ''; switch ($action) { case 'schedule': $stmt = $pdo->prepare("INSERT INTO admin.scheduled_campaigns (campaign_id, scheduled_at) VALUES (?, ?)"); $stmt->execute([$_POST['campaign_id'], $_POST['scheduled_at']]); echo json_encode(['success' => true, 'id' => $pdo->lastInsertId()]); break; case 'list': $scheduled = $pdo->query("SELECT sc.*, c.name as campaign_name FROM admin.scheduled_campaigns sc LEFT JOIN admin.campaigns c ON sc.campaign_id = c.id ORDER BY scheduled_at")->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['scheduled' => $scheduled]); break; case 'cancel': $pdo->exec("UPDATE admin.scheduled_campaigns SET status = 'cancelled' WHERE id = " . intval($_POST['id'])); echo json_encode(['success' => true]); break; case 'pending': $pending = $pdo->query("SELECT * FROM admin.scheduled_campaigns WHERE status = 'pending' AND scheduled_at <= NOW()")->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['pending' => $pending, 'count' => count($pending)]); break; case 'add_recurring': $stmt = $pdo->prepare("INSERT INTO admin.recurring_jobs (name, job_type, schedule, config) VALUES (?, ?, ?, ?)"); $stmt->execute([$_POST['name'], $_POST['job_type'], $_POST['schedule'], $_POST['config'] ?? '{}']); echo json_encode(['success' => true]); break; case 'recurring': $jobs = $pdo->query("SELECT * FROM admin.recurring_jobs ORDER BY name")->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['jobs' => $jobs]); break; case 'toggle_recurring': $pdo->exec("UPDATE admin.recurring_jobs SET is_active = NOT is_active WHERE id = " . intval($_POST['id'])); echo json_encode(['success' => true]); break; default: echo json_encode(['actions' => ['schedule','list','cancel','pending','add_recurring','recurring','toggle_recurring']]); }