refactor: standardize enum case naming and update route permissions for consistency across the application
This commit is contained in:
parent
d8a403daa9
commit
6d6de5fa4b
@ -4,20 +4,20 @@
|
||||
|
||||
enum ActivityEventLabel: string
|
||||
{
|
||||
case Created = 'created';
|
||||
case Updated = 'updated';
|
||||
case Deleted = 'deleted';
|
||||
case Login = 'login';
|
||||
case Logout = 'logout';
|
||||
case CREATED = 'created';
|
||||
case UPDATED = 'updated';
|
||||
case DELETED = 'deleted';
|
||||
case LOGIN = 'login';
|
||||
case LOGOUT = 'logout';
|
||||
|
||||
public function label(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::Created => 'Dibuat',
|
||||
self::Updated => 'Diperbarui',
|
||||
self::Deleted => 'Dihapus',
|
||||
self::Login => 'Masuk',
|
||||
self::Logout => 'Keluar',
|
||||
self::CREATED => 'Dibuat',
|
||||
self::UPDATED => 'Diperbarui',
|
||||
self::DELETED => 'Dihapus',
|
||||
self::LOGIN => 'Masuk',
|
||||
self::LOGOUT => 'Keluar',
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -14,19 +14,19 @@ enum Permission: string
|
||||
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 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 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';
|
||||
@ -47,13 +47,13 @@ enum Permission: string
|
||||
case PRODUCTS_CREATE = 'products.create';
|
||||
case PRODUCTS_UPDATE = 'products.update';
|
||||
case PRODUCTS_DELETE = 'products.delete';
|
||||
case PRODUCTS_TOGGLE_STATUS = 'products.toggle-status';
|
||||
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 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 PURCHASES_VIEW = 'purchases.view';
|
||||
case PURCHASES_CREATE = 'purchases.create';
|
||||
@ -76,9 +76,9 @@ enum Permission: string
|
||||
case CUTTINGS_VERIFY = 'cuttings.verify';
|
||||
case CUTTINGS_REJECT = 'cuttings.reject';
|
||||
|
||||
case OWNER_VERIFICATIONS_VIEW = 'owner-verifications.view';
|
||||
case OWNER_VERIFICATIONS_VERIFY = 'owner-verifications.verify';
|
||||
case OWNER_VERIFICATIONS_REJECT = 'owner-verifications.reject';
|
||||
case OWNER_VERIFICATIONS_VIEW = 'owner_verifications.view';
|
||||
case OWNER_VERIFICATIONS_VERIFY = 'owner_verifications.verify';
|
||||
case OWNER_VERIFICATIONS_REJECT = 'owner_verifications.reject';
|
||||
|
||||
case STOCKS_VIEW = 'stocks.view';
|
||||
|
||||
@ -93,12 +93,12 @@ enum Permission: string
|
||||
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 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_ADJUST = 'payroll.adjust';
|
||||
@ -106,7 +106,7 @@ enum Permission: string
|
||||
case SETTINGS_VIEW = 'settings.view';
|
||||
case SETTINGS_UPDATE = 'settings.update';
|
||||
|
||||
case ACTIVITY_LOGS_VIEW = 'activity-logs.view';
|
||||
case ACTIVITY_LOGS_VIEW = 'activity_logs.view';
|
||||
|
||||
case ROLES_VIEW = 'roles.view';
|
||||
case ROLES_CREATE = 'roles.create';
|
||||
|
||||
@ -48,7 +48,7 @@ public function store(EmployeeAdvanceRequest $request): RedirectResponse
|
||||
|
||||
$this->flashSuccess('Kasbon berhasil diajukan.');
|
||||
|
||||
return redirect()->route('admin.finance.employee-advances.index');
|
||||
return redirect()->route('admin.finance.employee_advances.index');
|
||||
}
|
||||
|
||||
public function update(EmployeeAdvanceRequest $request, EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
@ -57,7 +57,7 @@ public function update(EmployeeAdvanceRequest $request, EmployeeAdvance $employe
|
||||
|
||||
$this->flashUpdated('Kasbon');
|
||||
|
||||
return redirect()->route('admin.finance.employee-advances.index');
|
||||
return redirect()->route('admin.finance.employee_advances.index');
|
||||
}
|
||||
|
||||
public function destroy(EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
@ -66,7 +66,7 @@ public function destroy(EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
|
||||
$this->flashDeleted('Kasbon');
|
||||
|
||||
return redirect()->route('admin.finance.employee-advances.index');
|
||||
return redirect()->route('admin.finance.employee_advances.index');
|
||||
}
|
||||
|
||||
public function approve(EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
@ -75,7 +75,7 @@ public function approve(EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
|
||||
$this->flashSuccess('Kasbon berhasil disetujui dan dicairkan dari kas.');
|
||||
|
||||
return redirect()->route('admin.finance.employee-advances.index');
|
||||
return redirect()->route('admin.finance.employee_advances.index');
|
||||
}
|
||||
|
||||
public function reject(RejectEmployeeAdvanceRequest $request, EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
@ -88,7 +88,7 @@ public function reject(RejectEmployeeAdvanceRequest $request, EmployeeAdvance $e
|
||||
|
||||
$this->flashSuccess('Kasbon berhasil ditolak.');
|
||||
|
||||
return redirect()->route('admin.finance.employee-advances.index');
|
||||
return redirect()->route('admin.finance.employee_advances.index');
|
||||
}
|
||||
|
||||
public function pay(EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
@ -97,6 +97,6 @@ public function pay(EmployeeAdvance $employeeAdvance): RedirectResponse
|
||||
|
||||
$this->flashSuccess('Kasbon berhasil dilunasi.');
|
||||
|
||||
return redirect()->route('admin.finance.employee-advances.index');
|
||||
return redirect()->route('admin.finance.employee_advances.index');
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ public function store(SubmitLeaveRequest $request): RedirectResponse
|
||||
|
||||
$this->flashSuccess('Pengajuan cuti berhasil diajukan.');
|
||||
|
||||
return redirect()->route('admin.hr.leave-requests.index');
|
||||
return redirect()->route('admin.hr.leave_requests.index');
|
||||
}
|
||||
|
||||
public function update(SubmitLeaveRequest $request, LeaveRequest $leaveRequest): RedirectResponse
|
||||
@ -61,7 +61,7 @@ public function update(SubmitLeaveRequest $request, LeaveRequest $leaveRequest):
|
||||
|
||||
$this->flashUpdated('Pengajuan cuti');
|
||||
|
||||
return redirect()->route('admin.hr.leave-requests.index');
|
||||
return redirect()->route('admin.hr.leave_requests.index');
|
||||
}
|
||||
|
||||
public function destroy(LeaveRequest $leaveRequest): RedirectResponse
|
||||
@ -70,7 +70,7 @@ public function destroy(LeaveRequest $leaveRequest): RedirectResponse
|
||||
|
||||
$this->flashDeleted('Pengajuan cuti');
|
||||
|
||||
return redirect()->route('admin.hr.leave-requests.index');
|
||||
return redirect()->route('admin.hr.leave_requests.index');
|
||||
}
|
||||
|
||||
public function approve(LeaveRequest $leaveRequest): RedirectResponse
|
||||
@ -79,7 +79,7 @@ public function approve(LeaveRequest $leaveRequest): RedirectResponse
|
||||
|
||||
$this->flashSuccess('Pengajuan cuti berhasil disetujui.');
|
||||
|
||||
return redirect()->route('admin.hr.leave-requests.index');
|
||||
return redirect()->route('admin.hr.leave_requests.index');
|
||||
}
|
||||
|
||||
public function reject(RejectLeaveRequestRequest $request, LeaveRequest $leaveRequest): RedirectResponse
|
||||
@ -92,6 +92,6 @@ public function reject(RejectLeaveRequestRequest $request, LeaveRequest $leaveRe
|
||||
|
||||
$this->flashSuccess('Pengajuan cuti berhasil ditolak.');
|
||||
|
||||
return redirect()->route('admin.hr.leave-requests.index');
|
||||
return redirect()->route('admin.hr.leave_requests.index');
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ public function approve(ApproveVerificationRequest $request, Cutting $cutting):
|
||||
|
||||
$this->flashSuccess('Verifikasi berhasil disetujui. Stok produk telah ditambahkan ke toko.');
|
||||
|
||||
return redirect()->route('admin.manage.owner-verifications.index');
|
||||
return redirect()->route('admin.manage.owner_verifications.index');
|
||||
}
|
||||
|
||||
public function reject(RejectVerificationRequest $request, Cutting $cutting): RedirectResponse
|
||||
@ -53,6 +53,6 @@ public function reject(RejectVerificationRequest $request, Cutting $cutting): Re
|
||||
|
||||
$this->flashSuccess('Verifikasi berhasil ditolak.');
|
||||
|
||||
return redirect()->route('admin.manage.owner-verifications.index');
|
||||
return redirect()->route('admin.manage.owner_verifications.index');
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ public function store(RawMaterialRequest $request): RedirectResponse
|
||||
|
||||
$this->flashCreated('Bahan baku');
|
||||
|
||||
return redirect()->route('admin.master.raw-materials.index');
|
||||
return redirect()->route('admin.master.raw_materials.index');
|
||||
}
|
||||
|
||||
public function edit(RawMaterial $rawMaterial): Response
|
||||
@ -78,7 +78,7 @@ public function update(RawMaterialRequest $request, RawMaterial $rawMaterial): R
|
||||
|
||||
$this->flashUpdated('Bahan baku');
|
||||
|
||||
return redirect()->route('admin.master.raw-materials.index');
|
||||
return redirect()->route('admin.master.raw_materials.index');
|
||||
}
|
||||
|
||||
public function toggleStatus(ToggleStatusRequest $request, RawMaterial $rawMaterial): RedirectResponse
|
||||
@ -96,6 +96,6 @@ public function destroy(RawMaterial $rawMaterial): RedirectResponse
|
||||
|
||||
$this->flashDeleted('Bahan baku');
|
||||
|
||||
return redirect()->route('admin.master.raw-materials.index');
|
||||
return redirect()->route('admin.master.raw_materials.index');
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ private function pendingOwnerVerifications(Request $request): int
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
if ($user === null || ! $user->can('owner-verifications.view')) {
|
||||
if ($user === null || ! $user->can('owner_verifications.view')) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -6,9 +6,9 @@
|
||||
use App\Models\User;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
trait ResolvesAuthEmployee
|
||||
trait ResolvesAuthenticatedEmployee
|
||||
{
|
||||
private function resolveAuthEmployee(?User $user = null): Employee
|
||||
private function resolveAuthenticatedEmployee(?User $user = null): Employee
|
||||
{
|
||||
$employee = ($user ?? auth()->user())?->employee;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
use App\Enums\Role;
|
||||
use App\Models\EmployeeAdvance;
|
||||
use App\Models\User;
|
||||
use App\Services\Concerns\ResolvesAuthEmployee;
|
||||
use App\Services\Concerns\ResolvesAuthenticatedEmployee;
|
||||
use App\Services\System\PushNotificationService;
|
||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
@ -14,7 +14,7 @@
|
||||
|
||||
class EmployeeAdvanceService
|
||||
{
|
||||
use ResolvesAuthEmployee;
|
||||
use ResolvesAuthenticatedEmployee;
|
||||
|
||||
public function __construct(
|
||||
private readonly CashService $cashService,
|
||||
@ -74,7 +74,7 @@ public function paginateForIndex(array $tableQuery, User $user, string $status =
|
||||
*/
|
||||
public function create(array $validated, User $user): void
|
||||
{
|
||||
$employee = $this->resolveAuthEmployee($user);
|
||||
$employee = $this->resolveAuthenticatedEmployee($user);
|
||||
|
||||
$employeeAdvance = DB::transaction(function () use ($validated, $employee) {
|
||||
return EmployeeAdvance::create([
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
use App\Models\Employee;
|
||||
use App\Models\LeaveRequest;
|
||||
use App\Models\User;
|
||||
use App\Services\Concerns\ResolvesAuthEmployee;
|
||||
use App\Services\Concerns\ResolvesAuthenticatedEmployee;
|
||||
use App\Services\Media\MediaService;
|
||||
use App\Services\System\PushNotificationService;
|
||||
use Carbon\CarbonInterface;
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
class AttendanceService
|
||||
{
|
||||
use ResolvesAuthEmployee;
|
||||
use ResolvesAuthenticatedEmployee;
|
||||
|
||||
public function __construct(
|
||||
private readonly MediaService $mediaService,
|
||||
@ -72,7 +72,7 @@ public function isOnLeaveToday(Employee $employee): bool
|
||||
*/
|
||||
public function checkIn(array $validated, User $user): void
|
||||
{
|
||||
$employee = $this->resolveAuthEmployee($user);
|
||||
$employee = $this->resolveAuthenticatedEmployee($user);
|
||||
|
||||
$existing = Attendance::query()
|
||||
->where('employee_id', $employee->id)
|
||||
@ -113,7 +113,7 @@ public function checkIn(array $validated, User $user): void
|
||||
*/
|
||||
public function checkOut(array $validated, User $user): void
|
||||
{
|
||||
$employee = $this->resolveAuthEmployee($user);
|
||||
$employee = $this->resolveAuthenticatedEmployee($user);
|
||||
|
||||
$attendance = Attendance::query()
|
||||
->where('employee_id', $employee->id)
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
use App\Enums\LeaveRequestStatus;
|
||||
use App\Models\LeaveRequest;
|
||||
use App\Models\User;
|
||||
use App\Services\Concerns\ResolvesAuthEmployee;
|
||||
use App\Services\Concerns\ResolvesAuthenticatedEmployee;
|
||||
use App\Services\System\PushNotificationService;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
class LeaveRequestService
|
||||
{
|
||||
use ResolvesAuthEmployee;
|
||||
use ResolvesAuthenticatedEmployee;
|
||||
|
||||
public function __construct(
|
||||
private readonly PushNotificationService $pushNotificationService,
|
||||
@ -53,7 +53,7 @@ public function paginateForIndex(array $tableQuery, User $user): LengthAwarePagi
|
||||
*/
|
||||
public function create(array $validated, User $user): void
|
||||
{
|
||||
$employee = $this->resolveAuthEmployee($user);
|
||||
$employee = $this->resolveAuthenticatedEmployee($user);
|
||||
|
||||
$hasPending = LeaveRequest::pending()
|
||||
->where('employee_id', $employee->id)
|
||||
|
||||
@ -44,7 +44,7 @@ const menuGroups: MenuGroup[] = [
|
||||
items: [
|
||||
{ title: 'Kategori', href: '/admin/master/categories', icon: FolderTree, permission: 'categories.view' },
|
||||
{ title: 'Produk', href: '/admin/master/products', icon: Package, permission: 'products.view' },
|
||||
{ title: 'Bahan Baku', href: '/admin/master/raw-materials', icon: Layers, permission: 'raw-materials.view' },
|
||||
{ title: 'Bahan Baku', href: '/admin/master/raw-materials', icon: Layers, permission: 'raw_materials.view' },
|
||||
{ title: 'Supplier', href: '/admin/master/suppliers', icon: User, permission: 'suppliers.view' },
|
||||
{ title: 'Customer', href: '/admin/master/customers', icon: UserCheck, permission: 'customers.view' },
|
||||
],
|
||||
@ -55,7 +55,7 @@ const menuGroups: MenuGroup[] = [
|
||||
{ title: 'Belanja', href: '/admin/manage/purchases', icon: ShoppingBag, permission: 'purchases.view' },
|
||||
{ title: 'Cutting', href: '/admin/manage/cuttings', icon: Scissors, permission: 'cuttings.view' },
|
||||
{ title: 'Stok', href: '/admin/manage/stocks', icon: Warehouse, permission: 'stocks.view', badgeKey: 'pendingCuttings' },
|
||||
{ title: 'Verifikasi Owner', href: '/admin/manage/owner-verifications', icon: CheckCircle, permission: 'owner-verifications.view', badgeKey: 'pendingOwnerVerifications' },
|
||||
{ title: 'Verifikasi Owner', href: '/admin/manage/owner-verifications', icon: CheckCircle, permission: 'owner_verifications.view', badgeKey: 'pendingOwnerVerifications' },
|
||||
{ title: 'Pesanan', href: '/admin/manage/orders', icon: ShoppingCart, permission: 'orders.view' },
|
||||
],
|
||||
},
|
||||
@ -64,7 +64,7 @@ const menuGroups: MenuGroup[] = [
|
||||
items: [
|
||||
{ title: 'Kas Toko', href: '/admin/finance/cash', icon: Wallet, permission: 'cash.view' },
|
||||
{ title: 'Pengeluaran', href: '/admin/finance/expenses', icon: Receipt, permission: 'expenses.view' },
|
||||
{ title: 'Kasbon', href: '/admin/finance/employee-advances', icon: Banknote, permission: 'employee-advances.view', badgeKey: 'pendingEmployeeAdvances' },
|
||||
{ title: 'Kasbon', href: '/admin/finance/employee-advances', icon: Banknote, permission: 'employee_advances.view', badgeKey: 'pendingEmployeeAdvances' },
|
||||
{ title: 'Gaji', href: '/admin/finance/payroll', icon: WalletCards, permission: 'payroll.view' },
|
||||
],
|
||||
},
|
||||
@ -73,7 +73,7 @@ const menuGroups: MenuGroup[] = [
|
||||
items: [
|
||||
{ title: 'Pegawai', href: '/admin/hr/employees', icon: Users, permission: 'employees.view' },
|
||||
{ title: 'Presensi', href: '/admin/hr/attendances', icon: Clock, permission: 'attendances.view' },
|
||||
{ title: 'Cuti', href: '/admin/hr/leave-requests', icon: CalendarDays, permission: 'leave-requests.view', badgeKey: 'pendingLeaveRequests' },
|
||||
{ title: 'Cuti', href: '/admin/hr/leave-requests', icon: CalendarDays, permission: 'leave_requests.view', badgeKey: 'pendingLeaveRequests' },
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -81,7 +81,7 @@ const menuGroups: MenuGroup[] = [
|
||||
items: [
|
||||
{ title: 'Role & Permission', href: '/admin/system/roles', icon: Shield, permission: 'roles.view' },
|
||||
{ title: 'Pengaturan', href: '/admin/system/setting', icon: Settings2, permission: 'settings.view' },
|
||||
{ title: 'Log Aktivitas', href: '/admin/system/activity-logs', icon: History, permission: 'activity-logs.view' },
|
||||
{ title: 'Log Aktivitas', href: '/admin/system/activity-logs', icon: History, permission: 'activity_logs.view' },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
@ -118,7 +118,7 @@ watch(
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<Card v-if="can('employee-advances.verify')">
|
||||
<Card v-if="can('employee_advances.verify')">
|
||||
<CardHeader class="flex flex-row items-center justify-between space-y-0 pb-2">
|
||||
<CardTitle class="text-sm font-medium text-muted-foreground">
|
||||
Total Kasbon
|
||||
@ -147,7 +147,7 @@ watch(
|
||||
<EmployeeAdvanceFormModal v-if="canSubmit" v-model:open="formModalOpen"
|
||||
:employee-advance="editingEmployeeAdvance" />
|
||||
|
||||
<RejectEmployeeAdvanceModal v-if="can('employee-advances.verify')" v-model:open="rejectModalOpen"
|
||||
<RejectEmployeeAdvanceModal v-if="can('employee_advances.verify')" v-model:open="rejectModalOpen"
|
||||
:employee-advance="rejectingEmployeeAdvance" />
|
||||
</AdminLayout>
|
||||
</template>
|
||||
|
||||
@ -28,16 +28,16 @@ const isOwner = computed(() => (
|
||||
|
||||
const canEdit = computed(() => (
|
||||
props.employeeAdvance.is_editable
|
||||
&& !can('employee-advances.verify')
|
||||
&& !can('employee_advances.verify')
|
||||
&& isOwner.value
|
||||
&& can('employee-advances.update')
|
||||
&& can('employee_advances.update')
|
||||
));
|
||||
|
||||
const canDelete = computed(() => (
|
||||
props.employeeAdvance.is_editable
|
||||
&& !can('employee-advances.verify')
|
||||
&& !can('employee_advances.verify')
|
||||
&& isOwner.value
|
||||
&& can('employee-advances.delete')
|
||||
&& can('employee_advances.delete')
|
||||
));
|
||||
|
||||
const deleteConfirmOpen = ref(false);
|
||||
@ -111,7 +111,7 @@ function payEmployeeAdvance() {
|
||||
<TooltipContent>Ubah</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="employeeAdvance.can_verify && can('employee-advances.verify')">
|
||||
<Tooltip v-if="employeeAdvance.can_verify && can('employee_advances.verify')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="size-8 text-green-600 hover:text-green-600"
|
||||
@click="approveConfirmOpen = true">
|
||||
@ -122,7 +122,7 @@ function payEmployeeAdvance() {
|
||||
<TooltipContent>Setujui</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="employeeAdvance.can_verify && can('employee-advances.verify')">
|
||||
<Tooltip v-if="employeeAdvance.can_verify && can('employee_advances.verify')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="text-destructive hover:text-destructive size-8"
|
||||
@click="emit('reject', employeeAdvance)">
|
||||
@ -133,7 +133,7 @@ function payEmployeeAdvance() {
|
||||
<TooltipContent>Tolak</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="employeeAdvance.can_pay && can('employee-advances.pay')">
|
||||
<Tooltip v-if="employeeAdvance.can_pay && can('employee_advances.pay')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="size-8" @click="payConfirmOpen = true">
|
||||
<Banknote class="size-4" />
|
||||
@ -155,11 +155,11 @@ function payEmployeeAdvance() {
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
<ConfirmDialog v-if="can('employee-advances.verify')" v-model:open="approveConfirmOpen" title="Setujui kasbon?"
|
||||
<ConfirmDialog v-if="can('employee_advances.verify')" v-model:open="approveConfirmOpen" title="Setujui kasbon?"
|
||||
:description="`Kasbon ${employeeAdvance.amount_formatted} untuk ${employeeAdvance.employee_name} akan dicairkan. Saldo kas akan berkurang.`"
|
||||
confirm-label="Setujui" cancel-label="Batal" :loading="approveProcessing" @confirm="approveEmployeeAdvance" />
|
||||
|
||||
<ConfirmDialog v-if="can('employee-advances.pay')" v-model:open="payConfirmOpen" title="Lunasi kasbon?"
|
||||
<ConfirmDialog v-if="can('employee_advances.pay')" v-model:open="payConfirmOpen" title="Lunasi kasbon?"
|
||||
:description="`Pelunasan kasbon ${employeeAdvance.amount_formatted} dari ${employeeAdvance.employee_name}. Saldo kas akan bertambah.`"
|
||||
confirm-label="Lunasi" cancel-label="Batal" :loading="payProcessing" @confirm="payEmployeeAdvance" />
|
||||
|
||||
|
||||
@ -70,7 +70,7 @@ function resetPassword() {
|
||||
<TooltipContent>Ubah</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="can('employees.reset-password')">
|
||||
<Tooltip v-if="can('employees.reset_password')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="size-8" @click="resetPasswordConfirmOpen = true">
|
||||
<KeyRound class="size-4" />
|
||||
@ -93,7 +93,7 @@ function resetPassword() {
|
||||
</div>
|
||||
|
||||
<ConfirmDialog
|
||||
v-if="can('employees.reset-password')"
|
||||
v-if="can('employees.reset_password')"
|
||||
v-model:open="resetPasswordConfirmOpen"
|
||||
title="Reset kata sandi pegawai?"
|
||||
:description="`Kata sandi ${employee.profile?.full_name ?? 'pegawai'} akan direset ke kata sandi default sistem (${defaultPassword}). Pengguna akan otomatis logout dari semua sesi aktif.`"
|
||||
|
||||
@ -24,7 +24,7 @@ watch(
|
||||
);
|
||||
|
||||
function toggleStatus(checked: boolean) {
|
||||
if (!can('employees.toggle-status')) {
|
||||
if (!can('employees.toggle_status')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ function toggleStatus(checked: boolean) {
|
||||
<div class="flex items-center gap-2">
|
||||
<Switch
|
||||
:model-value="isActive"
|
||||
:disabled="processing || !can('employees.toggle-status')"
|
||||
:disabled="processing || !can('employees.toggle_status')"
|
||||
@update:model-value="toggleStatus"
|
||||
/>
|
||||
<Badge :variant="isActive ? 'default' : 'secondary'">
|
||||
|
||||
@ -113,7 +113,7 @@ watch(
|
||||
<LeaveRequestFormModal v-if="canSubmit" v-model:open="formModalOpen"
|
||||
:leave-request="editingLeaveRequest" />
|
||||
|
||||
<RejectLeaveRequestModal v-if="can('leave-requests.verify')" v-model:open="rejectModalOpen"
|
||||
<RejectLeaveRequestModal v-if="can('leave_requests.verify')" v-model:open="rejectModalOpen"
|
||||
:leave-request="rejectingLeaveRequest" />
|
||||
</AdminLayout>
|
||||
</template>
|
||||
|
||||
@ -28,16 +28,16 @@ const isOwner = computed(() => (
|
||||
|
||||
const canEdit = computed(() => (
|
||||
props.leaveRequest.is_editable
|
||||
&& !can('leave-requests.verify')
|
||||
&& !can('leave_requests.verify')
|
||||
&& isOwner.value
|
||||
&& can('leave-requests.update')
|
||||
&& can('leave_requests.update')
|
||||
));
|
||||
|
||||
const canDelete = computed(() => (
|
||||
props.leaveRequest.is_editable
|
||||
&& !can('leave-requests.verify')
|
||||
&& !can('leave_requests.verify')
|
||||
&& isOwner.value
|
||||
&& can('leave-requests.delete')
|
||||
&& can('leave_requests.delete')
|
||||
));
|
||||
|
||||
const deleteConfirmOpen = ref(false);
|
||||
@ -92,7 +92,7 @@ function approveLeaveRequest() {
|
||||
<TooltipContent>Ubah</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="leaveRequest.can_verify && can('leave-requests.verify')">
|
||||
<Tooltip v-if="leaveRequest.can_verify && can('leave_requests.verify')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="size-8 text-green-600 hover:text-green-600"
|
||||
@click="approveConfirmOpen = true">
|
||||
@ -103,7 +103,7 @@ function approveLeaveRequest() {
|
||||
<TooltipContent>Setujui</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="leaveRequest.can_verify && can('leave-requests.verify')">
|
||||
<Tooltip v-if="leaveRequest.can_verify && can('leave_requests.verify')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="text-destructive hover:text-destructive size-8"
|
||||
@click="emit('reject', leaveRequest)">
|
||||
@ -126,7 +126,7 @@ function approveLeaveRequest() {
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
<ConfirmDialog v-if="can('leave-requests.verify')" v-model:open="approveConfirmOpen" title="Setujui cuti?"
|
||||
<ConfirmDialog v-if="can('leave_requests.verify')" v-model:open="approveConfirmOpen" title="Setujui cuti?"
|
||||
:description="`Cuti ${leaveRequest.employee_name} (${leaveRequest.start_date_formatted} - ${leaveRequest.end_date_formatted}, ${leaveRequest.total_days} hari) akan disetujui.`"
|
||||
confirm-label="Setujui" cancel-label="Batal" :loading="approveProcessing" @confirm="approveLeaveRequest" />
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ function submitReject() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="can('owner-verifications.verify')" class="flex items-center gap-1">
|
||||
<div v-if="can('owner_verifications.verify')" class="flex items-center gap-1">
|
||||
<Tooltip>
|
||||
<TooltipTrigger as-child>
|
||||
<Button
|
||||
|
||||
@ -99,7 +99,7 @@ watch(
|
||||
<h2 class="text-2xl font-bold tracking-tight">Bahan Baku</h2>
|
||||
</div>
|
||||
|
||||
<Button v-if="can('raw-materials.create')" as-child class="shrink-0 self-start sm:self-center">
|
||||
<Button v-if="can('raw_materials.create')" as-child class="shrink-0 self-start sm:self-center">
|
||||
<Link href="/admin/master/raw-materials/create">
|
||||
<Plus class="size-4" />
|
||||
Tambah
|
||||
|
||||
@ -37,7 +37,7 @@ function destroyRawMaterial() {
|
||||
|
||||
<template>
|
||||
<div class="flex items-center justify-end gap-1">
|
||||
<Tooltip v-if="can('raw-materials.update')">
|
||||
<Tooltip v-if="can('raw_materials.update')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="size-8" as-child>
|
||||
<Link :href="`/admin/master/raw-materials/${material.id}/edit`">
|
||||
@ -49,7 +49,7 @@ function destroyRawMaterial() {
|
||||
<TooltipContent>Ubah</TooltipContent>
|
||||
</Tooltip>
|
||||
|
||||
<Tooltip v-if="can('raw-materials.delete')">
|
||||
<Tooltip v-if="can('raw_materials.delete')">
|
||||
<TooltipTrigger as-child>
|
||||
<Button variant="ghost" size="icon" class="text-destructive hover:text-destructive size-8"
|
||||
@click="deleteConfirmOpen = true">
|
||||
@ -61,7 +61,7 @@ function destroyRawMaterial() {
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
<ConfirmDialog v-if="can('raw-materials.delete')" v-model:open="deleteConfirmOpen" title="Hapus bahan baku?"
|
||||
<ConfirmDialog v-if="can('raw_materials.delete')" v-model:open="deleteConfirmOpen" title="Hapus bahan baku?"
|
||||
:description="`Bahan baku ${material.name} akan dihapus beserta seluruh variannya. Tindakan ini tidak dapat dibatalkan.`"
|
||||
confirm-label="Hapus" cancel-label="Batal" destructive :loading="deleteProcessing"
|
||||
@confirm="destroyRawMaterial" />
|
||||
|
||||
@ -24,7 +24,7 @@ watch(
|
||||
);
|
||||
|
||||
function toggleStatus(checked: boolean) {
|
||||
if (!can('raw-materials.toggle-status')) {
|
||||
if (!can('raw_materials.toggle_status')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ function toggleStatus(checked: boolean) {
|
||||
|
||||
<template>
|
||||
<div class="flex items-center gap-2">
|
||||
<Switch :model-value="isActive" :disabled="processing || !can('raw-materials.toggle-status')"
|
||||
<Switch :model-value="isActive" :disabled="processing || !can('raw_materials.toggle_status')"
|
||||
@update:model-value="toggleStatus" />
|
||||
<Badge :variant="isActive ? 'default' : 'secondary'">
|
||||
{{ isActive ? 'Aktif' : 'Nonaktif' }}
|
||||
|
||||
@ -45,8 +45,8 @@
|
||||
Route::post('/auth/logout', [LogoutController::class, 'store'])->name('logout');
|
||||
|
||||
// Push Notifications
|
||||
Route::post('/push-subscriptions', [PushSubscriptionController::class, 'store'])->name('push-subscriptions.store');
|
||||
Route::delete('/push-subscriptions', [PushSubscriptionController::class, 'destroy'])->name('push-subscriptions.destroy');
|
||||
Route::post('/push-subscriptions', [PushSubscriptionController::class, 'store'])->name('push_subscriptions.store');
|
||||
Route::delete('/push-subscriptions', [PushSubscriptionController::class, 'destroy'])->name('push_subscriptions.destroy');
|
||||
|
||||
Route::prefix('admin')->name('admin.')->group(function () {
|
||||
Route::get('/dashboard', [DashboardController::class, 'index'])
|
||||
@ -92,7 +92,7 @@
|
||||
|
||||
Route::patch('{product}/toggle-status', [ProductController::class, 'toggleStatus'])
|
||||
->middleware('permission:'.Permission::PRODUCTS_TOGGLE_STATUS->value)
|
||||
->name('toggle-status');
|
||||
->name('toggle_status');
|
||||
|
||||
Route::delete('{product}', [ProductController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::PRODUCTS_DELETE->value)
|
||||
@ -101,7 +101,7 @@
|
||||
Route::get('/', [ProductController::class, 'index'])->name('index');
|
||||
});
|
||||
|
||||
Route::prefix('raw-materials')->name('raw-materials.')
|
||||
Route::prefix('raw-materials')->name('raw_materials.')
|
||||
->middleware('permission:'.Permission::RAW_MATERIALS_VIEW->value)
|
||||
->group(function () {
|
||||
Route::get('create', [RawMaterialController::class, 'create'])
|
||||
@ -122,7 +122,7 @@
|
||||
|
||||
Route::patch('{rawMaterial}/toggle-status', [RawMaterialController::class, 'toggleStatus'])
|
||||
->middleware('permission:'.Permission::RAW_MATERIALS_TOGGLE_STATUS->value)
|
||||
->name('toggle-status');
|
||||
->name('toggle_status');
|
||||
|
||||
Route::delete('{rawMaterial}', [RawMaterialController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::RAW_MATERIALS_DELETE->value)
|
||||
@ -185,11 +185,11 @@
|
||||
|
||||
Route::post('draft-items', [PurchaseDraftItemController::class, 'store'])
|
||||
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
||||
->name('draft-items.store');
|
||||
->name('draft_items.store');
|
||||
|
||||
Route::delete('draft-items/{rawMaterialPrice}', [PurchaseDraftItemController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
||||
->name('draft-items.destroy');
|
||||
->name('draft_items.destroy');
|
||||
|
||||
Route::post('/', [PurchaseController::class, 'store'])
|
||||
->middleware('permission:'.Permission::PURCHASES_CREATE->value)
|
||||
@ -219,15 +219,15 @@
|
||||
|
||||
Route::post('draft-items', [OrderDraftItemController::class, 'store'])
|
||||
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
||||
->name('draft-items.store');
|
||||
->name('draft_items.store');
|
||||
|
||||
Route::put('draft-items/resync-prices', [OrderDraftItemController::class, 'resyncPrices'])
|
||||
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
||||
->name('draft-items.resync-prices');
|
||||
->name('draft_items.resync_prices');
|
||||
|
||||
Route::delete('draft-items/{productVariant}', [OrderDraftItemController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
||||
->name('draft-items.destroy');
|
||||
->name('draft_items.destroy');
|
||||
|
||||
Route::post('/', [OrderController::class, 'store'])
|
||||
->middleware('permission:'.Permission::ORDERS_CREATE->value)
|
||||
@ -244,7 +244,7 @@
|
||||
->name('update');
|
||||
|
||||
Route::post('{order}/status', [OrderController::class, 'transitionStatus'])
|
||||
->name('transition-status');
|
||||
->name('transition_status');
|
||||
|
||||
Route::delete('{order}', [OrderController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::ORDERS_DELETE->value)
|
||||
@ -263,19 +263,19 @@
|
||||
|
||||
Route::post('draft-materials', [CuttingDraftItemController::class, 'storeMaterial'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
||||
->name('draft-materials.store');
|
||||
->name('draft_materials.store');
|
||||
|
||||
Route::delete('draft-materials/{rawMaterialPrice}', [CuttingDraftItemController::class, 'destroyMaterial'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
||||
->name('draft-materials.destroy');
|
||||
->name('draft_materials.destroy');
|
||||
|
||||
Route::post('draft-results', [CuttingDraftItemController::class, 'storeResult'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
||||
->name('draft-results.store');
|
||||
->name('draft_results.store');
|
||||
|
||||
Route::delete('draft-results/{productVariant}', [CuttingDraftItemController::class, 'destroyResult'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_CREATE->value)
|
||||
->name('draft-results.destroy');
|
||||
->name('draft_results.destroy');
|
||||
|
||||
Route::post('/', [CuttingController::class, 'store'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_CREATE->value)
|
||||
@ -291,7 +291,7 @@
|
||||
|
||||
Route::post('{cutting}/status', [CuttingController::class, 'transitionStatus'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_COMPLETE->value.'|'.Permission::CUTTINGS_VERIFY->value.'|'.Permission::CUTTINGS_REJECT->value)
|
||||
->name('transition-status');
|
||||
->name('transition_status');
|
||||
|
||||
Route::delete('{cutting}', [CuttingController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::CUTTINGS_VIEW->value.'|'.Permission::CUTTINGS_DELETE->value)
|
||||
@ -308,7 +308,7 @@
|
||||
->name('verify');
|
||||
});
|
||||
|
||||
Route::prefix('owner-verifications')->name('owner-verifications.')
|
||||
Route::prefix('owner-verifications')->name('owner_verifications.')
|
||||
->middleware('permission:'.Permission::OWNER_VERIFICATIONS_VIEW->value)
|
||||
->group(function () {
|
||||
Route::get('/', [OwnerVerificationController::class, 'index'])->name('index');
|
||||
@ -345,13 +345,13 @@
|
||||
->name('destroy');
|
||||
});
|
||||
|
||||
Route::prefix('activity-logs')->name('activity-logs.')
|
||||
Route::prefix('activity-logs')->name('activity_logs.')
|
||||
->middleware('permission:'.Permission::ACTIVITY_LOGS_VIEW->value)
|
||||
->group(function () {
|
||||
Route::get('/', [ActivityLogController::class, 'index'])->name('index');
|
||||
});
|
||||
|
||||
Route::prefix('setting')->name('setting.')
|
||||
Route::prefix('settings')->name('settings.')
|
||||
->middleware('permission:'.Permission::SETTINGS_VIEW->value)
|
||||
->group(function () {
|
||||
Route::get('/', [SettingController::class, 'index'])->name('index');
|
||||
@ -362,7 +362,7 @@
|
||||
|
||||
Route::put('social-media', [SettingController::class, 'updateSocialMedia'])
|
||||
->middleware('permission:'.Permission::SETTINGS_UPDATE->value)
|
||||
->name('social-media.update');
|
||||
->name('social_media.update');
|
||||
|
||||
Route::put('marketplace', [SettingController::class, 'updateMarketplace'])
|
||||
->middleware('permission:'.Permission::SETTINGS_UPDATE->value)
|
||||
@ -430,7 +430,7 @@
|
||||
->name('destroy');
|
||||
});
|
||||
|
||||
Route::prefix('employee-advances')->name('employee-advances.')
|
||||
Route::prefix('employee-advances')->name('employee_advances.')
|
||||
->middleware('permission:'.Permission::EMPLOYEE_ADVANCES_VIEW->value)
|
||||
->group(function () {
|
||||
Route::get('/', [EmployeeAdvanceController::class, 'index'])->name('index');
|
||||
@ -487,11 +487,11 @@
|
||||
|
||||
Route::post('check-in', [AttendanceController::class, 'checkIn'])
|
||||
->middleware('permission:'.Permission::ATTENDANCES_CREATE->value)
|
||||
->name('check-in');
|
||||
->name('check_in');
|
||||
|
||||
Route::post('check-out', [AttendanceController::class, 'checkOut'])
|
||||
->middleware('permission:'.Permission::ATTENDANCES_CREATE->value)
|
||||
->name('check-out');
|
||||
->name('check_out');
|
||||
|
||||
Route::delete('{attendance}', [AttendanceController::class, 'destroy'])
|
||||
->middleware('permission:'.Permission::ATTENDANCES_DELETE->value)
|
||||
@ -503,11 +503,11 @@
|
||||
->group(function () {
|
||||
Route::post('{user}/reset-password', [EmployeeController::class, 'resetPassword'])
|
||||
->middleware('permission:'.Permission::EMPLOYEES_RESET_PASSWORD->value)
|
||||
->name('reset-password');
|
||||
->name('reset_password');
|
||||
|
||||
Route::patch('{user}/toggle-status', [EmployeeController::class, 'toggleStatus'])
|
||||
->middleware('permission:'.Permission::EMPLOYEES_TOGGLE_STATUS->value)
|
||||
->name('toggle-status');
|
||||
->name('toggle_status');
|
||||
|
||||
Route::get('create', [EmployeeController::class, 'create'])
|
||||
->middleware('permission:'.Permission::EMPLOYEES_CREATE->value)
|
||||
@ -532,7 +532,7 @@
|
||||
Route::get('/', [EmployeeController::class, 'index'])->name('index');
|
||||
});
|
||||
|
||||
Route::prefix('leave-requests')->name('leave-requests.')
|
||||
Route::prefix('leave-requests')->name('leave_requests.')
|
||||
->middleware('permission:'.Permission::LEAVE_REQUESTS_VIEW->value)
|
||||
->group(function () {
|
||||
Route::get('/', [LeaveRequestController::class, 'index'])->name('index');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user