115 lines
4.5 KiB
PHP
115 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
use App\Traits\ProvidesEnumOptions;
|
|
|
|
enum Permission: string
|
|
{
|
|
use ProvidesEnumOptions;
|
|
|
|
case DASHBOARD_VIEW = 'dashboard.view';
|
|
|
|
case EMPLOYEES_VIEW = 'employees.view';
|
|
case EMPLOYEES_CREATE = 'employees.create';
|
|
case EMPLOYEES_UPDATE = 'employees.update';
|
|
case EMPLOYEES_DELETE = 'employees.delete';
|
|
case EMPLOYEES_RESET_PASSWORD = 'employees.reset-password';
|
|
case EMPLOYEES_TOGGLE_STATUS = 'employees.toggle-status';
|
|
|
|
case CATEGORIES_VIEW = 'categories.view';
|
|
case CATEGORIES_CREATE = 'categories.create';
|
|
case CATEGORIES_UPDATE = 'categories.update';
|
|
case CATEGORIES_DELETE = 'categories.delete';
|
|
|
|
case SUPPLIERS_VIEW = 'suppliers.view';
|
|
case SUPPLIERS_CREATE = 'suppliers.create';
|
|
case SUPPLIERS_UPDATE = 'suppliers.update';
|
|
case SUPPLIERS_DELETE = 'suppliers.delete';
|
|
|
|
case CUSTOMERS_VIEW = 'customers.view';
|
|
case CUSTOMERS_CREATE = 'customers.create';
|
|
case CUSTOMERS_UPDATE = 'customers.update';
|
|
case CUSTOMERS_DELETE = 'customers.delete';
|
|
|
|
case PRODUCTS_VIEW = 'products.view';
|
|
case PRODUCTS_CREATE = 'products.create';
|
|
case PRODUCTS_UPDATE = 'products.update';
|
|
case PRODUCTS_DELETE = 'products.delete';
|
|
case PRODUCTS_TOGGLE_STATUS = 'products.toggle-status';
|
|
|
|
case RAW_MATERIALS_VIEW = 'raw-materials.view';
|
|
case RAW_MATERIALS_CREATE = 'raw-materials.create';
|
|
case RAW_MATERIALS_UPDATE = 'raw-materials.update';
|
|
case RAW_MATERIALS_DELETE = 'raw-materials.delete';
|
|
case RAW_MATERIALS_TOGGLE_STATUS = 'raw-materials.toggle-status';
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::DASHBOARD_VIEW => 'Lihat Dashboard',
|
|
|
|
self::EMPLOYEES_VIEW => 'Lihat Pegawai',
|
|
self::EMPLOYEES_CREATE => 'Tambah Pegawai',
|
|
self::EMPLOYEES_UPDATE => 'Ubah Pegawai',
|
|
self::EMPLOYEES_DELETE => 'Hapus Pegawai',
|
|
self::EMPLOYEES_RESET_PASSWORD => 'Reset Kata Sandi Pegawai',
|
|
self::EMPLOYEES_TOGGLE_STATUS => 'Ubah Status Pegawai',
|
|
|
|
self::CATEGORIES_VIEW => 'Lihat Kategori',
|
|
self::CATEGORIES_CREATE => 'Tambah Kategori',
|
|
self::CATEGORIES_UPDATE => 'Ubah Kategori',
|
|
self::CATEGORIES_DELETE => 'Hapus Kategori',
|
|
|
|
self::SUPPLIERS_VIEW => 'Lihat Supplier',
|
|
self::SUPPLIERS_CREATE => 'Tambah Supplier',
|
|
self::SUPPLIERS_UPDATE => 'Ubah Supplier',
|
|
self::SUPPLIERS_DELETE => 'Hapus Supplier',
|
|
|
|
self::CUSTOMERS_VIEW => 'Lihat Pelanggan',
|
|
self::CUSTOMERS_CREATE => 'Tambah Pelanggan',
|
|
self::CUSTOMERS_UPDATE => 'Ubah Pelanggan',
|
|
self::CUSTOMERS_DELETE => 'Hapus Pelanggan',
|
|
|
|
self::PRODUCTS_VIEW => 'Lihat Produk',
|
|
self::PRODUCTS_CREATE => 'Tambah Produk',
|
|
self::PRODUCTS_UPDATE => 'Ubah Produk',
|
|
self::PRODUCTS_DELETE => 'Hapus Produk',
|
|
self::PRODUCTS_TOGGLE_STATUS => 'Ubah Status Produk',
|
|
|
|
self::RAW_MATERIALS_VIEW => 'Lihat Bahan Baku',
|
|
self::RAW_MATERIALS_CREATE => 'Tambah Bahan Baku',
|
|
self::RAW_MATERIALS_UPDATE => 'Ubah Bahan Baku',
|
|
self::RAW_MATERIALS_DELETE => 'Hapus Bahan Baku',
|
|
self::RAW_MATERIALS_TOGGLE_STATUS => 'Ubah Status Bahan Baku',
|
|
};
|
|
}
|
|
|
|
public function group(): string
|
|
{
|
|
return match ($this) {
|
|
self::DASHBOARD_VIEW => 'Umum',
|
|
self::EMPLOYEES_VIEW, self::EMPLOYEES_CREATE, self::EMPLOYEES_UPDATE,
|
|
self::EMPLOYEES_DELETE, self::EMPLOYEES_RESET_PASSWORD, self::EMPLOYEES_TOGGLE_STATUS => 'Pegawai',
|
|
self::CATEGORIES_VIEW, self::CATEGORIES_CREATE, self::CATEGORIES_UPDATE,
|
|
self::CATEGORIES_DELETE => 'Kategori',
|
|
self::SUPPLIERS_VIEW, self::SUPPLIERS_CREATE, self::SUPPLIERS_UPDATE,
|
|
self::SUPPLIERS_DELETE => 'Supplier',
|
|
self::CUSTOMERS_VIEW, self::CUSTOMERS_CREATE, self::CUSTOMERS_UPDATE,
|
|
self::CUSTOMERS_DELETE => 'Pelanggan',
|
|
self::PRODUCTS_VIEW, self::PRODUCTS_CREATE, self::PRODUCTS_UPDATE,
|
|
self::PRODUCTS_DELETE, self::PRODUCTS_TOGGLE_STATUS => 'Produk',
|
|
self::RAW_MATERIALS_VIEW, self::RAW_MATERIALS_CREATE, self::RAW_MATERIALS_UPDATE,
|
|
self::RAW_MATERIALS_DELETE, self::RAW_MATERIALS_TOGGLE_STATUS => 'Bahan Baku',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @return list<string>
|
|
*/
|
|
public static function values(): array
|
|
{
|
|
return array_column(self::cases(), 'value');
|
|
}
|
|
}
|