sigd/app/Services/User/UserGroupService.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;
}
}
}