<?php
require_once __DIR__ . '/../app/bootstrap.php';

if (current_agent()) redirect_to('agent/');

$mode = ($_GET['mode'] ?? '') === 'register' ? 'register' : 'login';
$error = '';
$notice = trim((string)($_GET['msg'] ?? ''));

if (is_post()) {
    require_csrf();
    $action = (string)($_POST['action'] ?? '');
    if ($action === 'login') {
        $email = trim((string)($_POST['email'] ?? ''));
        $pass  = (string)($_POST['password'] ?? '');
        $ip = mk_client_ip();
        $lock = mk_login_is_locked('agent', $ip, $email);
        if ($lock['locked']) {
            $mins = (int) ceil($lock['remaining_seconds'] / 60);
            $error = "Terlalu banyak percubaan. Cuba lagi dalam {$mins} minit.";
            $mode = 'login';
        } else {
            $agent = authenticate_agent($email, $pass);
            if (!$agent) {
                mk_login_record_failure('agent', $ip, $email);
                $error = 'Emel atau kata laluan salah.'; $mode = 'login';
            } else {
                mk_login_record_success('agent', $ip, $email);
                if (!agent_is_verified((string)$agent['email'])) {
                    $mail = mk_build_verify_mail((string)$agent['email'], (string)$agent['name']);
                    mk_send_mail($mail['to'], $mail['subject'], $mail['html']);
                    $error = 'Emel anda belum disahkan. Kami telah hantar semula pautan pengesahan ke emel anda — sila semak inbox (atau folder spam).';
                    $mode = 'login';
                } else {
                    agent_login($agent); redirect_to('agent/');
                }
            }
        }
    } elseif ($action === 'register') {
        $password = (string)($_POST['password'] ?? '');
        $confirm  = (string)($_POST['confirm_password'] ?? '');
        if ($password !== $confirm) {
            $error = 'Kata laluan dan sahkan kata laluan tidak sepadan.';
            $mode = 'register';
        } else {
            $hearAbout = array_map('trim', (array)($_POST['hear_about'] ?? []));
            $hearAbout = array_values(array_filter($hearAbout, fn($v) => $v !== ''));
            $regFirstName = trim((string)($_POST['first_name'] ?? ''));
            $regLastName  = trim((string)($_POST['last_name'] ?? ''));
            $regFullName  = trim($regFirstName . ' ' . $regLastName);
            $res = register_agent(
                $regFullName,
                (string)($_POST['email'] ?? ''),
                (string)($_POST['phone'] ?? ''),
                $password,
                [
                    'first_name'   => $regFirstName,
                    'last_name'    => $regLastName,
                    'company_name' => (string)($_POST['company_name'] ?? ''),
                    'gender'       => (string)($_POST['gender'] ?? ''),
                    'dob'          => (string)($_POST['dob'] ?? ''),
                    'district'     => (string)($_POST['district'] ?? ''),
                    'state'        => (string)($_POST['state'] ?? ''),
                    'address'      => (string)($_POST['address'] ?? ''),
                    'address2'     => (string)($_POST['address2'] ?? ''),
                    'postcode'     => (string)($_POST['postcode'] ?? ''),
                    'city'         => (string)($_POST['city'] ?? ''),
                    'bank'         => (string)($_POST['bank'] ?? ''),
                    'account_name' => (string)($_POST['account_name'] ?? ''),
                    'account_no'   => (string)($_POST['account_no'] ?? ''),
                    'hear_about'   => implode(', ', $hearAbout),
                    'reason_join'  => (string)($_POST['reason_join'] ?? ''),
                ]
            );
            if (!$res['ok']) { $error = $res['error']; $mode = 'register'; }
            else {
                $mail = mk_build_verify_mail((string)$res['agent']['email'], (string)$res['agent']['name']);
                mk_send_mail($mail['to'], $mail['subject'], $mail['html']);
                $mode = 'login';
                $notice = 'agent_verify_sent';
            }
        }
    }
}
$logo = asset('pix/logo_original.png');
?><!DOCTYPE html><html lang="ms"><head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Ejen — Log Masuk / Daftar · MajlisKahwin.com</title>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<style>
*{box-sizing:border-box}
body{margin:0;font-family:'Poppins',system-ui,sans-serif;background:radial-gradient(1100px 620px at 15% 12%,#e3f4f0 0%,transparent 58%),radial-gradient(1000px 640px at 88% 90%,#efe7fb 0%,transparent 55%),#f4f5f7;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;color:#2b2540}
.card{width:100%;max-width:430px;background:#fff;border-radius:22px;box-shadow:0 24px 60px rgba(43,37,64,.16);padding:34px 30px 28px;border:1px solid #eef0f4}
.brand{display:flex;align-items:center;justify-content:center;margin-bottom:6px}
.brand img{height:30px}
.badge{display:block;text-align:center;font:800 11px Poppins,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#0d9488;margin:10px 0 2px}
h1{text-align:center;font-size:22px;margin:0 0 4px}
.sub{text-align:center;color:#7a7290;font-size:13px;margin:0 0 20px}
.tabs{display:flex;background:#f1ecf9;border-radius:12px;padding:5px;margin-bottom:20px}
.tabs a{flex:1;text-align:center;padding:10px;border-radius:9px;font:800 13px Poppins,sans-serif;color:#6b6280;text-decoration:none}
.tabs a.on{background:#fff;color:#7c3aed;box-shadow:0 4px 12px rgba(15,23,42,.1)}
label{display:block;font-weight:700;font-size:12.5px;margin:0 0 6px;color:#4a4360}
input{width:100%;padding:12px 14px;border:1.5px solid #e3dcef;border-radius:11px;font:inherit;margin-bottom:14px}
input:focus{outline:none;border-color:#9b5de5;box-shadow:0 0 0 3px rgba(155,93,229,.14)}
.btn{width:100%;border:0;border-radius:12px;background:linear-gradient(90deg,#0d9488,#7c3aed);color:#fff;font:800 14px Poppins,sans-serif;padding:13px;cursor:pointer}
.btn:hover{filter:brightness(1.05)}
.err{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:14px}
.ok{background:#dcfce7;color:#166534;border:1px solid #bbf7d0;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:14px}
.foot{text-align:center;margin-top:18px;font-size:12.5px;color:#8a8296}
.foot a{color:#0d9488;font-weight:700;text-decoration:none}
.hint{font-size:11.5px;color:#9a91ab;margin:-8px 0 14px}
.card.wide{max-width:540px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.frow .full{grid-column:1/-1}
.sec{font:800 11px Poppins,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#0d9488;margin:18px 0 12px;padding-top:14px;border-top:1px solid #eef0f4}
.sec.first,.card>form>.sec:first-child{border-top:0;padding-top:0;margin-top:2px}
select{width:100%;padding:12px 14px;border:1.5px solid #e3dcef;border-radius:11px;font:inherit;margin-bottom:14px;background:#fff;color:#2b2540}
select:focus{outline:none;border-color:#9b5de5;box-shadow:0 0 0 3px rgba(155,93,229,.14)}
textarea{width:100%;padding:12px 14px;border:1.5px solid #e3dcef;border-radius:11px;font:inherit;margin-bottom:14px;resize:vertical;min-height:74px}
textarea:focus{outline:none;border-color:#9b5de5;box-shadow:0 0 0 3px rgba(155,93,229,.14)}
.checks{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 14px}
.checks label{display:flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px;color:#4a4360;margin:0}
.checks input{width:auto;margin:0}
.forgot{display:block;text-align:right;font-size:12.5px;color:#0d9488;font-weight:700;text-decoration:none;margin:-8px 0 14px}
@media(max-width:540px){.frow{grid-template-columns:1fr}}
</style></head>
<body>
<div class="card<?= $mode==='register'?' wide':'' ?>">
  <div class="brand"><img src="<?= e($logo) ?>" alt="MajlisKahwin.com" onerror="this.style.display='none'"></div>
  <span class="badge">Portal Ejen</span>
  <h1><?= $mode==='register' ? 'Daftar sebagai Ejen' : 'Log Masuk Ejen' ?></h1>
  <p class="sub"><?= $mode==='register' ? 'Buat tempahan untuk pelanggan & dapat komisen affiliate.' : 'Selamat kembali! Log masuk ke dashboard ejen anda.' ?></p>

  <div class="tabs">
    <a href="<?= e(url_for('agent/login?mode=login')) ?>" class="<?= $mode==='login'?'on':'' ?>">Log Masuk</a>
    <a href="<?= e(url_for('agent/login?mode=register')) ?>" class="<?= $mode==='register'?'on':'' ?>">Daftar</a>
  </div>

  <?php if ($error): ?><div class="err"><?= e($error) ?></div><?php endif; ?>
  <?php if ($notice === 'loggedout'): ?><div class="ok">Anda telah log keluar.</div><?php endif; ?>
  <?php if ($notice === 'agent_verify_sent'): ?><div class="ok">Pendaftaran berjaya! Kami telah hantar pautan pengesahan ke emel anda. Sila sahkan emel dahulu sebelum log masuk.</div><?php endif; ?>

  <?php if ($mode === 'register'): ?>
  <form method="post" action="<?= e(url_for('agent/login?mode=register')) ?>"><?= csrf_field() ?>
    <input type="hidden" name="action" value="register">
    <div class="sec first">Maklumat Peribadi</div>
    <div class="frow">
      <div><label>Nama Pertama</label><input name="first_name" value="<?= e($_POST['first_name'] ?? '') ?>" required></div>
      <div><label>Nama Akhir</label><input name="last_name" value="<?= e($_POST['last_name'] ?? '') ?>" placeholder="(jika ada)"></div>
    </div>
    <label>Nama Syarikat <span style="font-weight:400;color:#9a91ab">(pilihan)</span></label>
    <input name="company_name" value="<?= e($_POST['company_name'] ?? '') ?>" placeholder="cth: Reino Enterprise (jika berniaga secara syarikat)">
    <div class="frow">
      <div><label>Emel</label><input type="email" name="email" value="<?= e($_POST['email'] ?? '') ?>" required></div>
      <div><label>No. Telefon</label><input name="phone" value="<?= e($_POST['phone'] ?? '') ?>" required></div>
    </div>
    <div class="frow">
      <div><label>Jantina</label><select name="gender"><option value="">- Pilih -</option><option value="Lelaki"<?= (($_POST['gender']??'')==='Lelaki')?' selected':'' ?>>Lelaki</option><option value="Perempuan"<?= (($_POST['gender']??'')==='Perempuan')?' selected':'' ?>>Perempuan</option></select></div>
      <div><label>Tarikh Lahir</label><input type="date" name="dob" value="<?= e($_POST['dob'] ?? '') ?>"></div>
    </div>
    <div class="sec">Alamat Penuh (utk Postage)</div>
    <p class="hint" style="margin-top:-8px">Diguna bila anda pilih pos ke alamat sendiri utk diagihkan semula.</p>
    <label>Alamat 1</label><input name="address" value="<?= e($_POST['address'] ?? '') ?>" placeholder="No, jalan, taman/kampung">
    <label>Alamat 2</label><input name="address2" value="<?= e($_POST['address2'] ?? '') ?>" placeholder="Peringkat, blok, mukim (jika ada)">
    <div class="frow">
      <div><label>Poskod</label><input name="postcode" id="regPostcodeInput" inputmode="numeric" pattern="[0-9]{5}" maxlength="5" title="Poskod 5 digit" value="<?= e($_POST['postcode'] ?? '') ?>"></div>
      <div><label>Bandar</label><input name="city" id="regCityInput" value="<?= e($_POST['city'] ?? '') ?>" placeholder="cth: Alor Setar"></div>
      <div class="full"><label>Negeri</label>
        <select name="state" id="regStateSelect">
          <option value="">— Pilih Negeri —</option>
          <?php $__regState = (string)($_POST['state'] ?? ''); ?>
          <?php foreach (mk_states() as $__st): ?>
            <option value="<?= e($__st) ?>"<?= $__st === $__regState ? ' selected' : '' ?>><?= e($__st) ?></option>
          <?php endforeach; ?>
        </select>
      </div>
    </div>
    <div class="sec">Maklumat Pembayaran (Payout)</div>
    <label>Nama Bank</label><input name="bank" value="<?= e($_POST['bank'] ?? '') ?>" placeholder="cth: Maybank / CIMB / Bank Islam">
    <div class="frow">
      <div><label>Nama Pemegang Akaun</label><input name="account_name" value="<?= e($_POST['account_name'] ?? '') ?>"></div>
      <div><label>No. Akaun</label><input name="account_no" value="<?= e($_POST['account_no'] ?? '') ?>"></div>
    </div>
    <div class="sec">Keselamatan</div>
    <div class="frow">
      <div><label>Kata Laluan</label><input type="password" name="password" id="regPassword" minlength="8" pattern="^(?=.*[A-Z])(?=.*[^A-Za-z0-9]).{8,}$" title="Sekurang-kurangnya 8 aksara, 1 huruf besar (A-Z) &amp; 1 simbol" required></div>
      <div><label>Sahkan Kata Laluan</label><input type="password" name="confirm_password" id="regConfirm" minlength="8" required></div>
    </div>
    <p class="hint" style="margin-top:-8px">Kata laluan mesti sekurang-kurangnya 8 aksara, ada 1 huruf besar (A-Z) &amp; 1 simbol (cth: ! @ # $ %).</p>
    <p class="hint" id="pwMismatch" style="display:none;color:#c0392b">Kata laluan tidak sepadan.</p>
    <p class="hint" id="pwWeak" style="display:none;color:#c0392b">Kata laluan mesti sekurang-kurangnya 8 aksara, ada 1 huruf besar (A-Z) &amp; 1 simbol.</p>
    <div class="sec">Tentang Anda</div>
    <label>Dari mana anda tahu Sistem Ejen Majliskahwin.com?</label>
    <div class="checks">
      <?php $hearOpts = ['Facebook', 'Instagram', 'TikTok', 'Google / Carian', 'Kawan / Saudara', 'Lain-lain'];
      $hearSel = (array)($_POST['hear_about'] ?? []); ?>
      <?php foreach ($hearOpts as $opt): ?>
        <label><input type="checkbox" name="hear_about[]" value="<?= e($opt) ?>"<?= in_array($opt, $hearSel, true) ? ' checked' : '' ?>> <?= e($opt) ?></label>
      <?php endforeach; ?>
    </div>
    <label>Kenapa anda nak jadi Ejen?</label>
    <textarea name="reason_join" placeholder="Kongsikan sebab anda berminat menjadi Ejen kami"><?= e($_POST['reason_join'] ?? '') ?></textarea>
    <p class="hint">Minimum 8 aksara utk kata laluan. Ruangan payout boleh dikemas kini kemudian.</p>
    <button class="btn" type="submit">Daftar Akaun Ejen</button>
  </form>
  <script>
  (function(){
    var f=document.currentScript.previousElementSibling,p=document.getElementById('regPassword'),c=document.getElementById('regConfirm'),m=document.getElementById('pwMismatch'),w=document.getElementById('pwWeak');
    if(!f||!p||!c)return;
    var strongRe=/^(?=.*[A-Z])(?=.*[^A-Za-z0-9]).{8,}$/;
    f.addEventListener('submit',function(e){
      if(!strongRe.test(p.value)){ e.preventDefault(); w.style.display='block'; m.style.display='none'; p.focus(); }
      else if(p.value!==c.value){ e.preventDefault(); m.style.display='block'; w.style.display='none'; c.focus(); }
      else { m.style.display='none'; w.style.display='none'; }
    });
  })();
  </script>
  <script>
  window.MK_STATE_RANGES = <?= json_encode(mk_state_postcode_ranges(), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) ?>;
  (function(){
    // Negeri auto-detect drpd Poskod (julat poskod sama spt kad/checkout.php & mk_state_for_postcode()).
    var pcEl = document.getElementById('regPostcodeInput');
    var stEl = document.getElementById('regStateSelect');
    if (pcEl && stEl && window.MK_STATE_RANGES) {
      var autoState = stEl.value === '';
      stEl.addEventListener('change', function(){ autoState = false; });
      function stateFor(pc){
        if (!/^\d{5}$/.test(pc)) return '';
        var n = parseInt(pc, 10);
        for (var i = 0; i < window.MK_STATE_RANGES.length; i++) {
          var r = window.MK_STATE_RANGES[i];
          if (n >= r[0] && n <= r[1]) return r[2];
        }
        return '';
      }
      function syncState(){
        if (!autoState) return;
        var st = stateFor(pcEl.value.trim());
        if (st !== '') stEl.value = st;
      }
      pcEl.addEventListener('input', syncState);
      pcEl.addEventListener('change', syncState);
    }

    // Bandar auto-detect drpd Poskod (padanan TEPAT drpd assets/data/postcodes-my.json, spt kad/checkout.php).
    var cityEl = document.getElementById('regCityInput');
    if (pcEl && cityEl) {
      var autoCity = cityEl.value.trim() === '';
      var map = null;
      cityEl.addEventListener('input', function(){ autoCity = false; });
      function syncCity(){
        if (!autoCity || !map) return;
        var pc = pcEl.value.trim();
        var row = /^\d{5}$/.test(pc) ? map[pc] : null;
        if (row && row[0]) cityEl.value = row[0];
      }
      fetch(<?= json_encode(mk_asset_v('assets/data/postcodes-my.json')) ?>)
        .then(function(r){ return r.ok ? r.json() : null; })
        .then(function(data){ if (data) { map = data; syncCity(); } })
        .catch(function(){});
      pcEl.addEventListener('input', syncCity);
      pcEl.addEventListener('change', syncCity);
    }
  })();
  </script>
  <?php else: ?>
  <form method="post" action="<?= e(url_for('agent/login?mode=login')) ?>"><?= csrf_field() ?>
    <input type="hidden" name="action" value="login">
    <label>Emel</label><input type="email" name="email" value="<?= e($_POST['email'] ?? '') ?>" required>
    <label>Kata Laluan</label><input type="password" name="password" required>
    <a class="forgot" href="<?= e(url_for('agent-forgot-password.php')) ?>">Lupa kata laluan?</a>
    <button class="btn" type="submit">Log Masuk</button>
  </form>
  <?php endif; ?>

  <div class="foot">Bukan ejen? <a href="<?= e(url_for('index.php')) ?>">Kembali ke laman utama</a></div>
</div>
<script src="<?= e(asset('assets/js/mk-validate.js')) ?>?v=<?= e((string)(@filemtime(MK_ROOT . '/assets/js/mk-validate.js') ?: '1')) ?>"></script>
</body></html>
