store/app/Enums/Permission.php

200 lines
8.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 ATTENDANCES_VIEW = 'attendances.view';
case ATTENDANCES_CREATE = 'attendances.create';
case ATTENDANCES_DELETE = 'attendances.delete';
case ATTENDANCES_MANAGE = 'attendances.manage';
case LEAVE_REQUESTS_VIEW = 'leave-requests.view';
case LEAVE_REQUESTS_CREATE = 'leave-requests.create';
case LEAVE_REQUESTS_UPDATE = 'leave-requests.update';
case LEAVE_REQUESTS_DELETE = 'leave-requests.delete';
case LEAVE_REQUESTS_VERIFY = 'leave-requests.verify';
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';
case CASH_VIEW = 'cash.view';
case CASH_DEPOSIT = 'cash.deposit';
case CASH_UPDATE = 'cash.update';
case CASH_DELETE = 'cash.delete';
case EXPENSES_VIEW = 'expenses.view';
case EXPENSES_CREATE = 'expenses.create';
case EXPENSES_UPDATE = 'expenses.update';
case EXPENSES_DELETE = 'expenses.delete';
case EMPLOYEE_ADVANCES_VIEW = 'employee-advances.view';
case EMPLOYEE_ADVANCES_CREATE = 'employee-advances.create';
case EMPLOYEE_ADVANCES_UPDATE = 'employee-advances.update';
case EMPLOYEE_ADVANCES_DELETE = 'employee-advances.delete';
case EMPLOYEE_ADVANCES_VERIFY = 'employee-advances.verify';
case EMPLOYEE_ADVANCES_PAY = 'employee-advances.pay';
case PAYROLL_VIEW = 'payroll.view';
case PAYROLL_PAY = 'payroll.pay';
case PAYROLL_ADJUST = 'payroll.adjust';
case PAYROLL_CLOSE = 'payroll.close';
case SETTINGS_VIEW = 'settings.view';
case SETTINGS_UPDATE = 'settings.update';
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::ATTENDANCES_VIEW => 'Lihat Presensi',
self::ATTENDANCES_CREATE => 'Presensi Masuk/Pulang',
self::ATTENDANCES_DELETE => 'Hapus Presensi',
self::ATTENDANCES_MANAGE => 'Kelola Semua Presensi',
self::LEAVE_REQUESTS_VIEW => 'Lihat Cuti',
self::LEAVE_REQUESTS_CREATE => 'Ajukan Cuti',
self::LEAVE_REQUESTS_UPDATE => 'Ubah Pengajuan Cuti',
self::LEAVE_REQUESTS_DELETE => 'Hapus Pengajuan Cuti',
self::LEAVE_REQUESTS_VERIFY => 'Setujui/Tolak Cuti',
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',
self::CASH_VIEW => 'Lihat Kas',
self::CASH_DEPOSIT => 'Setor Kas',
self::CASH_UPDATE => 'Ubah Setor Kas',
self::CASH_DELETE => 'Hapus Setor Kas',
self::EXPENSES_VIEW => 'Lihat Pengeluaran',
self::EXPENSES_CREATE => 'Tambah Pengeluaran',
self::EXPENSES_UPDATE => 'Ubah Pengeluaran',
self::EXPENSES_DELETE => 'Hapus Pengeluaran',
self::EMPLOYEE_ADVANCES_VIEW => 'Lihat Kasbon',
self::EMPLOYEE_ADVANCES_CREATE => 'Ajukan Kasbon',
self::EMPLOYEE_ADVANCES_UPDATE => 'Ubah Kasbon',
self::EMPLOYEE_ADVANCES_DELETE => 'Hapus Kasbon',
self::EMPLOYEE_ADVANCES_VERIFY => 'Setujui/Tolak Kasbon',
self::EMPLOYEE_ADVANCES_PAY => 'Pelunasi Kasbon',
self::PAYROLL_VIEW => 'Lihat Gaji',
self::PAYROLL_PAY => 'Bayar Gaji',
self::PAYROLL_ADJUST => 'Sesuaikan Gaji',
self::PAYROLL_CLOSE => 'Tutup Periode Gaji',
self::SETTINGS_VIEW => 'Lihat Pengaturan Aplikasi',
self::SETTINGS_UPDATE => 'Ubah Pengaturan Aplikasi',
};
}
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::ATTENDANCES_VIEW, self::ATTENDANCES_CREATE, self::ATTENDANCES_DELETE,
self::ATTENDANCES_MANAGE => 'Presensi',
self::LEAVE_REQUESTS_VIEW, self::LEAVE_REQUESTS_CREATE, self::LEAVE_REQUESTS_UPDATE,
self::LEAVE_REQUESTS_DELETE, self::LEAVE_REQUESTS_VERIFY => 'Cuti',
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',
self::CASH_VIEW, self::CASH_DEPOSIT, self::CASH_UPDATE, self::CASH_DELETE => 'Kas',
self::EXPENSES_VIEW, self::EXPENSES_CREATE, self::EXPENSES_UPDATE,
self::EXPENSES_DELETE => 'Pengeluaran',
self::EMPLOYEE_ADVANCES_VIEW, self::EMPLOYEE_ADVANCES_CREATE, self::EMPLOYEE_ADVANCES_UPDATE,
self::EMPLOYEE_ADVANCES_DELETE, self::EMPLOYEE_ADVANCES_VERIFY,
self::EMPLOYEE_ADVANCES_PAY => 'Kasbon',
self::PAYROLL_VIEW, self::PAYROLL_PAY, self::PAYROLL_ADJUST,
self::PAYROLL_CLOSE => 'Gaji',
self::SETTINGS_VIEW, self::SETTINGS_UPDATE => 'Pengaturan Aplikasi',
};
}
/**
* @return list<string>
*/
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}