<?php
session_start();
error_reporting(0);
include('../koneksi.php');

// Pastikan semua output adalah JSON
header('Content-Type: application/json');

try {
    // Validasi input
    if (!isset($_POST['rekening'])) {
        throw new Exception('Data rekening tidak ditemukan');
    }

    $cekrek = strlen($_POST['rekening']);
    if ($cekrek !== 13) {
        throw new Exception('Register yang diinput salah! Cek ulang registernya');
    }

    // Set variabel dasar
    $kode = $_SESSION['kode'];
    $username = $_SESSION['username'];
    $no_bukti = "PP" . $_SESSION['nokode'] . substr(date("YmdHis"), 2, 15);
    $register = $_POST['register'];
    $rekening = $_POST['rekening'];
    $tgl = date('Y-m-d', strtotime($_POST['tgl']));
    $plafond = str_replace(",", "", $_POST['plafond']);
    $jcair = $_POST['jcair'];
    $pbarang = $_POST['pbarang'];
    $jbarang = $_POST['jbarang'];
    $kelengkapan = $_POST['kelengkapan'];
    $jaminan = $_POST['jaminan'];
    $taksasi = str_replace(",", "", $_POST['taksasi']);
    $jwaktu = (int)$_POST['jwaktu'];
    $margin = $_POST['margin'];
    $noseri = $_POST['noseri'];
    $kondisi = $_POST['kondisi'];
    $keterangan = $_POST['keterangan'];
        
    // Retrieve registrant data
    $jumlah = ($margin * $plafond / 100);
    $pesan = mysqli_fetch_assoc(mysqli_query($koneksi, "SELECT a.nama AS nama, a.nohp AS nohp FROM registrasi a LEFT JOIN pinjaman b ON a.id = b.register WHERE a.id = '$register' "));

    if (!$pesan) {
        throw new Exception('Data registrasi tidak ditemukan.');
    }

    $nohp = $pesan['nohp'];
    $nama = $pesan['nama'];
    $plafondpsn = number_format($plafond, 0);
    $barang = $jaminan;
    $judul = "*PENCAIRAN GADAI*";
    $tglpsn = $tgl;
    $metodebayar = "angsur";
    $jmlangsuran = number_format($jumlah, 0);
    $kantor = "*TOP GADAI " . strtoupper($_SESSION['kantor']) . "*";
    $rekeningpesan = $rekening;
    $hasilket = preg_replace('/104.*$/', '', $keterangan);
    $keteranganpesan = trim($hasilket);

    // Cek apakah transaksi sudah ada
    $check_query = mysqli_query($koneksi, "SELECT * FROM pinjaman WHERE rekening='$rekenng'");
    if (mysqli_num_rows($check_query) > 0) {
        throw new Exception('Transaksi dengan Rekening ini sudah ada. Tidak dapat melakukan double transaksi.');
    }

    // Mulai transaksi
    mysqli_begin_transaction($koneksi);

    // Query pinjaman
    $query1 = mysqli_query($koneksi, "INSERT INTO pinjaman SET 
        register='$register',
        rekening='$rekening',
        no_bukti='$no_bukti',
        tgl='$tgl',
        plafond='$plafond',
        jeniscair='$jcair',
        barang='$pbarang',
        jenisbarang='$jbarang',
        kelengkapan='$kelengkapan',
        jaminan='$jaminan',
        taksasi='$taksasi',
        jangkawaktu='$jwaktu',
        flat='0',
        margin='$margin',
        noseri='$noseri',
        kondisi='$kondisi',
        bakidebet='$plafond',
        keterangan='$keterangan',
        username='$username'
    ");

    if (!$query1) {
        throw new Exception(mysqli_error($koneksi));
    }

    // Query angsuran
    $query2 = mysqli_query($koneksi, "INSERT INTO angsuran SET 
        rekening='$rekening',
        no_bukti='$no_bukti',
        tgl='$tgl',
        plafond='$plafond',
        pokok='0',
        margin='0',
        keterangan='$keterangan',
        username='$username'
    ");

    if (!$query2) {
        throw new Exception(mysqli_error($koneksi));
    }

    // Query buku besar debet
    $query3 = mysqli_query($koneksi, "INSERT INTO bukubesar SET 
        id_jurnal='0',
        no_bukti='$no_bukti',
        tanggal='$tgl',
        kode_akun='1.120.10',
        debet='$plafond',
        kredit='0',
        keterangan='$keterangan',
        kode='$kode',
        tglsystem=NOW(),
        username='$username'
    ");

    if (!$query3) {
        throw new Exception(mysqli_error($koneksi));
    }

    // Query buku besar kredit
    $query4 = mysqli_query($koneksi, "INSERT INTO bukubesar SET 
        id_jurnal='0',
        no_bukti='$no_bukti',
        tanggal='$tgl',
        kode_akun='1.100.10',
        debet='0',
        kredit='$plafond',
        keterangan='$keterangan',
        kode='$kode',
        tglsystem=NOW(),
        username='$username'
    ");

    if (!$query4) {
        throw new Exception(mysqli_error($koneksi));
    }

    // Update jatuh tempo
    //$jtempo = mysqli_fetch_assoc(mysqli_query($koneksi, "SELECT rekening, DATE_ADD('$tglpsn', INTERVAL $jwaktu DAY) AS jtempo2 FROM pinjaman WHERE rekening='$rekening'"));
    //$jtempojd = $jtempo['jtempo2'];
    //$update_jtempo = mysqli_query($koneksi, "UPDATE pinjaman SET jtempo='$jtempojd' WHERE rekening='$rekening'");
    
    //if (!$update_jtempo) {
      //  throw new Exception(mysqli_error($koneksi));
    //}
// Update jatuh tempo
    $jtempo = mysqli_fetch_assoc(mysqli_query($koneksi, "SELECT rekening, DATE_ADD('$tgl', INTERVAL $jwaktu DAY) AS jtempo2 FROM pinjaman WHERE rekening='$rekening'"));
    
    if (!$jtempo) {
        throw new Exception("Gagal menghitung tanggal jatuh tempo");
    }

    $update_jtempo = mysqli_query($koneksi, "UPDATE pinjaman SET jtempo='{$jtempo['jtempo2']}' WHERE rekening='$rekening'");
    
    if (!$update_jtempo) {
        throw new Exception(mysqli_error($koneksi));
    }
    // Query untuk memasukkan pesan
    $query6 = mysqli_query($koneksi, "INSERT INTO message SET 
        number='$nohp',
        tgl='$tglpsn',
        judul='$judul', 
        penErima='$nama', 
        PenGirim='$kantor', 
        rekening='$rekeningpesan',
        barangGadai='$barang',
        plafond='$plafondpsn', 
        nominal='$jmlangsuran', 
        keterangan='$keteranganpesan', 
        metodeBayar='$metodebayar',
        kodeFilTer='cair'
    ");

    if (!$query6) {
        throw new Exception(mysqli_error($koneksi));
    }
    // Query untuk memasukkan OTP
    /* $query7 = mysqli_query($koneksi, "INSERT INTO otp_pjm SET
        number='085648336734',
        no_otp='$otp_gadai',
        rekening='$rekening' 
        
    ");

    if (!$query7) {
        throw new Exception(mysqli_error($koneksi));
    } */

    // Commit transaksi
    mysqli_commit($koneksi);

    // Return success response
    echo json_encode([
        'success' => true,
        'message' => 'Data berhasil disimpan',
        'no_bukti' => $no_bukti
    ]);

} catch (Exception $e) {
    // Rollback transaksi jika ada error
    mysqli_rollback($koneksi);
    
    // Return error response
    echo json_encode([
        'success' => false,
        'message' => $e->getMessage()
    ]);
}
?>
