File: /var/www/ipsremont-demo/app/Repository/User/RoleRepository.php
<?php
namespace App\Repository\User;
use App\Http\Requests\Constructor\IndexRoleRequest;
use App\Models\Role;
use App\Services\Log\LogService;
use App\Traits\GridTrait;
use Illuminate\Support\Str;
class RoleRepository
{
use GridTrait;
/**
* @param IndexRoleRequest $request
* @return mixed
*/
public function search(IndexRoleRequest $request)
{
return $this->getOrderedQuery(Role::class, $request);
}
public static function getForConstructor($id) {
return Role::forConstructor()->findOrFail($id);
}
public function save($data, $type, $permissions) {
$slug = $type . '-' . Str::random(8);
while (Role::where('slug', $slug)->first()) {
$slug = $type . '-' . Str::random(8);
}
$newRole = new Role();
$newRole->fill($data);
$newRole->type = $type;
$newRole->slug = $slug;
$newRole->save();
$newRole->refresh();
$newRole->permissions()->sync($permissions);
LogService::updatedRelations($newRole, 'permissions', $permissions);
}
public function update($model, $fields, $permissions) {
$model->fill($fields)->update();
$model->refresh();
$model->permissions()->sync($permissions);
LogService::updatedRelations($model, 'permissions', $permissions);
}
}