User::with(['profile', 'roles'])->latest()->get(), 'defaultPassword' => config('auth.password_default', 'password'), ]); } public function create(): Response { return Inertia::render('admin/master/user/create'); } public function store(UserRequest $request): RedirectResponse { $validated = $request->validated(); try { DB::transaction(function () use ($validated) { $user = User::create([ 'username' => $validated['username'], 'email' => $validated['email'], 'password' => Hash::make(config('auth.password_default')), ]); $user->profile()->create([ 'nik' => $validated['nik'], 'full_name' => $validated['full_name'], 'phone_number' => $validated['phone_number'], 'address' => $validated['address'], 'birth_place' => $validated['birth_place'], 'birth_date' => $validated['birth_date'], 'base_salary' => $validated['base_salary'], ]); }); return redirect()->route('user.index')->with('success', 'Data berhasil disimpan'); } catch (\Throwable $e) { LogHelper::logException($e, 'Failed to store user', [ 'username' => $validated['username'], 'email' => $validated['email'], ]); return redirect() ->back() ->withInput() ->with('error', 'Terjadi kesalahan, silakan hubungi pengembang'); } } public function edit(User $user): Response { $user->load('profile'); return Inertia::render('admin/master/user/edit', [ 'user' => $user, ]); } public function update(UserRequest $request, User $user): RedirectResponse { $validated = $request->validated(); try { DB::transaction(function () use ($user, $validated) { $user->update([ 'username' => $validated['username'], 'email' => $validated['email'], ]); $user->profile()->update([ 'nik' => $validated['nik'], 'full_name' => $validated['full_name'], 'phone_number' => $validated['phone_number'], 'address' => $validated['address'], 'birth_place' => $validated['birth_place'], 'birth_date' => $validated['birth_date'], 'base_salary' => $validated['base_salary'], ]); }); return redirect()->route('user.index')->with('success', 'Data berhasil diperbarui'); } catch (\Throwable $e) { LogHelper::logException($e, 'Failed to update user', [ 'user_id' => $user->id, 'username' => $validated['username'], ]); return redirect() ->back() ->withInput() ->with('error', 'Terjadi kesalahan, silakan hubungi pengembang'); } } public function resetPassword(User $user): RedirectResponse { $user->update([ 'password' => Hash::make(config('auth.password_default', 'password')), ]); return redirect()->back()->with('success', 'Kata sandi berhasil di-reset ke default'); } public function destroy(User $user): RedirectResponse { $user->delete(); return redirect()->back()->with('success', 'Data berhasil dihapus'); } public function bulkDestroy(Request $request): RedirectResponse { $ids = $request->input('ids'); User::whereIn('id', $ids)->delete(); return redirect()->back()->with('success', 'Data terpilih berhasil dihapus'); } public function toggleStatus(User $user): RedirectResponse { $user->update([ 'is_active' => ! $user->is_active, ]); return redirect()->back()->with('success', 'Status berhasil diperbarui'); } }