123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace App\Shop\Roles\Repositories;
- use Jsdecena\Baserepo\BaseRepository;
- use App\Shop\Permissions\Permission;
- use App\Shop\Roles\Exceptions\CreateRoleErrorException;
- use App\Shop\Roles\Exceptions\DeleteRoleErrorException;
- use App\Shop\Roles\Exceptions\RoleNotFoundErrorException;
- use App\Shop\Roles\Exceptions\UpdateRoleErrorException;
- use App\Shop\Roles\Role;
- use Illuminate\Database\QueryException;
- use Illuminate\Support\Collection;
- class RoleRepository extends BaseRepository implements RoleRepositoryInterface
- {
- /**
- * @var Role
- */
- protected $model;
- /**
- * RoleRepository constructor.
- * @param Role $role
- */
- public function __construct(Role $role)
- {
- parent::__construct($role);
- $this->model = $role;
- }
- /**
- * List all Roles
- *
- * @param string $order
- * @param string $sort
- * @return Collection
- */
- public function listRoles(string $order = 'id', string $sort = 'desc') : Collection
- {
- return $this->all(['*'], $order, $sort);
- }
- /**
- * @param array $data
- * @return Role
- * @throws CreateRoleErrorException
- */
- public function createRole(array $data) : Role
- {
- try {
- $role = new Role($data);
- $role->save();
- return $role;
- } catch (QueryException $e) {
- throw new CreateRoleErrorException($e);
- }
- }
- /**
- * @param int $id
- *
- * @return Role
- * @throws RoleNotFoundErrorException
- */
- public function findRoleById(int $id) : Role
- {
- try {
- return $this->findOneOrFail($id);
- } catch (QueryException $e) {
- throw new RoleNotFoundErrorException($e);
- }
- }
- /**
- * @param array $data
- *
- * @return bool
- * @throws UpdateRoleErrorException
- */
- public function updateRole(array $data) : bool
- {
- try {
- return $this->update($data);
- } catch (QueryException $e) {
- throw new UpdateRoleErrorException($e);
- }
- }
- /**
- * @return bool
- * @throws DeleteRoleErrorException
- */
- public function deleteRoleById() : bool
- {
- try {
- return $this->delete();
- } catch (QueryException $e) {
- throw new DeleteRoleErrorException($e);
- }
- }
- /**
- * @param Permission $permission
- */
- public function attachToPermission(Permission $permission)
- {
- $this->model->attachPermission($permission);
- }
- /**
- * @param Permission ...$permissions
- */
- public function attachToPermissions(... $permissions)
- {
- $this->model->attachPermissions($permissions);
- }
- /**
- * @param array $ids
- */
- public function syncPermissions(array $ids)
- {
- $this->model->syncPermissions($ids);
- }
- /**
- * @return Collection
- */
- public function listPermissions() : Collection
- {
- return $this->model->permissions()->get();
- }
- }
|