| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?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);
- }
- public function findByScope(string $scope): ?Permission
- {
- return $this->model->where('scope', $scope)->first();
- }
- public function update(int $id, PermissionDTO $dto, array $fieldsToUpdate): ?Permission
- {
- $permission = $this->model->find($id);
- $updateFields = array_intersect_key(
- $dto->toArray(),
- array_flip($fieldsToUpdate)
- );
- $permission->update($updateFields);
- return $permission->fresh();
- }
- 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($id) > 0;
- }
- }
|