PermissionRepository.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\Permission;
  4. use Illuminate\Database\Eloquent\Collection;
  5. use App\DataTransferObjects\PermissionDto;
  6. class PermissionRepository implements PermissionRepositoryInterface
  7. {
  8. public function all(): ?Collection
  9. {
  10. return Permission::all()->toTree();
  11. }
  12. public function allNoTree(): ?Collection
  13. {
  14. return Permission::all();
  15. }
  16. public function find(int $id): ?Permission
  17. {
  18. return Permission::find($id);
  19. }
  20. public function findByScope(string $scope): ?Permission
  21. {
  22. return Permission::where('scope', $scope)->first();
  23. }
  24. public function update(PermissionDto $permissionDto, int $id): ?Permission
  25. {
  26. $permission = Permission::find($id);
  27. $permission->update([
  28. 'name' => $permissionDto->name,
  29. 'description' => $permissionDto->description,
  30. 'bits' => $permissionDto->bits,
  31. 'parent_id' => $permissionDto->parent_id,
  32. ]);
  33. return $permission;
  34. }
  35. public function store(PermissionDto $permissionDto): Permission
  36. {
  37. $permission = Permission::create([
  38. 'name' => $permissionDto->name,
  39. 'description' => $permissionDto->description,
  40. 'bits' => $permissionDto->bits,
  41. 'parent_id' => $permissionDto->parent_id,
  42. ]);
  43. if ($permissionDto->parent_id) {
  44. $parent = Permission::find($permissionDto->parent_id);
  45. $permission->prependToNode($parent);
  46. }
  47. return $permission;
  48. }
  49. public function delete(int $id): bool
  50. {
  51. return Permission::destroy($id) > 0;
  52. }
  53. }