diff --git a/app/Enums/Role.php b/app/Enums/Role.php index b3a4ac0..6dd452b 100644 --- a/app/Enums/Role.php +++ b/app/Enums/Role.php @@ -44,6 +44,8 @@ public function permissions(): array Permission::ATTENDANCES_CREATE, Permission::ATTENDANCES_DELETE, + Permission::STOK_OPNAMES_SUBMIT, + Permission::ROLES_VIEW, Permission::ROLES_CREATE, Permission::ROLES_UPDATE, @@ -137,7 +139,6 @@ public function permissions(): array Permission::STOCKS_VIEW, Permission::STOK_OPNAMES_VIEW, - Permission::STOK_OPNAMES_VERIFY, Permission::CUTTINGS_VERIFY, diff --git a/app/Http/Controllers/Admin/Manage/StokOpnameController.php b/app/Http/Controllers/Admin/Manage/StokOpnameController.php index c2f1b1f..96d731b 100644 --- a/app/Http/Controllers/Admin/Manage/StokOpnameController.php +++ b/app/Http/Controllers/Admin/Manage/StokOpnameController.php @@ -31,7 +31,7 @@ public function index(Request $request): Response $tableQuery = $this->parseDataTableQuery($request); return Inertia::render('admin/manage/stok-opnames/Index', [ - 'stokOpnames' => $this->stokOpnameService->paginateForIndex($tableQuery), + 'stokOpnames' => $this->stokOpnameService->paginateForIndex($tableQuery, $request->user()), 'filters' => $this->dataTableFilters($tableQuery), ]); } diff --git a/app/Services/Manage/StokOpnameService.php b/app/Services/Manage/StokOpnameService.php index 8fd8e4a..48a5ce7 100644 --- a/app/Services/Manage/StokOpnameService.php +++ b/app/Services/Manage/StokOpnameService.php @@ -2,6 +2,7 @@ namespace App\Services\Manage; +use App\Enums\Permission; use App\Enums\StokOpnameStatus; use App\Models\Product; use App\Models\ProductVariant; @@ -20,13 +21,16 @@ public function __construct( private readonly PushNotificationService $pushNotificationService, ) {} - public function paginateForIndex(array $tableQuery): LengthAwarePaginator + public function paginateForIndex(array $tableQuery, User $user): LengthAwarePaginator { $query = StokOpname::query() - ->with(['createdBy.profile', 'verifiedBy.profile']) + ->with(['createdBy.profile', 'verifiedBy.profile', 'items.productVariant.product']) ->withCount(['items', 'items as items_with_difference_count' => function (Builder $query): void { $query->where('difference', '!=', 0); }]) + ->when(! $user->can(Permission::STOK_OPNAMES_SUBMIT), function (Builder $query): void { + $query->where('status', '!=', StokOpnameStatus::DRAFT); + }) ->when($tableQuery['search'] !== '', function (Builder $query) use ($tableQuery): void { $search = $tableQuery['search']; $query->where(function (Builder $query) use ($search): void { diff --git a/resources/js/components/button/RowDeleteAction.vue b/resources/js/components/button/RowDeleteAction.vue index 844e959..d04fdd7 100644 --- a/resources/js/components/button/RowDeleteAction.vue +++ b/resources/js/components/button/RowDeleteAction.vue @@ -30,7 +30,7 @@ const { open, processing, destroy } = useDestroy({ -