<?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'
]);
}
?>