<?php
session_start();

// সেশন/সিকিউরিটি চেক
if (!isset($_SESSION["user_token"])) {
    header("Location: ../index.php");
    exit;
}

if ($_SERVER["REQUEST_METHOD"] !== "POST") {
    header("Location: ../index.php");
    exit;
}

include_once("includes/configuration.php"); // ডেটাবেজ সংযোগ আছে ধরে নেওয়া হলো

// ===============================================
// ১. বেস ইউআরএল নির্ধারণের লজিক (নতুন যোগ করা)
// ===============================================
// সার্ভারের প্রোটোকল ও ডোমেইন ব্যবহার করে বেস ইউআরএল তৈরি করা
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domain = $_SERVER['HTTP_HOST'];
// এই বেস ইউআরএলটি হবে https://eduopen.top/ (আপনার ডোমেইন অনুযায়ী)
$base_url = $protocol . $domain . '/'; 


// 1. ছবি সেভ করার ফোল্ডার তৈরি ও পারমিশন নিশ্চিত করা
$target_dir = "photo/";

if (!is_dir($target_dir)) {
    // ফোল্ডার না থাকলে তৈরি করা হচ্ছে
    if (!mkdir($target_dir, 0777, true)) {
        echo "<script>alert('ছবি সেভ করার ফোল্ডার তৈরি করা যায়নি। পারমিশন (0777) চেক করুন।'); window.location.href='../index.php';</script>";
        exit;
    }
}

// Helper Functions
function generateRandomString($length = 10) {
    return bin2hex(random_bytes($length));
}

// ===============================================
// ২. uploadImage ফাংশনে Absolute URL রিটার্ন করা (সংশোধন)
// ===============================================
function uploadImage($fileInput, $prefix, $targetDir = "photo/", $baseUrl) {
    if (!isset($_FILES[$fileInput]) || $_FILES[$fileInput]['error'] !== UPLOAD_ERR_OK) {
        return null;
    }

    $file = $_FILES[$fileInput];
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
    $newName = $prefix . '_' . generateRandomString(5) . '.' . $ext;
    $path = $targetDir . $newName;

    if (move_uploaded_file($file['tmp_name'], $path)) {
        // ডেটাবেজে সেভ করার জন্য সম্পূর্ণ ইউআরএল রিটার্ন করা হলো
        return $baseUrl . $path; 
    }
    return null;
}

// ছবি আপলোড করা - ফাংশনে $base_url পাস করা হচ্ছে (সংশোধন)
$uploaded_imageUrl1 = uploadImage('imageUrl1', 'user', $target_dir, $base_url);
$uploaded_imageUrl2 = uploadImage('imageUrl2', 'sign', $target_dir, $base_url);

// Hidden field থেকে API URL ডেটা নেওয়া (API URL সাধারণত Absolute URL হয়)
$imageUrl1 = $uploaded_imageUrl1 ?? $_POST['imageUrl1_api'] ?? null;
$imageUrl2 = $uploaded_imageUrl2 ?? $_POST['imageUrl2_api'] ?? null;

// ডেটাবেজে NULL সেভ এড়াতে
$imageUrl1 = $imageUrl1 ?? '';
$imageUrl2 = $imageUrl2 ?? '';


// মূল্য যাচাই (পুরোনো লজিক)
$priceFile = 'api_key/smart.txt';
$nid_make = file_exists($priceFile) ? (float) file_get_contents($priceFile) : null;
if ($nid_make === null) {
    echo "<script>alert('মূল্য ফাইল খুঁজে পাওয়া যায়নি।'); window.location.href='../index.php';</script>";
    exit;
}

// ইউজার ব্যালেন্স চেক (পুরোনো লজিক)
$email = base64_decode($_SESSION["user_id"]);
$stmt = $conn->prepare("SELECT balance FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$res = $stmt->get_result();

if (!$res->num_rows) {
    echo "<script>alert('ইউজার পাওয়া যায়নি।'); window.location.href='../index.php';</script>";
    exit;
}

$user = $res->fetch_assoc();
$currentBalance = $user['balance'];

if ($currentBalance < $nid_make) {
    echo "<script>alert('পর্যাপ্ত ব্যালেন্স নেই।'); window.location.href='../index.php';</script>";
    exit;
}

// ডেটাবেজে রেকর্ড ঢোকানো
date_default_timezone_set('Asia/Dhaka');
$orderTime = date("Y-m-d H:i:s");

$insert = $conn->prepare("
    INSERT INTO smart 
    (email, nid, pin, name_bangla, name_english, dob, birth_place, name_father, name_mother, gender, blood_group, issueDate, image_url_12, image_url_22, full_address, created_at)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
");

// 3. bind_param: সকল ডেটা স্ট্রিং ('s') হিসেবে বাইন্ড করা হচ্ছে।
$insert->bind_param(
    "ssssssssssssssss",
    $email,
    $_POST['nid'],
    $_POST['pin'],
    $_POST['nameBangla'],
    $_POST['nameEnglish'],
    $_POST['dob'],
    $_POST['birthPlace'],
    $_POST['fatherName'],
    $_POST['motherName'],
    $_POST['gender'],
    $_POST['bloodGroup'],
    $_POST['issueDate'],
    $imageUrl1, // এখন Absolute URL সেভ হবে
    $imageUrl2, // এখন Absolute URL সেভ হবে
    $_POST['fulAddress'],
    $orderTime
);

if ($insert->execute()) {
    // ব্যালেন্স কাট
    $newBalance = $currentBalance - $nid_make;
    $update = $conn->prepare("UPDATE users SET balance = ? WHERE email = ?");
    $update->bind_param("ds", $newBalance, $email);
    $update->execute();

    // হিস্টরি লগ (আপনার লজিক অনুযায়ী)
    $log = $conn->prepare("
        INSERT INTO history_work 
        (email, order_type, price, current_balance, balance_after_cut, about_order, order_time)
        VALUES (?, 'স্মার্ট কার্ড মেইক', ?, ?, ?, 'make', ?)
    ");
    $log->bind_param("sddds", $email, $nid_make, $currentBalance, $newBalance, $orderTime);
    
    // **লগ ফাইল সেভ হচ্ছে না - এই সমস্যা সমাধানের জন্য:**
    if (!$log->execute()) { 
        // যদি লগ সেভ না হয়, তবে এই লাইনে আনকমেন্ট করে সার্ভার এরর লগ চেক করুন
        // error_log("History Log Insert Error: " . $log->error); 
    }

    echo "<script>alert('কার্ড সফলভাবে তৈরি হয়েছে।'); window.close();</script>";
} else {
    // ডেটাবেজ সেভ ব্যর্থ হলে ত্রুটি
    // echo "Database Error: " . $insert->error; // এটি আনকমেন্ট করে দেখুন কী এরর দেখাচ্ছে
    echo "<script>alert('তথ্য সেভ করতে সমস্যা হয়েছে।'); window.history.back();</script>";
}

// সংযোগ বন্ধ
if (isset($insert)) $insert->close();
if (isset($update)) $update->close();
if (isset($stmt)) $stmt->close();
if (isset($log)) $log->close();
if (isset($conn)) $conn->close();
?>
