| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- namespace App\Repositories;
- use App\Models\Permission;
- use Illuminate\Database\Eloquent\Collection;
- use App\DataTransferObjects\PermissionDto;
- class PermissionRepository implements PermissionRepositoryInterface
- {
- public function __construct(
- protected Permission $model
- ) {}
- public function all(): ?Collection
- {
- return $this->model->all()->toTree();
- }
- public function allNoTree(): ?Collection
- {
- return $this->model->all();
- }
- public function find(int $id): ?Permission
- {
- return $this->model->find($id);
- }
- public function findByScope(string $scope): ?Permission
- {
- return $this->model->where('scope', $scope)->first();
- }
- public function update(PermissionDto $permissionDto, int $id): ?Permission
- {
- $permission = $this->model->find($id);
- $permission->update([
- 'scope' => $permissionDto->scope,
- 'description' => $permissionDto->description,
- 'bits' => $permissionDto->bits,
- 'parent_id' => $permissionDto->parent_id,
- ]);
- return $permission;
- }
- public function store(PermissionDto $permissionDto): Permission
- {
- $permission = $this->model->firstOrNew([
- 'scope' => $permissionDto->scope,
- 'description' => $permissionDto->description,
- 'bits' => $permissionDto->bits,
- 'scope' => $permissionDto->scope,
- ]);
- if ($permissionDto->parent_id) {
- $parent = $this->model->find($permissionDto->parent_id);
- $permission->prependToNode($parent);
- }
- $permission->save();
- return $permission;
- }
- public function delete(int $id): bool
- {
- return $this->model->destroy($id) > 0;
- }
- }
|