<?php

namespace App\Policies;

use App\Models\Product;
use App\Models\User;

class ProductPolicy
{
    /**
     * Menentukan siapa yang bisa melihat menu "Data Produk" di sidebar.
     */
    public function viewAny(User $user): bool
    {
        // Izinkan Owner, Admin, dan Kasir melihat daftar barang
        return in_array($user->role, ['owner', 'admin', 'kasir']);
    }

    /**
     * Menentukan siapa yang bisa melihat detail produk.
     */
    public function view(User $user, Product $product): bool
    {
        return in_array($user->role, ['owner', 'admin', 'kasir']);
    }

    /**
     * Menentukan siapa yang bisa Membuat Produk Baru.
     * PENTING: Admin/Kasir harus diizinkan agar fitur "Input Pintar" (Klaim Produk) bisa berjalan.
     */
    public function create(User $user): bool
    {
        return in_array($user->role, ['owner', 'admin', 'kasir']);
    }

    /**
     * Menentukan siapa yang bisa Mengedit Produk.
     * Admin/Kasir perlu akses ini untuk mengatur harga/stok cabang mereka sendiri.
     */
    public function update(User $user, Product $product): bool
    {
        return in_array($user->role, ['owner', 'admin', 'kasir']);
    }

    /**
     * Menentukan siapa yang bisa Menghapus Produk.
     * HANYA OWNER yang boleh menghapus Data Master agar aman.
     */
    public function delete(User $user, Product $product): bool
    {
        return $user->role === 'owner';
    }

    /**
     * Fitur hapus banyak sekaligus (Bulk Delete).
     * HANYA OWNER.
     */
    public function deleteAny(User $user): bool
    {
        return $user->role === 'owner';
    }
}