<?php
require_once __DIR__ . '/config.php';

$currentUser = requireAuth();
$db = getDB();
$action = $_GET['action'] ?? 'list';
$id = intval($_GET['id'] ?? 0);

header('Content-Type: application/json');

switch ($action) {
    case 'list':
        $cat = $_GET['category'] ?? '';
        $where = "is_active = 1";
        $params = [];
        if ($cat) { $where .= " AND category = ?"; $params[] = $cat; }
        $stmt = $db->prepare("SELECT * FROM whatsapp_templates WHERE $where ORDER BY category, name");
        $stmt->execute($params);
        $rows = $stmt->fetchAll();
        foreach ($rows as &$r) {
            if ($r['variables']) $r['variables'] = json_decode($r['variables'], true);
        }
        jsonResponse(['success' => true, 'data' => $rows]);
        break;

    case 'create':
        $input = getInput();
        $stmt = $db->prepare("INSERT INTO whatsapp_templates (name, category, message, variables) VALUES (?, ?, ?, ?)");
        $stmt->execute([
            trim($input['name'] ?? ''),
            $input['category'] ?? 'general',
            trim($input['message'] ?? ''),
            json_encode($input['variables'] ?? [])
        ]);
        jsonResponse(['success' => true, 'id' => $db->lastInsertId(), 'message' => 'Template created']);
        break;

    case 'update':
        $input = getInput();
        $stmt = $db->prepare("UPDATE whatsapp_templates SET name=?, category=?, message=?, variables=? WHERE id=?");
        $stmt->execute([
            trim($input['name'] ?? ''),
            $input['category'] ?? 'general',
            trim($input['message'] ?? ''),
            json_encode($input['variables'] ?? []),
            $id
        ]);
        jsonResponse(['success' => true, 'message' => 'Template updated']);
        break;

    case 'delete':
        $db->prepare("DELETE FROM whatsapp_templates WHERE id=?")->execute([$id]);
        jsonResponse(['success' => true, 'message' => 'Template deleted']);
        break;

    default:
        jsonResponse(['success' => false, 'error' => 'Unknown action'], 400);
}
