user(); $member = $user->member; if (! $member) { return redirect()->route('member.profile.create'); } $member->load([ 'payments.submittedBy', 'payments.verifiedByCashier', 'payments.verifiedByAccountant', 'payments.verifiedByChair', 'payments.rejectedBy' ]); $pendingPayment = $member->getPendingPayment(); return view('member.dashboard', [ 'member' => $member, 'payments' => $member->payments()->latest('paid_at')->get(), 'pendingPayment' => $pendingPayment, ]); } public function createProfile() { $user = Auth::user(); if ($user->member) { return redirect()->route('member.dashboard'); } return view('member.create-profile'); } public function storeProfile(Request $request) { $user = Auth::user(); if ($user->member) { return redirect()->route('member.dashboard'); } $validated = $request->validate([ 'full_name' => ['required', 'string', 'max:255'], 'phone' => ['nullable', 'string', 'max:20'], 'national_id' => ['nullable', 'string', 'max:20'], 'address_line_1' => ['nullable', 'string', 'max:255'], 'address_line_2' => ['nullable', 'string', 'max:255'], 'city' => ['nullable', 'string', 'max:100'], 'postal_code' => ['nullable', 'string', 'max:10'], 'emergency_contact_name' => ['nullable', 'string', 'max:255'], 'emergency_contact_phone' => ['nullable', 'string', 'max:20'], 'terms_accepted' => ['required', 'accepted'], ]); $member = Member::create([ 'user_id' => $user->id, 'full_name' => $validated['full_name'], 'email' => $user->email, 'phone' => $validated['phone'] ?? null, 'national_id' => $validated['national_id'] ?? null, 'address_line_1' => $validated['address_line_1'] ?? null, 'address_line_2' => $validated['address_line_2'] ?? null, 'city' => $validated['city'] ?? null, 'postal_code' => $validated['postal_code'] ?? null, 'emergency_contact_name' => $validated['emergency_contact_name'] ?? null, 'emergency_contact_phone' => $validated['emergency_contact_phone'] ?? null, 'membership_status' => Member::STATUS_PENDING, 'membership_type' => Member::TYPE_REGULAR, ]); AuditLogger::log('member.created_profile', $member, [ 'user_id' => $user->id, 'name' => $member->full_name, ]); return redirect()->route('member.dashboard') ->with('status', __('Profile completed! Please submit your membership payment.')); } }