Files
HRM-System/app/Services/EmployeeService.php

38 lines
997 B
PHP

<?php
namespace App\Services;
use App\Models\Employee;
use App\Models\User;
use Exception;
class EmployeeService
{
/**
* Resolve the Employee model for a given user safely.
* No fallback to Employee::first() is permitted.
*
* @param User $user
* @return Employee
* @throws Exception
*/
public function resolveEmployee(User $user): Employee
{
$employee = $user->employee ?? Employee::where('user_id', $user->id)->first();
if (!$employee) {
// Auto-create employee record for company/admin users if missing
$employee = Employee::create([
'user_id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'employee_id' => 'EMP-' . str_pad((string)$user->id, 4, '0', STR_PAD_LEFT),
'branch_id' => $user->branch_id ?? 1,
'created_by' => $user->id,
]);
}
return $employee;
}
}