<?php
include('include/db_conn.php');

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    /* ===== FETCH & SANITIZE ===== */
    $agt_name   = trim($_POST['full_name'] ?? '');
    $agt_email  = trim($_POST['email'] ?? '');
    $agt_phone  = trim($_POST['mobile'] ?? '');
    $agt_gender = trim($_POST['gender'] ?? '');
    $agt_pan    = strtoupper(trim($_POST['pan_number'] ?? ''));
    $agt_gst    = strtoupper(trim($_POST['gst_no'] ?? ''));
    $agt_note   = trim($_POST['notes'] ?? '');

    if ($agt_name === '' || $agt_email === '') {
        header("Location: feild.php");
        exit;
    }

    /* ===== AGENT CODE GENERATION (MUST BE FIRST) ===== */
    $cleanName = preg_replace('/[^A-Za-z]/', '', $agt_name);
    $cleanName = str_pad($cleanName, 4, "X");
    $namePart  = strtoupper(substr($cleanName, 0, 4));
    $randPart  = random_int(100000, 999999);
    $agt_number = "AGT-" . $namePart . $randPart;

    /* ===== DOCUMENT UPLOAD ===== */
    $upload_dir = __DIR__ . "/uploads/agent_docs/";
    if (!is_dir($upload_dir)) {
        mkdir($upload_dir, 0777, true);
    }

    /* PAN DOCUMENT */
    $pan_doc_name = null;
    if (!empty($_FILES['pan_document']['name'])) {
        $pan_ext = strtolower(pathinfo($_FILES['pan_document']['name'], PATHINFO_EXTENSION));
        $pan_doc_name = "PAN_" . $agt_number . "." . $pan_ext;
        move_uploaded_file($_FILES['pan_document']['tmp_name'], $upload_dir . $pan_doc_name);
    }

    /* GST DOCUMENT */
    $gst_doc_name = null;
    if (!empty($_FILES['gst_document']['name'])) {
        $gst_ext = strtolower(pathinfo($_FILES['gst_document']['name'], PATHINFO_EXTENSION));
        $gst_doc_name = "GST_" . $agt_number . "." . $gst_ext;
        move_uploaded_file($_FILES['gst_document']['tmp_name'], $upload_dir . $gst_doc_name);
    }

    /* ===== INSERT WITH DOCUMENTS ===== */
    $stmt = $conn->prepare("
        INSERT INTO visa_applications
        (agent_code, agent_name, email, mobile, gender, gst_no, pan_number, notes, pan_document, gst_document)
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    ");

    $stmt->bind_param(
        "ssssssssss",
        $agt_number,
        $agt_name,
        $agt_email,
        $agt_phone,
        $agt_gender,
        $agt_gst,
        $agt_pan,
        $agt_note,
        $pan_doc_name,
        $gst_doc_name
    );

    if ($stmt->execute()) {
        header("Location: agent-thank-you");
        exit;
    } else {
        header("Location: feild.php");
        exit;
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>VisaFir – Agent Portal</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<style>
*{box-sizing:border-box;font-family:"Segoe UI",sans-serif}
body{background:#f2f5f9;margin:0}
.visa-form-wrapper{
  max-width:900px;margin:40px auto;background:#fff;
  padding:30px;border-radius:12px;
  box-shadow:0 15px 40px rgba(0,0,0,.08)
}
h2{text-align:center}
.subtitle{text-align:center;color:#777;margin-bottom:30px}
.form-section{margin-bottom:25px}
.form-section h3{color:#1e3c72}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}
input,select,textarea{
  width:100%;padding:12px;border-radius:8px;border:1px solid #ddd
}
textarea{min-height:100px}
.submit-btn{
  width:100%;padding:14px;
  background:linear-gradient(135deg,#1e3c72,#2a5298);
  color:#fff;border:none;border-radius:30px;cursor:pointer
}
.submit-btn:disabled{background:#ccc;cursor:not-allowed}
.error-border{border-color:red!important}
.success{color:green}
.error-text{color:red}
@media(max-width:768px){.grid{grid-template-columns:1fr}}
#pan_status,#gst_status{font-weight:600;margin-top:6px}
.pan-success{color:green}
.pan-error{color:red}
.doc-upload-card{
  margin:15px 0;
}

.doc-label{
  font-weight:600;
  margin-bottom:6px;
  display:block;
}

.upload-box{
  border:2px dashed #2a5298;
  padding:18px;
  text-align:center;
  border-radius:10px;
  cursor:pointer;
  color:#2a5298;
  background:#f8fbff;
  transition:.2s;
}

.upload-box:hover{
  background:#eef4ff;
}

.doc-preview{
  margin-top:12px;
  max-width:180px;
  border-radius:8px;
  box-shadow:0 6px 18px rgba(0,0,0,.15);
}
</style>
</head>

<body>

<section class="visa-form-wrapper">
<h2>Visa Application Form</h2>
<p class="subtitle">VisaFir – Agent Portal</p>

<form id="visaForm" method="POST" enctype="multipart/form-data">

<!-- APPLICANT -->
<div class="form-section">
<h3>Applicant Details</h3>
<div class="grid">
<input type="text" name="full_name" placeholder="Full Name" required>
<input type="email" name="email" placeholder="Email" required>
<input type="tel" name="mobile" placeholder="Mobile Number" required>
<select name="gender" required>
<option value="">Select Gender</option>
<option>Male</option>
<option>Female</option>
<option>Other</option>
</select>
</div>
</div>

<!-- PAN -->
<h3>PAN Verification</h3>


<div class="doc-upload-card">
  <label class="doc-label">Upload PAN Card</label>

  <input type="file" id="pan_document" name="pan_document"
         accept=".jpg,.jpeg,.png,.pdf" hidden>

  <div class="upload-box" onclick="document.getElementById('pan_document').click()">
    <span id="pan_upload_text">📄 Click to upload PAN</span>
  </div>

  <img id="pan_preview" class="doc-preview" style="display:none">
</div>


<input type="text" name="pan_number" id="pan_number"
placeholder="PAN Number (ABCDE1234F)" maxlength="10">
<p id="pan_status"></p>

<input type="text" name="pan_holder" placeholder="PAN Holder Name">

<!-- GST -->
<h3>GST Verification</h3>
<div class="doc-upload-card">
  <label class="doc-label">Upload GST Certificate</label>

  <input type="file" id="gst_document" name="gst_document"
         accept=".jpg,.jpeg,.png,.pdf" hidden>

  <div class="upload-box" onclick="document.getElementById('gst_document').click()">
    <span id="gst_upload_text">📄 Click to upload GST</span>
  </div>

  <img id="gst_preview" class="doc-preview" style="display:none">
</div>

<input type="text" id="gst_no" name="gst_no" placeholder="Enter GST Number">
<p id="gst_status"></p>

<input type="hidden" id="company_name" name="company_name">
<p id="gst_status"></p>

<textarea name="notes" placeholder="Additional Notes (Optional)"></textarea>

<br><br>




<button type="submit" id="submitBtn" class="submit-btn" disabled>
Submit Application
</button>

</form>
</section>

<!-- ================= GST VERIFY ================= -->
<script>
let gstTimer=null;
const gstInput=document.getElementById("gst_no");
const gstStatus=document.getElementById("gst_status");
const submitBtn=document.getElementById("submitBtn");

gstInput.addEventListener("keyup",()=>{
  clearTimeout(gstTimer);
  submitBtn.disabled=true;

  const gst=gstInput.value.toUpperCase().trim();
  if(gst.length<15){
    gstStatus.innerHTML="⌨️ Typing GST number...";
    return;
  }

  const gstRegex=/^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$/;
  if(!gstRegex.test(gst)){
    gstStatus.innerHTML="❌ Invalid GST format";
    gstStatus.className="error-text";
    return;
  }

  gstStatus.innerHTML="⏳ Verifying GST...";
  gstTimer=setTimeout(()=>{
    fetch("verify-gst.php",{
      method:"POST",
      headers:{ "Content-Type":"application/json" },
      body:JSON.stringify({gst_no:gst})
    })
    .then(r=>r.json())
    .then(d=>{
      if(d.success){
        gstStatus.innerHTML="✅ GST Verified";
        gstStatus.className="success";
        submitBtn.disabled=false;
      }else{
        gstStatus.innerHTML="❌ "+d.message;
        gstStatus.className="error-text";
      }
    });
  },600);
});
</script>

<!-- ================= PAN VERIFY ================= -->
<script>
const panInput=document.getElementById("pan_number");
const panStatus=document.getElementById("pan_status");

panInput.addEventListener("keyup",()=>{
  const pan=panInput.value.toUpperCase().trim();
  panInput.value=pan;

  if(pan.length<10){
    panStatus.innerHTML="⌨️ Typing PAN...";
    return;
  }

  if(!/^[A-Z]{5}[0-9]{4}[A-Z]$/.test(pan)){
    panStatus.innerHTML="❌ Invalid PAN";
    panStatus.className="pan-error";
    return;
  }

  panStatus.innerHTML="✅ Valid PAN";
  panStatus.className="pan-success";
});
</script>
<script>
function previewFile(inputId, previewId, textId){
  const input = document.getElementById(inputId);
  const preview = document.getElementById(previewId);
  const text = document.getElementById(textId);

  input.addEventListener("change", () => {
    const file = input.files[0];
    if(!file) return;

    text.innerText = "✅ " + file.name;

    if(file.type.startsWith("image/")){
      preview.src = URL.createObjectURL(file);
      preview.style.display = "block";
    }
  });
}

previewFile("pan_document","pan_preview","pan_upload_text");
previewFile("gst_document","gst_preview","gst_upload_text");
</script>
</body>
</html>
