diff --git a/app/Http/Controllers/Admin/Master/UserController.php b/app/Http/Controllers/Admin/Master/UserController.php index a276900..68d3657 100644 --- a/app/Http/Controllers/Admin/Master/UserController.php +++ b/app/Http/Controllers/Admin/Master/UserController.php @@ -45,6 +45,7 @@ public function store(UserRequest $request): RedirectResponse 'address' => $validated['address'], 'birth_place' => $validated['birth_place'], 'birth_date' => $validated['birth_date'], + 'base_salary' => $validated['base_salary'], ]); }); @@ -77,6 +78,7 @@ public function update(UserRequest $request, User $user): RedirectResponse 'address' => $validated['address'], 'birth_place' => $validated['birth_place'], 'birth_date' => $validated['birth_date'], + 'base_salary' => $validated['base_salary'], ]); }); diff --git a/app/Http/Requests/Admin/Master/UserRequest.php b/app/Http/Requests/Admin/Master/UserRequest.php index 29b22fc..f2d2455 100644 --- a/app/Http/Requests/Admin/Master/UserRequest.php +++ b/app/Http/Requests/Admin/Master/UserRequest.php @@ -36,6 +36,7 @@ public function rules(): array 'address' => ['required', 'string'], 'birth_place' => ['required', 'string', 'max:100'], 'birth_date' => ['required', 'date'], + 'base_salary' => ['required', 'integer', 'min:0'], ]; } } diff --git a/app/Models/UserProfile.php b/app/Models/UserProfile.php index 00b531e..9cd5d39 100644 --- a/app/Models/UserProfile.php +++ b/app/Models/UserProfile.php @@ -13,6 +13,13 @@ class UserProfile extends Model { use HasFactory, SoftDeletes; + protected function casts(): array + { + return [ + 'base_salary' => 'integer', + ]; + } + public function user(): BelongsTo { return $this->belongsTo(User::class); diff --git a/database/migrations/2026_04_17_132236_create_user_profiles_table.php b/database/migrations/2026_04_17_132236_create_user_profiles_table.php index 4508ea3..0f5ee76 100644 --- a/database/migrations/2026_04_17_132236_create_user_profiles_table.php +++ b/database/migrations/2026_04_17_132236_create_user_profiles_table.php @@ -20,6 +20,7 @@ public function up(): void $table->text('address'); $table->string('birth_place', 100); $table->date('birth_date'); + $table->unsignedInteger('base_salary')->default(0); $table->timestamp('created_at')->useCurrent(); $table->timestamp('updated_at')->nullable()->useCurrentOnUpdate(); $table->softDeletes(); diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 4ef62ef..02bc034 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -26,6 +26,7 @@ public function run(): void 'address' => 'Jl. Contoh No. 123', 'birth_place' => 'Jakarta', 'birth_date' => '1990-01-01', + 'base_salary' => 1500000, ]); } } diff --git a/resources/js/pages/admin/master/user/create.tsx b/resources/js/pages/admin/master/user/create.tsx index daaff92..9d59413 100644 --- a/resources/js/pages/admin/master/user/create.tsx +++ b/resources/js/pages/admin/master/user/create.tsx @@ -15,6 +15,7 @@ import { PopoverContent, PopoverTrigger, } from "@/components/ui/popover" +import { NumericFormat } from 'react-number-format'; export default function UserCreate() { const [isCalendarOpen, setIsCalendarOpen] = React.useState(false); @@ -28,6 +29,7 @@ export default function UserCreate() { address: '', birth_place: '', birth_date: '', + base_salary: 0, }); const onSubmit = (e: React.FormEvent) => { @@ -62,20 +64,20 @@ export default function UserCreate() { Informasi Profil - - - setData('full_name', e.target.value)} - autoComplete='off' - placeholder='Contoh: John Doe' - /> - {errors.full_name &&

{errors.full_name}

} -
-
+ + + setData('full_name', e.target.value)} + autoComplete='off' + placeholder='Contoh: John Doe' + /> + {errors.full_name &&

{errors.full_name}

} +
+ {errors.phone_number}

}
+ + + { + setData('base_salary', values.floatValue || 0) + }} + placeholder="Rp 0" + autoComplete='off' + /> + {errors.base_salary &&

{errors.base_salary}

} +
+ Informasi Profil - - - setData('full_name', e.target.value)} - autoComplete='off' - placeholder='Contoh: John Doe' - /> - {errors.full_name &&

{errors.full_name}

} -
-
@@ -91,6 +80,19 @@ export default function UserEdit({ user }: { user: any }) { {errors.nik &&

{errors.nik}

}
+ + + setData('full_name', e.target.value)} + autoComplete='off' + placeholder='Contoh: John Doe' + /> + {errors.full_name &&

{errors.full_name}

} +
+ {errors.phone_number}

}
+ + + { + setData('base_salary', values.floatValue || 0) + }} + placeholder="Rp 0" + autoComplete='off' + /> + {errors.base_salary &&

{errors.base_salary}

} +
+