<?php
// NEXUS Commerce - Admin Store Accounts API Manager
require_once __DIR__ . '/db.php';

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

$action = $_GET['action'] ?? 'list';

try {
    if ($action === 'list') {
        $stmt = $pdo->query("
            SELECT s.*, 
                   u.name as owner_name, 
                   u.email as owner_email, 
                   u.role as owner_role,
                   (SELECT COUNT(*) FROM products p WHERE p.store_id = s.id) as product_count,
                   (SELECT COALESCE(SUM(p.price * p.sales_count), 0) FROM products p WHERE p.store_id = s.id) as total_sales
            FROM stores s
            JOIN users u ON s.user_id = u.id
            ORDER BY s.id DESC
        ");
        $stores = $stmt->fetchAll();
        echo json_encode(['status' => 'success', 'data' => $stores]);
        exit;
    }

    if ($action === 'add' && $_SERVER['REQUEST_METHOD'] === 'POST') {
        $store_name = trim($_POST['store_name'] ?? '');
        $owner_name = trim($_POST['owner_name'] ?? '');
        $owner_email = trim($_POST['owner_email'] ?? '');
        $logo_url = trim($_POST['logo_url'] ?? 'https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?w=150');
        $trust_score = intval($_POST['trust_score'] ?? 95);
        $is_verified = intval($_POST['is_verified'] ?? 1);

        if (!$store_name || !$owner_email) {
            echo json_encode(['status' => 'error', 'message' => 'กรุณากรอกชื่อร้านค้าและอีเมล']);
            exit;
        }

        // Check if user exists
        $stmtUser = $pdo->prepare("SELECT id FROM users WHERE email = ?");
        $stmtUser->execute([$owner_email]);
        $existingUser = $stmtUser->fetch();

        if ($existingUser) {
            $user_id = $existingUser['id'];
            // Update role to seller
            $pdo->prepare("UPDATE users SET role = 'seller' WHERE id = ?")->execute([$user_id]);
        } else {
            // Create new seller user
            $stmtInsertUser = $pdo->prepare("INSERT INTO users (name, email, role, level, avatar_url) VALUES (?, ?, 'seller', 'Elite', ?)");
            $stmtInsertUser->execute([$owner_name ?: $store_name, $owner_email, $logo_url]);
            $user_id = $pdo->lastInsertId();
        }

        // Create store
        $stmtStore = $pdo->prepare("INSERT INTO stores (user_id, store_name, logo_url, rating, trust_score, response_rate, is_verified) VALUES (?, ?, ?, 4.9, ?, 98, ?)");
        $stmtStore->execute([$user_id, $store_name, $logo_url, $trust_score, $is_verified]);

        echo json_encode(['status' => 'success', 'message' => 'สร้างบัญชีร้านค้าเรียบร้อยแล้ว']);
        exit;
    }

    if ($action === 'update' && $_SERVER['REQUEST_METHOD'] === 'POST') {
        $id = intval($_POST['id'] ?? 0);
        $store_name = trim($_POST['store_name'] ?? '');
        $owner_name = trim($_POST['owner_name'] ?? '');
        $owner_email = trim($_POST['owner_email'] ?? '');
        $trust_score = intval($_POST['trust_score'] ?? 95);
        $is_verified = intval($_POST['is_verified'] ?? 1);

        if (!$id || !$store_name) {
            echo json_encode(['status' => 'error', 'message' => 'ข้อมูลไม่ถูกต้อง']);
            exit;
        }

        // Get store user_id
        $stmtS = $pdo->prepare("SELECT user_id FROM stores WHERE id = ?");
        $stmtS->execute([$id]);
        $st = $stmtS->fetch();

        if ($st) {
            $pdo->prepare("UPDATE stores SET store_name = ?, trust_score = ?, is_verified = ? WHERE id = ?")
                ->execute([$store_name, $trust_score, $is_verified, $id]);

            if ($owner_email || $owner_name) {
                $pdo->prepare("UPDATE users SET name = COALESCE(NULLIF(?, ''), name), email = COALESCE(NULLIF(?, ''), email) WHERE id = ?")
                    ->execute([$owner_name, $owner_email, $st['user_id']]);
            }
        }

        echo json_encode(['status' => 'success', 'message' => 'อัปเดตข้อมูลร้านค้าเรียบร้อยแล้ว']);
        exit;
    }

    if ($action === 'adjust_trust' && $_SERVER['REQUEST_METHOD'] === 'POST') {
        $id = intval($_POST['id'] ?? 0);
        $delta = intval($_POST['delta'] ?? 5);

        $pdo->prepare("UPDATE stores SET trust_score = MIN(100, MAX(0, trust_score + ?)) WHERE id = ?")->execute([$delta, $id]);
        echo json_encode(['status' => 'success']);
        exit;
    }

    if ($action === 'toggle_verify' && $_SERVER['REQUEST_METHOD'] === 'POST') {
        $id = intval($_POST['id'] ?? 0);
        $pdo->prepare("UPDATE stores SET is_verified = CASE WHEN is_verified = 1 THEN 0 ELSE 1 END WHERE id = ?")->execute([$id]);
        echo json_encode(['status' => 'success']);
        exit;
    }

    if ($action === 'delete' && $_SERVER['REQUEST_METHOD'] === 'POST') {
        $id = intval($_POST['id'] ?? 0);
        $pdo->prepare("DELETE FROM stores WHERE id = ?")->execute([$id]);
        echo json_encode(['status' => 'success', 'message' => 'ลบบัญชีร้านค้าเรียบร้อยแล้ว']);
        exit;
    }

    echo json_encode(['status' => 'error', 'message' => 'Action not supported']);

} catch (Exception $e) {
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
