<?php
/**
 * PACK BEACON – SECURE API
 * Beacon Detection API
 * Path: /api-secure/beacon_detected.php
 *
 * เมื่อมือถือพบ Beacon → เรียก API นี้
 * ระบบจะ:
 * 1) ตรวจสอบ Token + Signature + Timestamp
 * 2) ตรวจสอบ beacon ว่าเป็นของ user คนไหน
 * 3) บันทึก Log
 * 4) ส่งผลลัพธ์ให้ Client ใช้ต่อ (เช่น แสดงรายการสิ่งของของวันนี้)
 */

require_once __DIR__ . "/config-secure.php";
require_once __DIR__ . "/auth-secure.php";

require_method("POST");

// ตรวจสอบ Secure Header
list($raw, $input) = require_secure_json();

/* ============================================================
   รับค่าจาก client
============================================================ */
$uuid  = trim($input["uuid"] ?? "");
$major = intval($input["major"] ?? 0);
$minor = intval($input["minor"] ?? 0);

if ($uuid == "" || $major <= 0 || $minor <= 0) {
    api_json([
        "status" => "error",
        "message" => "Missing uuid/major/minor"
    ]);
}

/* ============================================================
   ตรวจสอบ Beacon
============================================================ */
$stmt = $conn->prepare("
    SELECT beacons.*, users.fullname
    FROM beacons
    LEFT JOIN users ON beacons.user_id = users.id
    WHERE uuid = ? AND major = ? AND minor = ?
");
$stmt->bind_param("sii", $uuid, $major, $minor);
$stmt->execute();
$beacon = $stmt->get_result()->fetch_assoc();

if (!$beacon) {
    api_json([
        "status" => "not_found",
        "message" => "Beacon not registered"
    ]);
}

$user_id = intval($beacon["user_id"]);

/* ============================================================
   บันทึก Log
============================================================ */

$message = "Beacon Detected → UUID: {$uuid}, Major: {$major}, Minor: {$minor}";

$stmt = $conn->prepare("
    INSERT INTO logs (user_id, beacon_id, message)
    VALUES (?, ?, ?)
");
$stmt->bind_param("iis", $user_id, $beacon["id"], $message);
$stmt->execute();

/* ============================================================
   หาวันนี้คือวันอะไร และรายการสิ่งของของวันนั้น
============================================================ */
$today = strtolower(date("l"));

$day_map = [
    "monday" => "monday",
    "tuesday" => "tuesday",
    "wednesday" => "wednesday",
    "thursday" => "thursday",
    "friday" => "friday",
    "saturday" => "saturday",
    "sunday" => "sunday"
];

$today_enum = $day_map[$today];

$stmt = $conn->prepare("
    SELECT id, item_name 
    FROM items
    WHERE user_id = ? AND day = ?
");
$stmt->bind_param("is", $user_id, $today_enum);
$stmt->execute();
$items_today = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);

/* ============================================================
   ส่งผลลัพธ์กลับ
============================================================ */
api_json([
    "status" => "success",
    "beacon" => [
        "uuid" => $uuid,
        "major" => $major,
        "minor" => $minor,
        "location" => $beacon["location"],
        "owner" => $beacon["fullname"]
    ],
    "items_today" => $items_today,
    "total_items" => count($items_today),
    "message" => "Beacon detected & items loaded"
]);
