<?php
require_once __DIR__ . '/../includes/functions.php';
require_role('admin');

$error = '';
$success = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    verify_csrf();
    $action = $_POST['action'] ?? '';

    if ($action === 'update_row') {
        $id = (int)$_POST['row_id'];
        $max_amount = (float)preg_replace('/[^0-9]/', '', $_POST['max_amount'] ?? '0');
        $required_documents = trim($_POST['required_documents'] ?? '');
        $gender_restriction = in_array($_POST['gender_restriction'] ?? '', ['none','female_only','male_only']) ? $_POST['gender_restriction'] : 'none';
        $min_months = trim($_POST['min_months_after_hire'] ?? '');
        $min_months = ($min_months === '') ? null : (int)$min_months;
        $stmt = $pdo->prepare("UPDATE insurance_rows SET max_amount = ?, required_documents = ?, gender_restriction = ?, min_months_after_hire = ? WHERE id = ?");
        $stmt->execute([$max_amount, $required_documents, $gender_restriction, $min_months, $id]);
        $success = 'ردیف درمانی بروزرسانی شد.';
    } elseif ($action === 'add_row') {
        $name = trim($_POST['name'] ?? '');
        $max_amount = (float)preg_replace('/[^0-9]/', '', $_POST['max_amount'] ?? '0');
        $required_documents = trim($_POST['required_documents'] ?? '');
        if ($name === '') {
            $error = 'نام ردیف الزامی است.';
        } else {
            $stmt = $pdo->prepare("INSERT INTO insurance_rows (name, max_amount, required_documents, sort_order) VALUES (?, ?, ?, 99)");
            $stmt->execute([$name, $max_amount, $required_documents]);
            $success = 'ردیف درمانی جدید اضافه شد.';
        }
    } elseif ($action === 'toggle_row') {
        $id = (int)$_POST['row_id'];
        $stmt = $pdo->prepare("UPDATE insurance_rows SET is_active = 1 - is_active WHERE id = ?");
        $stmt->execute([$id]);
        $success = 'وضعیت ردیف تغییر کرد.';
    } elseif ($action === 'delete_row') {
        $id = (int)$_POST['row_id'];
        $stmt = $pdo->prepare("SELECT COUNT(*) FROM claims WHERE row_id = ?");
        $stmt->execute([$id]);
        if ((int)$stmt->fetchColumn() > 0) {
            $error = 'این ردیف قبلاً در یک یا چند درخواست استفاده شده و قابل حذف نیست؛ به‌جای حذف، آن را غیرفعال کنید.';
        } else {
            $pdo->prepare("DELETE FROM combined_cap_rows WHERE row_id = ?")->execute([$id]);
            $pdo->prepare("DELETE FROM insurance_rows WHERE id = ?")->execute([$id]);
            $success = 'ردیف درمانی حذف شد.';
        }
    } elseif ($action === 'delete_cap') {
        $id = (int)$_POST['cap_id'];
        $pdo->prepare("DELETE FROM combined_cap_rows WHERE cap_id = ?")->execute([$id]);
        $pdo->prepare("DELETE FROM combined_caps WHERE id = ?")->execute([$id]);
        $success = 'سقف ترکیبی حذف شد.';
    } elseif ($action === 'update_cap') {
        $id = (int)$_POST['cap_id'];
        $max_amount = (float)preg_replace('/[^0-9]/', '', $_POST['max_amount'] ?? '0');
        $stmt = $pdo->prepare("UPDATE combined_caps SET max_amount = ? WHERE id = ?");
        $stmt->execute([$max_amount, $id]);
        $success = 'سقف ترکیبی بروزرسانی شد.';
    } elseif ($action === 'add_cap') {
        $name = trim($_POST['name'] ?? '');
        $max_amount = (float)preg_replace('/[^0-9]/', '', $_POST['max_amount'] ?? '0');
        $row_ids = $_POST['row_ids'] ?? [];
        if ($name === '' || empty($row_ids)) {
            $error = 'نام سقف و حداقل یک ردیف مرتبط الزامی است.';
        } else {
            $stmt = $pdo->prepare("INSERT INTO combined_caps (name, max_amount) VALUES (?, ?)");
            $stmt->execute([$name, $max_amount]);
            $cap_id = $pdo->lastInsertId();
            $stmt2 = $pdo->prepare("INSERT INTO combined_cap_rows (cap_id, row_id) VALUES (?, ?)");
            foreach ($row_ids as $rid) {
                $stmt2->execute([$cap_id, (int)$rid]);
            }
            $success = 'سقف ترکیبی جدید اضافه شد.';
        }
    }
}

$rows = $pdo->query("SELECT * FROM insurance_rows ORDER BY sort_order")->fetchAll();
$caps = $pdo->query("SELECT * FROM combined_caps ORDER BY id")->fetchAll();
$cap_row_stmt = $pdo->prepare("SELECT row_id FROM combined_cap_rows WHERE cap_id = ?");

$page_title = 'ردیف‌ها و سقف‌ها';
include __DIR__ . '/../includes/header.php';
?>

<h4 class="mb-4">مدیریت ردیف‌های درمانی و سقف‌های ترکیبی</h4>

<a href="import_rows.php" class="btn btn-outline-success mb-4"><?= icon('upload') ?> ایمپورت گروهی از فایل اکسل</a>

<?php if ($error): ?><div class="alert alert-danger"><?= htmlspecialchars($error) ?></div><?php endif; ?>
<?php if ($success): ?><div class="alert alert-success"><?= htmlspecialchars($success) ?></div><?php endif; ?>

