53 lines
2.6 KiB
PHP
Executable File
53 lines
2.6 KiB
PHP
Executable File
|
|
<?php
|
|
header('Content-Type: application/json');
|
|
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");
|
|
|
|
$pdo->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']]);
|
|
}
|
|
|