<?php
/**
 * API للعناوين
 */

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

require_once '../config/database.php';

// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['success' => false, 'message' => 'يجب تسجيل الدخول']);
    exit;
}

$database = new Database();
$conn = $database->getConnection();
$user_id = $_SESSION['user_id'];

$method = $_SERVER['REQUEST_METHOD'];

try {
    switch ($method) {
        case 'GET':
            // Get user addresses
            $stmt = $conn->prepare("SELECT * FROM user_addresses WHERE user_id = ? ORDER BY is_default DESC, created_at DESC");
            $stmt->execute([$user_id]);
            $addresses = $stmt->fetchAll(PDO::FETCH_ASSOC);
            
            echo json_encode(['success' => true, 'addresses' => $addresses]);
            break;
            
        case 'POST':
            // Add new address
            $data = json_decode(file_get_contents('php://input'), true);
            
            $label = trim($data['label'] ?? '');
            $address = trim($data['address'] ?? '');
            $lat = $data['lat'] ?? null;
            $lng = $data['lng'] ?? null;
            $is_default = isset($data['is_default']) ? 1 : 0;
            
            if (empty($label) || empty($address)) {
                echo json_encode(['success' => false, 'message' => 'البيانات غير مكتملة']);
                exit;
            }
            
            // If this is default, unset other defaults
            if ($is_default) {
                $conn->prepare("UPDATE user_addresses SET is_default = 0 WHERE user_id = ?")->execute([$user_id]);
            }
            
            // Insert new address
            $stmt = $conn->prepare("INSERT INTO user_addresses (user_id, label, address, latitude, longitude, is_default, created_at) VALUES (?, ?, ?, ?, ?, ?, NOW())");
            $stmt->execute([$user_id, $label, $address, $lat, $lng, $is_default]);
            
            $address_id = $conn->lastInsertId();
            
            // Update user's location if this is the first address or if location data is provided
            if ($lat && $lng) {
                // Check if user has location
                $check_user = $conn->prepare("SELECT latitude, longitude FROM users WHERE id = ?");
                $check_user->execute([$user_id]);
                $user_location = $check_user->fetch(PDO::FETCH_ASSOC);
                
                // Update user location if empty
                if (empty($user_location['latitude']) || empty($user_location['longitude'])) {
                    $update_user = $conn->prepare("UPDATE users SET latitude = ?, longitude = ?, location = ? WHERE id = ?");
                    $location_string = $lat . ',' . $lng;
                    $update_user->execute([$lat, $lng, $location_string, $user_id]);
                }
            }
            
            echo json_encode(['success' => true, 'message' => 'تم حفظ العنوان بنجاح', 'address_id' => $address_id]);
            break;
            
        case 'DELETE':
            // Delete address
            $data = json_decode(file_get_contents('php://input'), true);
            $address_id = $data['address_id'] ?? 0;
            
            $stmt = $conn->prepare("DELETE FROM user_addresses WHERE id = ? AND user_id = ?");
            $stmt->execute([$address_id, $user_id]);
            
            echo json_encode(['success' => true, 'message' => 'تم حذف العنوان']);
            break;
            
        default:
            http_response_code(405);
            echo json_encode(['success' => false, 'message' => 'Method not allowed']);
    }
} catch (PDOException $e) {
    // Check if table doesn't exist
    if ($e->getCode() == '42S02') {
        // Create table
        $sql = "CREATE TABLE IF NOT EXISTS user_addresses (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id INT NOT NULL,
            label VARCHAR(100) NOT NULL,
            address TEXT NOT NULL,
            latitude DECIMAL(10, 8) NULL,
            longitude DECIMAL(11, 8) NULL,
            is_default TINYINT(1) DEFAULT 0,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
        )";
        $conn->exec($sql);
        
        echo json_encode(['success' => true, 'message' => 'تم إنشاء جدول العناوين. حاول مرة أخرى.']);
    } else {
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => 'حدث خطأ: ' . $e->getMessage()]);
    }
}
