<?php
// Include the database connection file
include 'db_connect.php'; 
$conn = getDbConnection();

// 1. Check Request Method
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    sendErrorResponse("Invalid request method. POST is required.", 405);
}

// 2. Read JSON Input
$json_data = file_get_contents('php://input');
$data = json_decode($json_data, true);

if (empty($data)) {
    sendErrorResponse("No data provided or invalid JSON format.");
}

// 3. Extract and Validate Required Fields
$name = $data['name'] ?? '';
$mobile_number = $data['mobile_number'] ?? '';
$product_label = $data['product_label'] ?? '';
$category = $data['category'] ?? '';

if (empty($name) || empty($mobile_number) || empty($product_label) || empty($category)) {
    sendErrorResponse("Missing required fields (name, mobile_number, product_label, category).");
}

// Simple validation for mobile number (ensure it's numeric and within length)
if (!preg_match('/^\d{10,13}$/', $mobile_number)) {
    sendErrorResponse("Invalid mobile number format. Must be 10-13 digits.");
}


// 4. Prepare SQL Insert Statement
$sql = "INSERT INTO customers (name, mobile_number, product_label, category) VALUES (?, ?, ?, ?)";
$stmt = $conn->prepare($sql);

if ($stmt === false) {
    sendErrorResponse("SQL preparation failed: " . $conn->error, 500);
}

// Bind parameters: 's' stands for string
$stmt->bind_param("ssss", $name, $mobile_number, $product_label, $category);


// 5. Execute and Handle Results
try {
    if ($stmt->execute()) {
        // Success response
        http_response_code(201); // Created
        echo json_encode([
            "success" => true, 
            "message" => "Customer **{$name}** added successfully.", 
            "id" => $conn->insert_id // Return the newly created ID
        ]);
    } else {
        // --- TEMPORARY DEBUGGING CHANGE IS HERE ---
        // If execution fails, send the detailed error back to the app via sendErrorResponse
        $error_message = "Database insertion failed. Error Code: " . $conn->errno . " | MySQL Error: " . $stmt->error;
        error_log($error_message); // Log on the server side

        if ($conn->errno == 1062) {
            // Handle specific unique key constraint error (mobile_number exists)
            sendErrorResponse("Mobile number **{$mobile_number}** already exists.", 409); // Conflict
        } else {
            // Send the raw MySQL error message for debugging purposes
            sendErrorResponse($error_message, 500);
        }
    }
} catch (Exception $e) {
    sendErrorResponse("An unexpected error occurred: " . $e->getMessage(), 500);
}

// 6. Close Connection
$stmt->close();
$conn->close();
?>