<?php
/**
 * Stock Management Page
 * CMTC Shopping
 */
require_once __DIR__ . '/../includes/header.php';
require_once __DIR__ . '/../includes/navbar.php';

require_login();
require_permission($db, 'manage_stock');

$error = "";
$success = "";

// Handle Stock Adjustment
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['adjust_stock'])) {
    if (!validate_csrf_token($_POST['csrf_token'] ?? '')) {
        $error = "โทเค็นความปลอดภัยไม่ถูกต้อง";
    } else {
        $stock_id = intval($_POST['stock_id'] ?? 0);
        $type = $_POST['type'] ?? 'in'; // in = stock in, out = stock out, set = absolute adjust
        $quantity = intval($_POST['quantity'] ?? 0);

        if ($stock_id <= 0 || $quantity <= 0) {
            $error = "กรุณาระบุข้อมูลที่ถูกต้อง";
        } else {
            try {
                $stmt = $db->prepare("SELECT ps.*, p.name as prod_name, p.sku FROM product_stock ps JOIN products p ON ps.product_id = p.id WHERE ps.id = ?");
                $stmt->execute([$stock_id]);
                $stock = $stmt->fetch();

                if (!$stock) {
                    throw new Exception("ไม่พบข้อมูลสต๊อกนี้");
                }

                $old_qty = $stock['quantity'];
                if ($type === 'in') {
                    $new_qty = $old_qty + $quantity;
                } elseif ($type === 'out') {
                    if ($old_qty < $quantity) {
                        throw new Exception("จำนวนคงเหลือไม่พอสำหรับการเบิกออก");
                    }
                    $new_qty = $old_qty - $quantity;
                } else {
                    $new_qty = $quantity;
                }

                $stmt_upd = $db->prepare("UPDATE product_stock SET quantity = ? WHERE id = ?");
                $stmt_upd->execute([$new_qty, $stock_id]);

                log_activity($db, 'stock', "ปรับปรุงสต๊อกสินค้า SKU {$stock['sku']} เป็น $new_qty ชิ้น");
                $success = "ปรับปรุงสต๊อกสินค้าเรียบร้อยแล้ว";
            } catch (Exception $e) {
                $error = "เกิดข้อผิดพลาด: " . $e->getMessage();
            }
        }
    }
}

