diff --git a/app/Http/Requests/Admin/Hr/EmployeeRequest.php b/app/Http/Requests/Admin/Hr/EmployeeRequest.php
index 10e1da4..4d4b238 100644
--- a/app/Http/Requests/Admin/Hr/EmployeeRequest.php
+++ b/app/Http/Requests/Admin/Hr/EmployeeRequest.php
@@ -28,7 +28,7 @@ public function rules(): array
{
$isOwner = $this->role === Role::OWNER->value;
- return [
+ $rules = [
'email' => ['required', 'email', 'max:100', Rule::unique('users', 'email')->ignore($this->route('user')?->id)],
'username' => ['required', 'string', 'max:20', 'alpha_dash', Rule::unique('users', 'username')->ignore($this->route('user')?->id)],
'full_name' => ['required', 'string', 'max:200'],
@@ -36,11 +36,16 @@ public function rules(): array
'gender' => ['nullable', Rule::enum(Gender::class)],
'birth_date' => ['nullable', 'date', 'before:today'],
'address' => ['nullable', 'string'],
- 'join_date' => [Rule::requiredIf(! $isOwner), 'date'],
- 'employment_status' => [Rule::requiredIf(! $isOwner), Rule::enum(EmploymentStatus::class)],
- 'base_salary' => [Rule::requiredIf(! $isOwner), 'integer', 'min:0'],
'role' => ['required', Rule::in(Role::assignableValues())],
];
+
+ if (! $isOwner) {
+ $rules['join_date'] = ['required', 'date'];
+ $rules['employment_status'] = ['required', Rule::enum(EmploymentStatus::class)];
+ $rules['base_salary'] = ['required', 'integer', 'min:0'];
+ }
+
+ return $rules;
}
/**
diff --git a/app/Services/Hr/EmployeeService.php b/app/Services/Hr/EmployeeService.php
index b7e410c..df718d8 100644
--- a/app/Services/Hr/EmployeeService.php
+++ b/app/Services/Hr/EmployeeService.php
@@ -2,6 +2,7 @@
namespace App\Services\Hr;
+use App\Enums\Role;
use App\Models\Employee;
use App\Models\User;
use App\Models\UserProfile;
@@ -70,9 +71,7 @@ public function create(array $validated): void
'address' => $validated['address'],
]);
- $hasEmployee = ! empty($validated['join_date']) && ! empty($validated['employment_status']) && ! empty($validated['base_salary']);
-
- if ($hasEmployee) {
+ if ($validated['role'] !== Role::OWNER->value) {
Employee::create([
'user_id' => $user->id,
'join_date' => $validated['join_date'],
diff --git a/resources/js/pages/admin/hr/employees/Create.vue b/resources/js/pages/admin/hr/employees/Create.vue
index 6023f4b..518f529 100644
--- a/resources/js/pages/admin/hr/employees/Create.vue
+++ b/resources/js/pages/admin/hr/employees/Create.vue
@@ -30,6 +30,6 @@ defineProps<{
-
+