<?php
session_start();
require_once 'includes/config.php';

if (!isset($_SESSION['nguoi_dung_id']) || $_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: dang-nhap.php');
    exit;
}

$id_user     = (int)$_SESSION['nguoi_dung_id'];
$so_tien_rut = (float)($_POST['so_tien_rut'] ?? 0);
$ma_pin_nhap = trim($_POST['ma_pin_xac_nhan'] ?? '');

function thoat($msg, $url = 'vi-thanh-vien.php') {
    echo "<script>alert('$msg'); window.location='$url';</script>";
    exit;
}

// Kiểm tra mức tối thiểu
if ($so_tien_rut < 500000) {
    thoat('Số tiền rút tối thiểu là 500.000 ₫.');
}

// Lấy thông tin người dùng
$stmt = $pdo->prepare("SELECT vai_tro, ma_pin_giao_dich, so_tai_khoan FROM thanh_vien WHERE id = ?");
$stmt->execute([$id_user]);
$nguoi_dung = $stmt->fetch();

if ($nguoi_dung['vai_tro'] !== 'ca_nhan') {
    thoat('Chức năng rút tiền chỉ dành cho tài khoản cá nhân.');
}

if (empty($nguoi_dung['so_tai_khoan'])) {
    thoat('Bạn chưa cài đặt tài khoản ngân hàng thụ hưởng.');
}

// Xác minh PIN
if (!password_verify($ma_pin_nhap, $nguoi_dung['ma_pin_giao_dich'])) {
    thoat('Mã PIN không chính xác. Giao dịch bị từ chối.');
}

// Kiểm tra số dư ví
$stmt_vi = $pdo->prepare("SELECT so_du FROM vi_thanh_vien WHERE thanh_vien_id = ?");
$stmt_vi->execute([$id_user]);
$vi = $stmt_vi->fetch();
$so_du = (float)($vi['so_du'] ?? 0);

if ($so_tien_rut > $so_du) {
    thoat('Số tiền rút vượt quá số dư khả dụng (' . number_format($so_du, 0, ',', '.') . ' ₫).');
}

// Tạo lệnh rút + trừ số dư trong transaction
try {
    $pdo->beginTransaction();

    $pdo->prepare("INSERT INTO giao_dich_tai_chinh (id_nguoi_nhan, so_tien, loai_giao_dich, trang_thai) VALUES (?, ?, 'rut_tien', 'cho_duyet')")
        ->execute([$id_user, $so_tien_rut]);

    $pdo->prepare("UPDATE vi_thanh_vien SET so_du = so_du - ? WHERE thanh_vien_id = ?")
        ->execute([$so_tien_rut, $id_user]);

    $pdo->commit();
    thoat('Gửi lệnh rút tiền thành công! Ban Quản trị sẽ xử lý trong thời gian sớm nhất.');

} catch (Exception $e) {
    $pdo->rollBack();
    thoat('Có lỗi xảy ra. Vui lòng thử lại.');
}
?>
