90 lines
1.8 KiB
PHP
90 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Services\User;
|
|
|
|
use App\Models\UserGroup;
|
|
use App\Models\Permission;
|
|
use App\Models\Menu;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class UserGroupService
|
|
{
|
|
public function getAll()
|
|
{
|
|
return UserGroup::all();
|
|
}
|
|
|
|
public function create(array $data)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$userGroup = UserGroup::create($data);
|
|
|
|
$dasborMenu = Menu::where('name', 'Dasbor')->first();
|
|
if ($dasborMenu) {
|
|
$userGroup->permissions()->create(['menu_id' => $dasborMenu->id]);
|
|
}
|
|
|
|
DB::commit();
|
|
|
|
return $userGroup;
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function update(UserGroup $userGroup, array $data)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$userGroup->update($data);
|
|
|
|
DB::commit();
|
|
|
|
return $userGroup;
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function delete(UserGroup $userGroup)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$userGroup->delete();
|
|
|
|
DB::commit();
|
|
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function updatePermissions(UserGroup $userGroup, array $permissions)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$userGroup->permissions()->delete();
|
|
|
|
foreach ($permissions as $menuId) {
|
|
Permission::create(['user_group_id' => $userGroup->id, 'menu_id' => $menuId]);
|
|
}
|
|
|
|
DB::commit();
|
|
|
|
return true;
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
}
|