<?php
// Enable error reporting for debugging
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Enable CORS headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
header("Content-Type: application/json; charset=UTF-8");

require_once 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Start a database transaction
    $pdo->beginTransaction();

    try {
        // Validate required inputs
        $requiredFields = ['mobile', 'user_id'];
        foreach ($requiredFields as $field) {
            if (!isset($_POST[$field]) || empty($_POST[$field])) {
                throw new Exception("$field is required");
            }
        }

        $mobile = $_POST['mobile'];
        $userId = intval($_POST['user_id']);

        // Check if user has already used the free plan
        $checkFreePlanStmt = $pdo->prepare("
            SELECT COUNT(*) as free_plan_count 
            FROM membership 
            WHERE mem_mobile = :mobile AND mem_plan_type = 'free_7_days'
        ");
        $checkFreePlanStmt->execute(['mobile' => $mobile]);
        $freePlanCheck = $checkFreePlanStmt->fetch(PDO::FETCH_ASSOC);

        if ($freePlanCheck['free_plan_count'] > 0) {
            throw new Exception("Free plan has already been used for this mobile number");
        }

        // Calculate dates
        $startDate = date('Y-m-d');
        $endDate = date('Y-m-d', strtotime('+4 days'));

        // Prepare membership data
        $membershipData = [
            'user_id' => $userId,
            'mem_mobile' => $mobile,
            'mem_start_date' => $startDate,
            'mem_end_date' => $endDate,
            'mem_question_left' => 5, // 5 questions for 7-day free plan
            'status' => 'Active',
            'mem_plan_type' => 'free_7_days'
        ];

        // Insert new membership
        $insertStmt = $pdo->prepare("
            INSERT INTO membership 
            (mem_mem_id, mem_mobile, mem_start_date, mem_end_date, mem_question_left, status, mem_plan_type) 
            VALUES 
            (:user_id, :mem_mobile, :mem_start_date, :mem_end_date, :mem_question_left, :status, :mem_plan_type)
        ");
        $insertStmt->execute($membershipData);

        // Commit the transaction
        $pdo->commit();

        // Prepare success response
        $response = [
            'status' => 'success',
            'message' => 'Free 7-day plan activated successfully',
            'planDetails' => [
                'startDate' => $startDate,
                'endDate' => $endDate,
                'questionsLeft' => 5,
                'userId' => $userId
            ]
        ];

        echo json_encode($response);
    } catch (Exception $e) {
        // Rollback the transaction in case of error
        $pdo->rollBack();

        // Prepare error response
        $response = [
            'status' => 'error',
            'message' => $e->getMessage()
        ];

        echo json_encode($response);
        exit;
    }
} else {
    // Method not allowed
    http_response_code(405);
    echo json_encode([
        'status' => 'error',
        'message' => 'Method Not Allowed'
    ]);
}
?>