feat: add submit URL to EmployeeForm component for employee creation functionality
This commit is contained in:
parent
4cbd296c0c
commit
245127c921
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -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'],
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user