<h6 class="mb-3">ردیف‌های درمانی</h6>
<?php foreach ($rows as $r): ?>
<div class="card p-3 mb-2">
  <form method="post" class="row g-2 align-items-center">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="update_row">
    <input type="hidden" name="row_id" value="<?= $r['id'] ?>">
    <div class="col-md-2"><strong><?= htmlspecialchars($r['name']) ?></strong></div>
    <div class="col-md-2">
      <input type="text" name="max_amount" class="form-control form-control-sm money-input" value="<?= (int)$r['max_amount'] ?>">
    </div>
    <div class="col-md-4">
      <textarea name="required_documents" class="form-control form-control-sm" rows="2" placeholder="مدارک لازم (هرکدام در یک خط)"><?= htmlspecialchars($r['required_documents']) ?></textarea>
    </div>
    <div class="col-md-2">
      <select name="gender_restriction" class="form-select form-select-sm" title="محدودیت جنسیتی">
        <option value="none" <?= $r['gender_restriction'] === 'none' ? 'selected' : '' ?>>بدون محدودیت جنسیتی</option>
        <option value="female_only" <?= $r['gender_restriction'] === 'female_only' ? 'selected' : '' ?>>فقط زنان</option>
        <option value="male_only" <?= $r['gender_restriction'] === 'male_only' ? 'selected' : '' ?>>فقط مردان</option>
      </select>
      <input type="text" name="min_months_after_hire" class="form-control form-control-sm mt-1" placeholder="حداقل ماه پس از استخدام (اختیاری)" value="<?= htmlspecialchars($r['min_months_after_hire'] ?? '') ?>">
    </div>
    <div class="col-md-1">
      <span class="badge <?= $r['is_active'] ? 'bg-success' : 'bg-secondary' ?>"><?= $r['is_active'] ? 'فعال' : 'غیرفعال' ?></span>
    </div>
    <div class="col-md-1 d-flex flex-column gap-1">
      <button class="btn btn-sm btn-primary">ذخیره</button>
    </div>
  </form>
  <form method="post" class="mt-1 d-inline">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="toggle_row">
    <input type="hidden" name="row_id" value="<?= $r['id'] ?>">
    <button class="btn btn-sm btn-outline-secondary">تغییر وضعیت فعال/غیرفعال</button>
  </form>
  <form method="post" class="mt-1 d-inline">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="delete_row">
    <input type="hidden" name="row_id" value="<?= $r['id'] ?>">
    <button class="btn btn-sm btn-outline-danger" onclick="return confirm('این ردیف کاملاً حذف شود؟ این عملیات قابل بازگشت نیست.')">حذف</button>
  </form>
</div>
<?php endforeach; ?>

<div class="card p-3 mb-4">
  <h6>افزودن ردیف درمانی جدید</h6>
  <form method="post" class="row g-2">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="add_row">
    <div class="col-md-3"><input type="text" name="name" class="form-control" placeholder="نام ردیف" required></div>
    <div class="col-md-2"><input type="text" name="max_amount" class="form-control money-input" placeholder="سقف سالانه (ریال)"></div>
    <div class="col-md-5"><textarea name="required_documents" class="form-control" rows="1" placeholder="مدارک لازم"></textarea></div>
    <div class="col-md-2"><button class="btn btn-success w-100">افزودن</button></div>
  </form>
</div>

<h6 class="mb-3 mt-4">سقف‌های ترکیبی</h6>
<?php foreach ($caps as $c): ?>
  <?php $cap_row_stmt->execute([$c['id']]); $related = array_column($cap_row_stmt->fetchAll(), 'row_id'); ?>
  <div class="card p-3 mb-2">
    <form method="post" class="row g-2 align-items-center">
      <?= csrf_field() ?>
      <input type="hidden" name="action" value="update_cap">
      <input type="hidden" name="cap_id" value="<?= $c['id'] ?>">
      <div class="col-md-4"><strong><?= htmlspecialchars($c['name']) ?></strong>
        <div class="small text-muted">
          شامل: <?php
            $labels = [];
            foreach ($rows as $r) { if (in_array($r['id'], $related)) $labels[] = $r['name']; }
            echo htmlspecialchars(implode('، ', $labels));
          ?>
        </div>
      </div>
      <div class="col-md-3">
        <input type="text" name="max_amount" class="form-control form-control-sm money-input" value="<?= (int)$c['max_amount'] ?>">
      </div>
      <div class="col-md-2"><button class="btn btn-sm btn-primary">ذخیره</button></div>
    </form>
    <form method="post" class="mt-1">
      <?= csrf_field() ?>
      <input type="hidden" name="action" value="delete_cap">
      <input type="hidden" name="cap_id" value="<?= $c['id'] ?>">
      <button class="btn btn-sm btn-outline-danger" onclick="return confirm('این سقف ترکیبی حذف شود؟')">حذف</button>
    </form>
  </div>
<?php endforeach; ?>

<div class="card p-3">
  <h6>افزودن سقف ترکیبی جدید</h6>
  <form method="post" class="row g-2">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="add_cap">
    <div class="col-md-4"><input type="text" name="name" class="form-control" placeholder="نام سقف ترکیبی" required></div>
    <div class="col-md-2"><input type="text" name="max_amount" class="form-control money-input" placeholder="سقف مبلغ (ریال)"></div>
    <div class="col-md-4">
      <select name="row_ids[]" class="form-select" multiple required size="3">
        <?php foreach ($rows as $r): ?>
          <option value="<?= $r['id'] ?>"><?= htmlspecialchars($r['name']) ?></option>
        <?php endforeach; ?>
      </select>
      <div class="form-text">با نگه‌داشتن Ctrl چند ردیف را انتخاب کنید.</div>
    </div>
    <div class="col-md-2"><button class="btn btn-success w-100">افزودن</button></div>
  </form>
</div>

<?php include __DIR__ . '/../includes/footer.php'; ?>
