File "download.php"

Full path: /home/julaysp1/public_html/nibondon/download.php
File size: 5.8 B (5.8 KB bytes)
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor &nnbsp; Back

<?php
session_start();
error_reporting(0);

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

if (empty($_SESSION['user_id'])) {
    header("location: ../index.php");
    exit();
}

require_once("../includes/configuration.php");

// Constants
define('MIN_BALANCE', 30);
define('RANDOM_STRING_LENGTH', 4);

// Helper Functions
function base64_encode_post($key) {
    return isset($_POST[$key]) ? base64_encode($_POST[$key]) : null;
}

function generateRandomString($length = 60) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ///';
    return substr(str_shuffle(str_repeat($characters, ceil($length / strlen($characters)))), 0, $length);
}

function generateRandomLink($customLink = null) {
    return $customLink ? $customLink : "https://bdris.gov.bd/certificate/verify?key=" . generateRandomString();
}

function fetchSingleValue($conn, $sql, $paramType = '', $params = []) {
    $stmt = $conn->prepare($sql);
    if ($paramType && $params) {
        $stmt->bind_param($paramType, ...$params);
    }
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->fetch_row()[0] ?? null;
}

function updateBalance($conn, $email, $amount) {
    $stmt = $conn->prepare("UPDATE users SET balance = balance - ? WHERE email = ?");
    $stmt->bind_param("is", $amount, $email);
    return $stmt->execute();
}

// Retrieve User Info
$email_session = base64_decode($_SESSION['user_id']);
$userBalance = fetchSingleValue($conn, "SELECT balance FROM users WHERE email = ?", 's', [$email_session]);
$priceOfNibondon = file_get_contents('../api_key/nibondon_make.txt');
// Fetch Price for Nibondon


if ($priceOfNibondon > $userBalance) {
    echo json_encode(['status' => 'error', 'message' => 'আপনার পর্যাপ্ত ব্যাল্যন্স নাই। কাজ করতে প্রথমে রির্চাজ করুন।']);
    exit();
}

// Deduct Balance
if (!updateBalance($conn, $email_session, $priceOfNibondon)) {
    echo json_encode(['status' => 'error', 'message' => 'Error deducting balance. Please try again.']);
    exit();
}

// Calculate balance after deduction
$balanceAfterCut = $userBalance - $priceOfNibondon;

// Process Form Inputs
$data = [
    'union' => base64_encode_post("union"),
    'union_address' => base64_encode_post("UnionAdr"),
    'registration_date' => base64_encode_post("DateOfReg"),
    'issue_date' => base64_encode_post("DataOfIssue"),
    'birth_number' => base64_encode_post("BrNumber"),
    'birth_date' => base64_encode_post("dateOfBirth"),
    'birth_date_in_words' => base64_encode_post("dateOfBirthInWord"),
    'gender' => base64_encode_post("Sex"),
    'name_bn' => base64_encode_post("nameBn"),
    'name_en' => base64_encode_post("nameEn"),
    'father_name_bn' => base64_encode_post("fnameBn"),
    'father_name_en' => base64_encode_post("fnameEn"),
    'father_nationality_bn' => base64_encode_post("fNationBn"),
    'mother_nationality_bn' => base64_encode_post("mNationBn"),
    'father_nationality_en' => base64_encode_post("fNationEn"),
    'mother_name_en' => base64_encode_post("mNameEn"),
    'mother_name_bn' => base64_encode_post("mNameBn"),
    'mother_nationality_en' => base64_encode_post("mNationEn"),
    'place_of_birth_en' => base64_encode_post("placeOfBirdth"),
    'place_of_birth_bn' => base64_encode_post("placeOfBirdthBn"),
    'address_bn' => base64_encode_post("AddressBn"),
    'address_en' => base64_encode_post("AddressEn"),
    'link' => base64_encode(generateRandomLink($_POST['link'] ?? null)),
    'random_char' => $_POST['randomChar'] ?? generateRandomString(RANDOM_STRING_LENGTH)
];

// Insert Log
$stmt = $conn->prepare("
    INSERT INTO logsn (
        user, nameEnglish, nameBangla, brn, regOffice, officeAddr, link, letterQR, 
        gender, dateOfReg, DateOfIssu, Birth, BirthInWord, fnameBangla, fnameEnglish, 
        placeOfBirthBn, placeOfBirthEn, fullAdrrBn, fullAdrrEn, fNation, mNation, 
        fNationBn, mNationBn, mNameBn, mNameEn, specify
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'new')
");
$stmt->bind_param(
    "sssssssssssssssssssssssss",
    $email_session,
    $data['name_en'],
    $data['name_bn'],
    $data['birth_number'],
    $data['union'],
    $data['union_address'],
    $data['link'],
    $data['random_char'],
    $data['gender'],
    $data['registration_date'],
    $data['issue_date'],
    $data['birth_date'],
    $data['birth_date_in_words'],
    $data['father_name_bn'],
    $data['father_name_en'],
    $data['place_of_birth_bn'],
    $data['place_of_birth_en'],
    $data['address_bn'],
    $data['address_en'],
    $data['father_nationality_en'],
    $data['mother_nationality_en'],
    $data['father_nationality_bn'],
    $data['mother_nationality_bn'],
    $data['mother_name_bn'],
    $data['mother_name_en']
);

if ($stmt->execute()) {
    // Insert Work History
    $orderTime = date('Y-m-d H:i:s');
    $stmtHistory = $conn->prepare("
        INSERT INTO history_work (email, order_type, price, current_balance, balance_after_cut, about_order, order_time) 
        VALUES (?, 'নিবন্ধন মেইক', ?, ?, ?, 'server', ?)
    ");
    $stmtHistory->bind_param("sddds", $email_session, $priceOfNibondon, $userBalance, $balanceAfterCut, $orderTime);
    
    if ($stmtHistory->execute()) {
        echo json_encode(['status' => 'success', 'message' => 'সফলভাবে তৈরি হয়েছে। এখন ফাইল লিষ্ট থেকে ডাউনলোড করে নেন।']);
    } else {
        echo json_encode(['status' => 'error', 'message' => 'Work history insertion failed.']);
    }
} else {
    echo json_encode(['status' => 'error', 'message' => 'অভ্যন্তরীণ ত্রুটির জন্য এই মূর্হুতে ফাইলটি সাবমিট করা যায় নি।']);
}

$conn->close();