90 lines
2.0 KiB
PHP
90 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Services\User;
|
|
|
|
use App\Models\Agency;
|
|
use App\Models\User;
|
|
use App\Models\UserGroup;
|
|
use App\Notifications\EmailVerificationNotification;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class UserService
|
|
{
|
|
public function create(array $data)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$user = User::create([
|
|
'name' => $data['name'],
|
|
'email' => $data['email'],
|
|
'password' => Hash::make($data['password']),
|
|
'user_group_id' => $data['user_group_id'],
|
|
'agency_id' => $data['agency_id'],
|
|
]);
|
|
|
|
DB::commit();
|
|
|
|
return $user;
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function update(User $user, array $data)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
// $emailChanged = $user->email !== $data['email'];
|
|
|
|
$user->update([
|
|
'name' => $data['name'],
|
|
'email' => $data['email'],
|
|
'user_group_id' => $data['user_group_id'],
|
|
'agency_id' => $data['agency_id'],
|
|
]);
|
|
|
|
// if ($emailChanged) {
|
|
// $user->notify(new EmailVerificationNotification());
|
|
// }
|
|
|
|
DB::commit();
|
|
|
|
return $user;
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function delete(User $user)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$user->delete();
|
|
|
|
DB::commit();
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
throw $e;
|
|
}
|
|
}
|
|
|
|
public function getAgencies()
|
|
{
|
|
$data = Agency::rowActive()->orderBy('name','ASC')->get();
|
|
return $data;
|
|
}
|
|
|
|
public function getUserGroups()
|
|
{
|
|
$data = UserGroup::orderBy('name','ASC')->get();
|
|
return $data;
|
|
}
|
|
|
|
}
|