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; $isOwner = $this->role === Role::OWNER->value;
return [ $rules = [
'email' => ['required', 'email', 'max:100', Rule::unique('users', 'email')->ignore($this->route('user')?->id)], '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)], 'username' => ['required', 'string', 'max:20', 'alpha_dash', Rule::unique('users', 'username')->ignore($this->route('user')?->id)],
'full_name' => ['required', 'string', 'max:200'], 'full_name' => ['required', 'string', 'max:200'],
@ -36,11 +36,16 @@ public function rules(): array
'gender' => ['nullable', Rule::enum(Gender::class)], 'gender' => ['nullable', Rule::enum(Gender::class)],
'birth_date' => ['nullable', 'date', 'before:today'], 'birth_date' => ['nullable', 'date', 'before:today'],
'address' => ['nullable', 'string'], '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())], '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; namespace App\Services\Hr;
use App\Enums\Role;
use App\Models\Employee; use App\Models\Employee;
use App\Models\User; use App\Models\User;
use App\Models\UserProfile; use App\Models\UserProfile;
@ -70,9 +71,7 @@ public function create(array $validated): void
'address' => $validated['address'], 'address' => $validated['address'],
]); ]);
$hasEmployee = ! empty($validated['join_date']) && ! empty($validated['employment_status']) && ! empty($validated['base_salary']); if ($validated['role'] !== Role::OWNER->value) {
if ($hasEmployee) {
Employee::create([ Employee::create([
'user_id' => $user->id, 'user_id' => $user->id,
'join_date' => $validated['join_date'], 'join_date' => $validated['join_date'],

View File

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