| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace App\Repositories;
- use App\Models\Permission;
- use Illuminate\Database\Eloquent\Collection;
- use App\DTO\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: $id);
- }
- public function findByScope(string $scope): ?Permission
- {
- return $this->model->where(column: 'scope', operator: $scope)->first();
- }
- public function update(PermissionDTO $permissionDTO, int $id): ?Permission
- {
- $permission = $this->model->find(id: $id);
- $permission->update(attributes: [
- '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(attributes: [
- 'scope' => $permissionDTO->scope,
- 'description' => $permissionDTO->description,
- 'bits' => $permissionDTO->bits,
- ]);
- if ($permissionDTO->parent_id) {
- $parent = $this->model->find(id: $permissionDTO->parent_id);
- $permission->prependToNode(parent: $parent);
- }
- $permission->save();
- return $permission;
- }
- public function delete(int $id): bool
- {
- return $this->model->destroy(ids: $id) > 0;
- }
- }
|