Files
BarangaySystem/app/Casts/UserActionsArrayCast.php
2026-06-06 18:43:00 +08:00

38 lines
874 B
PHP

<?php
namespace App\Casts;
use Hyperf\Contract\CastsAttributes;
use App\Enums\UserActions;
class UserActionsArrayCast implements CastsAttributes
{
public function get($model, string $key, $value, array $attributes)
{
if (empty($value)) {
return [];
}
$roles = json_decode($value, true) ?? [];
return array_filter(array_map(
fn ($role) => UserActions::tryFrom($role),
$roles
));
}
public function set($model, string $key, $value, array $attributes)
{
if ($value === null) {
return null;
}
// Ensure only backing values get saved
$roles = array_map(
fn ($role) => $role instanceof UserActions ? $role->value : UserActions::from($role)->value,
$value
);
return json_encode($roles);
}
}