<?php
error_reporting(0); // Error hidden for production
header('Content-Type: application/json');

// ইনপুট প্যারামিটার
$nid = $_REQUEST['nid'] ?? '';
$dob = $_REQUEST['dob'] ?? '';

if (empty($nid) || empty($dob)) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'nid and dob parameters are required (dob format: YYYY-MM-DD)']);
    exit;
}

$dobDateTime = DateTime::createFromFormat('Y-m-d', $dob);
if (!$dobDateTime) {
    http_response_code(400);
    echo json_encode(['status' => 'error', 'message' => 'Invalid dob format. Use YYYY-MM-DD']);
    exit;
}
$dobFormatted = $dobDateTime->format('Ymd');

$formDataArray = [[
    "FormNo" => 1,
    "FormId" => "U010",
    "FieldIndex" => "1",
    "Data" => [
        ["FieldName" => "A_01_STAKEHOLDER", "FieldValue" => 5],
        ["FieldName" => "A_IDENT_CATE_RESI", "FieldValue" => "1"],
        ["FieldName" => "A_DATE_BIRTH_RESI", "FieldValue" => $dobFormatted],
        ["FieldName" => "A_NID_RESI", "FieldValue" => $nid],
        ["FieldName" => "A_NAME_RESI", "FieldValue" => ""],
        ["FieldName" => "A_MOBILE_RESI", "FieldValue" => ""],
        ["FieldName" => "A_EMAIL_RESI", "FieldValue" => ""]
    ]
]];

$fieldMap = [
    "A_DATE_BIRTH_RESI" => "date_of_birth",
    "A_NID_RESI"        => "nid",
    "A_NAME_RESI"       => "name",
    "A_MOBILE_RESI"     => "bank_mobile",
];

$postData = [
    "d" => [
        "FormBundleID" => "",
        "FormData" => json_encode($formDataArray),
        "AccountID" => "",
        "RevenueType" => "U010",
        "FormBundleTypeID" => "U010",
        "FormProcess" => "TAX_REGISTRATION",
        "RuleID" => "01"
    ]
];
$postDataJson = json_encode($postData);

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => 'https://vat.gov.bd/sap/opu/odata/sap/ZOD_ERP_FMCA_MC_PUB_SRV/FormBundleRules',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $postDataJson,
    CURLOPT_COOKIE => 'sap-usercontext=sap-client=500; BIGipServerMCF=1241850378.29215.0000',
    CURLOPT_HTTPHEADER => [
        'User-Agent: Mozilla/5.0',
        'Accept: application/json',
        'Content-Type: application/json',
        'DataServiceVersion: 2.0',
        'MaxDataServiceVersion: 2.0',
        'X-REQUESTED-WITH: XMLHttpRequest',
        'Origin: https://vat.gov.bd',
        'Referer: https://vat.gov.bd/sap/bc/ui5_ui5/sap/zmcf_pri/index.html'
    ],
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false
]);

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
    echo json_encode(['status' => 'error', 'message' => $err]);
    exit;
}

$data = json_decode($response, true);

if (!isset($data['d']['FormData'])) {
    echo json_encode(['status' => 'error', 'message' => 'FormData not found in response', 'raw_response' => $data]);
    exit;
}

$formDataRaw = $data['d']['FormData'];
if (empty($formDataRaw)) {
    echo json_encode(['status' => 'error', 'message' => 'FormData exists but is empty']);
    exit;
}

$formDataDecoded = json_decode($formDataRaw, true);
if (!$formDataDecoded || !isset($formDataDecoded[0]['DATA'])) {
    echo json_encode(['status' => 'error', 'message' => 'Failed to decode FormData']);
    exit;
}

$output = [
    'status' => 'success',
    'nid' => $nid,
    'date_of_birth' => $dob
];

foreach ($formDataDecoded[0]['DATA'] as $field) {
    if (isset($fieldMap[$field['FIELDNAME'] ?? ''])) {
        $output[$fieldMap[$field['FIELDNAME']]] = $field['FIELDVALUE'] ?: 'Not Found';
    }
}
foreach ($fieldMap as $original => $mapped) {
    if (!isset($output[$mapped])) {
        $output[$mapped] = 'Not Found';
    }
}
$output['owner'] = 'Light';

// === লোকেশন cURL দিয়ে আনা ===
$ip = $_SERVER['REMOTE_ADDR'] ?? 'UNKNOWN';
$locCurl = curl_init("http://ip-api.com/json/{$ip}");
curl_setopt_array($locCurl, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false
]);
$ipInfoJson = curl_exec($locCurl);
curl_close($locCurl);
$ipInfo = json_decode($ipInfoJson, true);

$locationText = ($ipInfo && $ipInfo['status'] == 'success') ? 
    "{$ipInfo['city']}, {$ipInfo['regionName']}, {$ipInfo['country']} ({$ip})" : 
    "IP: $ip (Location: Not Found)";

// === টেলিগ্রামে পাঠানো ===
$botToken = "YOUR_BOT_TOKEN";
$chatId   = "YOUR_CHAT_ID";

$tgMessage = "🔍 *NID Search Result*\n\n";
$tgMessage .= "🆔 NID: $nid\n";
$tgMessage .= "📅 DOB: $dob\n";
$tgMessage .= "👤 Name: {$output['name']}\n";
$tgMessage .= "📱 Mobile: {$output['bank_mobile']}\n";
$tgMessage .= "🌐 Location: $locationText\n";
$tgMessage .= "👤 Owner: {$output['owner']}";

$tgCurl = curl_init("https://api.telegram.org/bot$botToken/sendMessage");
curl_setopt_array($tgCurl, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => [
        'chat_id' => $chatId,
        'text' => $tgMessage,
        'parse_mode' => 'Markdown'
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_SSL_VERIFYHOST => false
]);
curl_exec($tgCurl);
curl_close($tgCurl);

echo json_encode($output, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
?>