<?php
require_once "../config.php";
require_once "../auth.php";
require_login();

include "header.php";

/* ========================= SweetAlert Helper ========================= */
function swal($title, $text, $icon, $redirect = null) {
    echo "<script>
        Swal.fire({
            title: '$title',
            text: '$text',
            icon: '$icon',
            confirmButtonText: 'ตกลง'
        }).then(() => {";

    if ($redirect) echo "window.location='$redirect';";

    echo "});
    </script>";
}

/* ===================================================================
   ฟังก์ชันแปลงวันที่ ENUM → ไทย
=================================================================== */
function thaiDay($d) {
    $map = [
        'monday' => 'จันทร์',
        'tuesday' => 'อังคาร',
        'wednesday' => 'พุธ',
        'thursday' => 'พฤหัสบดี',
        'friday' => 'ศุกร์',
        'saturday' => 'เสาร์',
        'sunday' => 'อาทิตย์'
    ];
    return $map[$d];
}

/* ===================================================================
   สีของวัน
=================================================================== */
function dayColor($d) {
    $color = [
        'monday' => '#0d6efd',
        'tuesday' => '#6610f2',
        'wednesday' => '#198754',
        'thursday' => '#fd7e14',
        'friday' => '#dc3545',
        'saturday' => '#20c997',
        'sunday' => '#6f42c1'
    ];
    return $color[$d];
}

/* ===================================================================
   ตรวจ user_id ที่จะใช้ filter
=================================================================== */
if ($ROLE == "user") {
    $selected_user = $USER_ID;
} else {
    $selected_user = isset($_GET['uid']) ? intval($_GET['uid']) : 0;
}

/* ===================================================================
   ADD ITEM (Prevent duplicate day)
=================================================================== */
if (isset($_POST['add_item'])) {

    $uid = ($ROLE == "user") ? $USER_ID : intval($_POST['user_id']);
    $day = $_POST['day'];
    $name = trim($_POST['item_name']);

    // ตรวจว่ามีวันนี้แล้วหรือยัง
    $chk = $conn->query("SELECT id FROM items WHERE user_id=$uid AND day='$day'");

    if ($chk->num_rows > 0) {
        swal("ซ้ำ!", "ไม่สามารถเพิ่มรายการวันนี้ได้ (มีข้อมูลอยู่แล้ว)", "error");
    } else {
        $stmt = $conn->prepare("INSERT INTO items (user_id, day, item_name) VALUES (?, ?, ?)");
        $stmt->bind_param("iss", $uid, $day, $name);
        $stmt->execute();

        swal("สำเร็จ", "เพิ่มรายการสำเร็จ", "success", "items.php?uid=$uid");
    }
}

/* ===================================================================
   EDIT ITEM (Prevent duplicate day)
=================================================================== */
if (isset($_POST['edit_item'])) {

    $id   = intval($_POST['item_id']);
    $day  = $_POST['day'];
    $name = trim($_POST['item_name']);

    $r = $conn->query("SELECT user_id FROM items WHERE id=$id")->fetch_assoc();
    $uid = $r['user_id'];

    if ($ROLE == "user" && $uid != $USER_ID) {
        swal("สิทธิ์ไม่เพียงพอ", "คุณไม่มีสิทธิ์แก้ไขรายการนี้", "error", "items.php");
        exit;
    }

    // เช็คซ้ำ
    $chk = $conn->query("
        SELECT id FROM items 
        WHERE user_id=$uid AND day='$day' AND id<>$id
    ");

    if ($chk->num_rows > 0) {
        swal("วันซ้ำ!", "ไม่สามารถบันทึกได้ — วันนี้มีรายการอยู่แล้ว", "error");
    } else {
        $stmt = $conn->prepare("UPDATE items SET day=?, item_name=? WHERE id=?");
        $stmt->bind_param("ssi", $day, $name, $id);
        $stmt->execute();

        swal("สำเร็จ", "บันทึกข้อมูลเรียบร้อย", "success", "items.php?uid=$uid");
    }
}

/* ===================================================================
   DELETE ITEM
=================================================================== */
if (isset($_GET['del'])) {

    $id = intval($_GET['del']);

    $r = $conn->query("SELECT user_id FROM items WHERE id=$id")->fetch_assoc();
    if ($ROLE=="user" && $r['user_id'] != $USER_ID) {
        swal("สิทธิ์ไม่เพียงพอ", "คุณไม่มีสิทธิ์ลบรายการนี้", "error", "items.php");
        exit;
    }

    $conn->query("DELETE FROM items WHERE id=$id");

    swal("สำเร็จ", "ลบรายการเรียบร้อย", "success", "items.php?uid={$r['user_id']}");
}
?>

<style>
.item-card {
    background: #fff;
    border-radius: 12px;
    padding: 15px;
    border: 1px solid #e0e0e0;
    transition: 0.2s;
}
.item-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 4px 18px rgba(0,0,0,0.12);
}
.day-circle {
    width: 55px;
    height: 55px;
    border-radius: 50%;
    color: white;
    text-align: center;
    line-height: 55px;
    font-weight: bold;
}
.user-list-box {
    padding: 10px;
    border-radius: 10px;
    border: 1px solid #e0e0e0;
    background: #fff;
}
</style>

<h3><i class="bi bi-list-check"></i> รายการสิ่งของประจำวัน</h3>
<hr>

<?php if ($ROLE != "user"): ?>
<h5><i class="bi bi-people"></i> เลือกผู้ใช้</h5>

<div class="row mb-4">
<?php
$users = $conn->query("SELECT id, fullname, role FROM users ORDER BY fullname");
while ($u = $users->fetch_assoc()):
?>
<div class="col-md-3">
    <a href="items.php?uid=<?= $u['id'] ?>" class="text-decoration-none text-dark">
        <div class="user-list-box mb-2 <?= ($selected_user==$u['id'])?'border-primary':'' ?>">
            <strong><?= $u['fullname'] ?></strong><br>
            <small><?= $u['role'] ?></small>
        </div>
    </a>
</div>
<?php endwhile; ?>
</div>

<?php if (!$selected_user): ?>
<div class="alert alert-info">กรุณาเลือกผู้ใช้ก่อน</div>
<?php include "../footer.php"; exit(); ?>
<?php endif; ?>

<?php else: ?>
<h5 class="text-muted"><i class="bi bi-person"></i> ผู้ใช้: <?= $_SESSION['fullname'] ?></h5>
<?php endif; ?>


<!-- ========== รายการสิ่งของของ USER ที่เลือก ========== -->

<?php
$sql = "
    SELECT items.*, users.fullname
    FROM items
    JOIN users ON items.user_id = users.id
    WHERE items.user_id = $selected_user
    ORDER BY FIELD(day,'monday','tuesday','wednesday','thursday','friday','saturday','sunday'),
             items.id DESC
";
$res = $conn->query($sql);
?>

<div class="row g-3 mt-2">

<?php while ($i = $res->fetch_assoc()): ?>
<?php $color = dayColor($i['day']); ?>

<div class="col-md-6 col-lg-4">
    <div class="item-card">

        <div class="d-flex">
            <div class="day-circle" style="background: <?= $color ?>;">
                <?= thaiDay($i['day']) ?>
            </div>

            <div class="ms-3 flex-grow-1">
                <strong><?= htmlspecialchars($i['item_name']) ?></strong><br>
                <small class="text-muted"><?= $i['fullname'] ?></small>
            </div>
        </div>

        <div class="text-end mt-3">
            <?php if ($ROLE=='admin' || $ROLE=='staff' || $i['user_id']==$USER_ID): ?>

            <button class="btn btn-warning btn-sm"
                    data-bs-toggle="modal"
                    data-bs-target="#editModal<?= $i['id'] ?>">
                <i class="bi bi-pencil-square"></i>
            </button>

            <button onclick="confirmDelete(<?= $i['id'] ?>)"
               class="btn btn-danger btn-sm">
                <i class="bi bi-trash"></i>
            </button>

            <?php endif; ?>
        </div>

    </div>
</div>

<!-- SweetAlert Delete Confirm -->
<script>
function confirmDelete(id){
    Swal.fire({
        title: "ลบรายการ?",
        text: "ต้องการลบรายการนี้หรือไม่?",
        icon: "warning",
        showCancelButton: true,
        confirmButtonText: "ลบ",
        cancelButtonText: "ยกเลิก"
    }).then((res)=>{
        if(res.isConfirmed){
            window.location = "items.php?del=" + id + "&uid=<?= $selected_user ?>";
        }
    });
}
</script>

<!-- EDIT MODAL -->
<div class="modal fade" id="editModal<?= $i['id'] ?>">
  <div class="modal-dialog">
    <div class="modal-content">

      <form method="post">

        <div class="modal-header">
          <h5 class="modal-title">แก้ไขรายการ</h5>
          <button class="btn-close" data-bs-dismiss="modal"></button>
        </div>

        <div class="modal-body">

          <input type="hidden" name="item_id" value="<?= $i['id'] ?>">

          <label>วัน</label>
          <select name="day" class="form-select mb-2">
            <?php
            foreach (['monday'=>'จันทร์','tuesday'=>'อังคาร','wednesday'=>'พุธ','thursday'=>'พฤหัสบดี','friday'=>'ศุกร์','saturday'=>'เสาร์','sunday'=>'อาทิตย์'] as $k=>$v):
            ?>
            <option value="<?= $k ?>" <?= $i['day']==$k?'selected':'' ?>><?= $v ?></option>
            <?php endforeach; ?>
          </select>

          <label>รายการสิ่งของ</label>
          <input type="text" name="item_name"
                 class="form-control"
                 value="<?= htmlspecialchars($i['item_name']) ?>"
                 required>

        </div>

        <div class="modal-footer">
          <button name="edit_item" class="btn btn-success">
            <i class="bi bi-save"></i> บันทึก
          </button>
        </div>

      </form>

    </div>
  </div>
</div>

<?php endwhile; ?>
</div>



<!-- Floating Add Button -->
<div class="btn btn-primary rounded-circle"
     style="position: fixed; bottom:25px; right:25px; width:60px; height:60px; font-size:32px;"
     data-bs-toggle="modal" data-bs-target="#addModal">+
</div>

<?php
/* ========================
   วันทั้งหมด
======================== */
$all_days = [
    'monday' => 'จันทร์',
    'tuesday' => 'อังคาร',
    'wednesday' => 'พุธ',
    'thursday' => 'พฤหัสบดี',
    'friday' => 'ศุกร์',
    'saturday' => 'เสาร์',
    'sunday' => 'อาทิตย์'
];

/* ========================
   วันของ user ที่ใช้ไปแล้ว
======================== */
$used_days = [];
$day_q = $conn->query("SELECT day FROM items WHERE user_id=$selected_user");
while ($d = $day_q->fetch_assoc()) {
    $used_days[] = $d['day'];
}
?>

<!-- ADD MODAL -->
<div class="modal fade" id="addModal">
  <div class="modal-dialog">
    <div class="modal-content">

      <form method="post">

        <div class="modal-header">
          <h5 class="modal-title">เพิ่มรายการสิ่งของ</h5>
          <button class="btn-close" data-bs-dismiss="modal"></button>
        </div>

        <div class="modal-body">

          <?php if ($ROLE != "user"): ?>
          <label>ผู้ใช้</label>
          <select name="user_id" class="form-select mb-2">
            <?php
            $u = $conn->query("SELECT id, fullname FROM users ORDER BY fullname");
            while ($x = $u->fetch_assoc()):
            ?>
              <option value="<?= $x['id'] ?>" <?= ($selected_user==$x['id'])?'selected':'' ?>>
                <?= $x['fullname'] ?>
              </option>
            <?php endwhile; ?>
          </select>
          <?php else: ?>
          <input type="hidden" name="user_id" value="<?= $USER_ID ?>">
          <?php endif; ?>

          <label>วัน</label>
          <select name="day" class="form-select mb-2" required>
          <?php foreach ($all_days as $k => $v): ?>
              <?php if (!in_array($k, $used_days)): ?>
                  <option value="<?= $k ?>"><?= $v ?></option>
              <?php endif; ?>
          <?php endforeach; ?>
          </select>

          <label>รายการสิ่งของ</label>
          <input type="text" name="item_name" class="form-control" required>

        </div>

        <div class="modal-footer">
          <button name="add_item" class="btn btn-primary">
            <i class="bi bi-plus-circle"></i> เพิ่มรายการ
          </button>
        </div>

      </form>

    </div>
  </div>
</div>

<?php include "../footer.php"; ?>
