feat: add submit URL to EmployeeForm component for employee creation functionality

This commit is contained in:
Yoga Pangestu 2026-06-21 15:31:24 +07:00
parent 4cbd296c0c
commit 245127c921
3 changed files with 12 additions and 8 deletions

View File

@ -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;
}
/**

View File

@ -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'],

View File

@ -30,6 +30,6 @@ defineProps<{
</Button>
</div>
<EmployeeForm :genders="genders" :employment-statuses="employmentStatuses" :roles="roles" />
<EmployeeForm submit-url="/admin/hr/employees" :genders="genders" :employment-statuses="employmentStatuses" :roles="roles" />
</AdminLayout>
</template>