feat: clear cache for assignable roles and permissions in various services to ensure data consistency

This commit is contained in:
Yoga Pangestu 2026-07-16 11:23:32 +07:00
parent ef90f8361f
commit ba01039b41
5 changed files with 24 additions and 11 deletions

View File

@ -128,6 +128,7 @@ function () use ($validated): User {
'Gagal membuat karyawan',
);
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('hr:employees:*');
$this->notifyOwner(
@ -189,6 +190,7 @@ function () use ($validated, $user, $employee): void {
'Gagal memperbarui karyawan',
);
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('hr:employees:*');
$this->notifyOwner(
@ -213,6 +215,7 @@ function () use ($user, $validated): void {
'Gagal memperbarui status karyawan',
);
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('hr:employees:*');
$statusLabel = $validated['is_active'] ? 'aktif' : 'nonaktif';
@ -237,6 +240,7 @@ function () use ($user): void {
'Gagal mereset kata sandi karyawan',
);
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('hr:employees:*');
$this->notifyOwner(
@ -259,6 +263,7 @@ function () use ($user): void {
'Gagal menghapus karyawan',
);
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('hr:employees:*');
$this->notifyOwner(

View File

@ -156,9 +156,7 @@ public function submitVerification(
}
$this->cacheForgetByPattern('manage:stocks:*');
if ($isOwner) {
$this->cacheForgetByPattern('prices:*');
}
$this->cacheForgetByPattern('prices:*');
}
public function approveVerification(

View File

@ -254,6 +254,7 @@ function () use ($validated, $product, $user, $isOwner): void {
);
$this->cacheForgetByPattern('master:products:*');
$this->cacheForgetByPattern('prices:*');
$this->cacheForget('homepage:page_data');
if ($isOwner) {
@ -328,6 +329,7 @@ public function delete(Product $product, User $user): void
$name = $product->name;
$this->applyDeleteSubject($product);
$this->cacheForgetByPattern('master:products:*');
$this->cacheForgetByPattern('prices:*');
$this->cacheForget('homepage:page_data');
$this->notifyOwner(
@ -435,6 +437,7 @@ public function applyVerificationRequest(OwnerVerificationRequest $verificationR
};
$this->cacheForgetByPattern('master:products:*');
$this->cacheForgetByPattern('prices:*');
}
public function rejectVerificationRequest(OwnerVerificationRequest $verificationRequest): void
@ -449,6 +452,7 @@ public function rejectVerificationRequest(OwnerVerificationRequest $verification
};
$this->cacheForgetByPattern('master:products:*');
$this->cacheForgetByPattern('prices:*');
$this->cacheForget('homepage:page_data');
}

View File

@ -46,14 +46,14 @@ public function paginateForIndex(array $tableQuery, string $isActive, string $st
$q->whereHas('rawMaterial', fn ($q) => $q->where('unit', RawMaterialUnit::YARD->value))
->where('stock', '<', 20);
})
->orWhere(function ($q): void {
$q->whereHas('rawMaterial', fn ($q) => $q->where('unit', RawMaterialUnit::METER->value))
->where('stock', '<', 10);
})
->orWhere(function ($q): void {
$q->whereHas('rawMaterial', fn ($q) => $q->where('unit', RawMaterialUnit::KILOGRAM->value))
->where('stock', '<', 5);
});
->orWhere(function ($q): void {
$q->whereHas('rawMaterial', fn ($q) => $q->where('unit', RawMaterialUnit::METER->value))
->where('stock', '<', 10);
})
->orWhere(function ($q): void {
$q->whereHas('rawMaterial', fn ($q) => $q->where('unit', RawMaterialUnit::KILOGRAM->value))
->where('stock', '<', 5);
});
});
}),
])

View File

@ -87,6 +87,8 @@ public function create(array $validated): void
]);
}
$this->cacheForget('system:permissions');
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('system:roles:*');
}
@ -114,6 +116,8 @@ public function update(Role $role, array $validated): void
]);
}
$this->cacheForget('system:permissions');
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('system:roles:*');
}
@ -121,6 +125,8 @@ public function delete(Role $role): void
{
$role->delete();
$this->cacheForget('system:permissions');
$this->cacheForget('system:assignable_roles');
$this->cacheForgetByPattern('system:roles:*');
}