// Fetch all stocks
$stmt_stk = $db->query("
    SELECT ps.id as stock_id, ps.quantity, ps.product_id,
           p.sku, p.name as prod_name, p.min_stock,
           pc.color_name, psz.size_name,
           (SELECT image_path FROM product_images WHERE product_id = p.id ORDER BY is_main DESC, id ASC LIMIT 1) as main_image
    FROM product_stock ps
    JOIN products p ON ps.product_id = p.id
    LEFT JOIN product_colors pc ON ps.color_id = pc.id
    LEFT JOIN product_sizes psz ON ps.size_id = psz.id
    ORDER BY ps.quantity ASC, p.name ASC
");
$stocks = $stmt_stk->fetchAll();
?>

<div class="d-flex">
    <?php require_once __DIR__ . '/../includes/sidebar.php'; ?>

    <main class="flex-grow-1 p-4" style="background-color: var(--bs-body-bg);">
        <div class="d-flex justify-content-between align-items-center mb-4">
            <div>
                <h3 class="fw-bold mb-0"><i class="bi bi-box-arrow-in-down text-primary me-2"></i>จัดการคลังสินค้า (Stock)</h3>
                <p class="text-muted small mb-0">ตรวจสอบจำนวนสินค้าคงคลัง ปรับยอดเข้า-ออก และแจ้งเตือนสต๊อกต่ำ</p>
            </div>
            <div>
                <a href="<?php echo base_url('views/products.php'); ?>" class="btn btn-outline-primary btn-sm"><i class="bi bi-box-seam me-1"></i>ไปจัดการสินค้า</a>
            </div>
        </div>

        <?php if (!empty($error)): ?>
            <div class="alert alert-danger mb-4"><?php echo $error; ?></div>
        <?php endif; ?>
        <?php if (!empty($success)): ?>
            <div class="alert alert-success mb-4"><?php echo $success; ?></div>
        <?php endif; ?>

        <div class="card border-0 shadow-sm glass-card p-4">
            <div class="table-responsive">
                <table class="table table-hover align-middle datatable">
                    <thead>
                        <tr>
                            <th>สินค้า</th>
                            <th>SKU</th>
                            <th>สี</th>
                            <th>ไซส์/ขนาด</th>
                            <th class="text-center">คงเหลือ</th>
                            <th class="text-center">ขั้นต่ำ</th>
                            <th>สถานะ</th>
                            <th class="text-center">จัดการ</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($stocks as $s): 
                            $is_low = $s['quantity'] <= $s['min_stock'];
                        ?>
                            <tr class="<?php echo $is_low ? 'table-warning-subtle' : ''; ?>">
                                <td>
                                    <div class="d-flex align-items-center gap-2">
                                        <?php 
                                        $img_src = !empty($s['main_image']) ? product_image_url($s['main_image']) : base_url('assets/images/no-image.png');
                                        ?>
                                        <img src="<?php echo $img_src; ?>" class="rounded border" width="40" height="40" style="object-fit: cover;" onerror="this.onerror=null; this.src='<?php echo base_url('assets/images/no-image.png'); ?>';">
                                        <div class="fw-semibold"><?php echo sanitize($s['prod_name']); ?></div>
                                    </div>
                                </td>
                                <td><code><?php echo sanitize($s['sku']); ?></code></td>
                                <td><?php echo sanitize($s['color_name'] ?? '-'); ?></td>
                                <td><span class="badge bg-secondary"><?php echo sanitize($s['size_name'] ?? '-'); ?></span></td>
                                <td class="text-center fw-bold <?php echo $is_low ? 'text-danger' : 'text-success'; ?> fs-6">
                                    <?php echo number_format($s['quantity']); ?> ชิ้น
                                </td>
                                <td class="text-center text-muted"><?php echo number_format($s['min_stock']); ?></td>
                                <td>
                                    <?php if ($is_low): ?>
                                        <span class="badge bg-danger"><i class="bi bi-exclamation-triangle"></i> ใกล้หมด</span>
                                    <?php else: ?>
                                        <span class="badge bg-success"><i class="bi bi-check-circle"></i> ปกติ</span>
                                    <?php endif; ?>
                                </td>
                                <td class="text-center">
                                    <button class="btn btn-sm btn-primary btn-adjust-stock" 
                                            data-id="<?php echo $s['stock_id']; ?>"
                                            data-name="<?php echo sanitize($s['prod_name'] . ' (' . ($s['color_name'] ?? '') . ' / ' . ($s['size_name'] ?? '') . ')'); ?>"
                                            data-qty="<?php echo $s['quantity']; ?>"
                                            data-bs-toggle="modal"
                                            data-bs-target="#adjustModal">
                                        <i class="bi bi-pencil-square"></i> ปรับยอด
                                    </button>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </main>
</div>

<!-- Adjust Stock Modal -->
<div class="modal fade" id="adjustModal" tabindex="-1">
    <div class="modal-dialog">
        <form method="POST">
            <input type="hidden" name="csrf_token" value="<?php echo get_csrf_token(); ?>">
            <input type="hidden" name="stock_id" id="modal_stock_id">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title"><i class="bi bi-arrow-left-right text-primary me-2"></i>ปรับปรุงจำนวนสต๊อก</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body">
                    <p class="fw-bold mb-2 text-primary" id="modal_stock_name"></p>
                    <p class="text-muted small mb-3">จำนวนปัจจุบัน: <span class="fw-bold text-dark" id="modal_current_qty"></span> ชิ้น</p>

                    <div class="mb-3">
                        <label class="form-label">ประเภทการปรับปรุง *</label>
                        <select name="type" class="form-select" required>
                            <option value="in">นำเข้าสินค้า (+ เพิ่มสต๊อก)</option>
                            <option value="out">เบิกออกสินค้า (- ลดสต๊อก)</option>
                            <option value="set">กำหนดจำนวนใหม่โดยตรง</option>
                        </select>
                    </div>

                    <div class="mb-3">
                        <label class="form-label">จำนวน (ชิ้น) *</label>
                        <input type="number" name="quantity" class="form-control" min="1" required placeholder="ระบุจำนวน">
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">ยกเลิก</button>
                    <button type="submit" name="adjust_stock" class="btn btn-primary">บันทึก</button>
                </div>
            </div>
        </form>
    </div>
</div>

<script>
$(document).ready(function() {
    $('.btn-adjust-stock').on('click', function() {
        $('#modal_stock_id').val($(this).data('id'));
        $('#modal_stock_name').text($(this).data('name'));
        $('#modal_current_qty').text($(this).data('qty'));
    });
});
</script>

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