WhitelistConverter.php 940 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Services\History\Converter;
  3. use App\Models\User;
  4. use Illuminate\Support\Collection;
  5. class WhitelistConverter extends EagerLoadingConverter implements ConverterContact
  6. {
  7. protected static Collection $items;
  8. public function handle(mixed $value)
  9. {
  10. $ids = array_filter(explode(",", $value));
  11. if (! $ids) {
  12. return null;
  13. }
  14. $names = [];
  15. foreach ($ids as $id) {
  16. if (self::$items->has($id)) {
  17. $names[] = self::$items->get($id);
  18. }
  19. }
  20. return implode(",", $names);
  21. }
  22. public static function eagerLoad(array $items): void
  23. {
  24. $ids = [];
  25. foreach ($items as $item) {
  26. $ids = [...$ids, ...array_filter(explode(",", $item))];
  27. }
  28. $ids = array_unique(array_filter($ids));
  29. self::$items = User::query()->whereIn("id", $ids)->pluck("name", "id");
  30. }
  31. }