route('login')->with('error', 'Please log in to view card members.'); } $page = $request->input('page', 1); $pageSize = 5; // Fixed at 5 per page as per sample $search = $request->input('_search', null); $response = Http::withHeaders([ 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $accessToken, ])->get("{$this->apiBaseUrl}/cms/member", [ 'page' => $page, 'page_size' => $pageSize, '_search' => $search, ]); if ($response->status() === 401 || $response->status() === 403) { Log::warning('Unauthorized or Forbidden API response: ', $response->json()); return redirect()->route('login')->with('error', 'Your session has expired. Please log in again.'); } $json = $response->json(); Log::info("Card Member API Response (Page {$page}): ", $json); if ($response->successful() && isset($json['data']) && is_array($json['data'])) { $members = array_map(function ($member) { Log::info('Processing card member record: ', $member); return [ 'id' => $member['lcard_uuid'] ?? null, 'cardNumber' => $member['card_number'] ?? '', 'firstName' => $member['firstname'] ?? '', 'lastName' => $member['lastname'] ?? '', 'birthday' => $member['birthdate'] ?? '', 'cardType' => $member['card_type'] ?? '', 'status' => $member['status'] ? 'Active' : 'Inactive', 'is_locked' => $member['is_locked'] ?? 0, // Add is_locked field ]; }, $json['data']); $total = $json['meta']['total'] ?? count($members); $lastPage = $json['meta']['last_page'] ?? ceil($total / $pageSize); } else { Log::warning('No card member data found or invalid API response: ', $json); $members = []; $total = 0; $lastPage = 1; } return view('pages.member management.card-member', [ 'members' => $members, 'currentPage' => $page, 'lastPage' => $lastPage, 'total' => $total, 'search' => $search, ]); } catch (\Exception $e) { Log::error('Error fetching card member data: ' . $e->getMessage()); return view('pages.member management.card-member', [ 'members' => [], 'currentPage' => 1, 'lastPage' => 1, 'total' => 0, 'search' => $search, ]); } } public function lockedAccounts(Request $request) { try { // Force a log to confirm the method is reached Log::debug('Entering lockedAccounts method', ['request' => $request->all()]); $user = Session::get('user'); $accessToken = $user['access_token'] ?? null; if (!$accessToken) { Log::warning('No access token found, redirecting to login from locked-account'); return redirect()->route('login')->with('error', 'Please log in to view locked accounts.'); } Log::debug('Access token found', ['access_token' => $accessToken]); $page = $request->input('page', 1); $pageSize = 5; $search = $request->input('_search', null); Log::debug('Making API call to fetch locked accounts', [ 'url' => "{$this->apiBaseUrl}/cms/member", 'params' => ['page' => $page, 'page_size' => $pageSize, '_search' => $search, '_locked' => 1], ]); $response = Http::withHeaders([ 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $accessToken, ])->get("{$this->apiBaseUrl}/cms/member", [ 'page' => $page, 'page_size' => $pageSize, '_search' => $search, '_locked' => 1, ]); Log::debug('API response received', [ 'status' => $response->status(), 'body' => $response->body(), ]); if ($response->status() === 401 || $response->status() === 403) { Log::warning('Unauthorized or Forbidden API response', ['response' => $response->json()]); return redirect()->route('login')->with('error', 'Your session has expired. Please log in again.'); } $json = $response->json(); Log::info('Locked Account API Raw Response', ['response' => $json]); if ($response->successful() && isset($json['data']) && is_array($json['data'])) { $members = array_map(function ($member) { Log::info('Processing locked account record', ['member' => $member]); return [ 'id' => $member['lcard_uuid'] ?? null, 'cardNumber' => $member['card_number'] ?? '', 'firstName' => $member['firstname'] ?? '', 'lastName' => $member['lastname'] ?? '', 'birthday' => $member['birthdate'] ?? '', 'cardType' => $member['card_type'] ?? '', 'status' => $member['status'] ? 'Active' : 'Inactive', 'is_locked' => $member['is_locked'] ?? 0, ]; }, $json['data']); $total = $json['meta']['total'] ?? count($members); $lastPage = $json['meta']['last_page'] ?? ceil($total / $pageSize); } else { Log::warning('No locked account data found or invalid API response', ['response' => $json]); $members = []; $total = 0; $lastPage = 1; } Log::debug('Rendering view with data', [ 'members' => $members, 'currentPage' => $page, 'lastPage' => $lastPage, 'total' => $total, ]); return view('pages.member management.locked-account', [ 'members' => $members, 'currentPage' => $page, 'lastPage' => $lastPage, 'total' => $total, 'search' => $search, ]); } catch (\Exception $e) { Log::error('Error in lockedAccounts method', [ 'message' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return view('pages.member management.locked-account', [ 'members' => [], 'currentPage' => 1, 'lastPage' => 1, 'total' => 0, 'search' => $search, ]); } } public function show($uuid) { try { $user = Session::get('user'); $accessToken = $user['access_token'] ?? null; if (!$accessToken) { return redirect()->route('login')->with('error', 'Please log in to view a card member.'); } $response = Http::withHeaders([ 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $accessToken, ])->get("{$this->apiBaseUrl}/cms/member/{$uuid}"); $json = $response->json(); if ($response->successful() && isset($json['data'])) { $member = [ 'id' => $json['data']['lcard_uuid'] ?? null, 'cardNumber' => $json['data']['card_number'] ?? '', 'firstName' => $json['data']['firstname'] ?? '', 'lastName' => $json['data']['lastname'] ?? '', 'birthday' => $json['data']['birthdate'] ?? '', 'cardType' => $json['data']['card_type'] ?? '', 'status' => $json['data']['status'] ? 'Active' : 'Inactive', 'is_locked' => $json['data']['is_locked'] ?? 0, // Add is_locked field ]; // Determine the view based on the referring route $previousUrl = url()->previous(); if (str_contains($previousUrl, 'locked-account')) { return view('pages.locked-account-view', ['member' => $member]); } return view('pages.card-member-view', ['member' => $member]); } else { Log::warning('No card member found or invalid API response: ', $json); return redirect()->back()->with('error', 'Card member not found.'); } } catch (\Exception $e) { Log::error('Error fetching card member for view: ' . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred while loading the card member.'); } } public function activate($uuid) { try { $user = Session::get('user'); $accessToken = $user['access_token'] ?? null; if (!$accessToken) { return redirect()->route('login')->with('error', 'Please log in to activate an account.'); } $response = Http::withHeaders([ 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $accessToken, ])->post("{$this->apiBaseUrl}/cms/memberActivate/{$uuid}"); if ($response->successful()) { return redirect()->route('locked-account')->with('success', 'Account activated successfully.'); } else { Log::warning('Failed to activate account: ', $response->json()); return redirect()->back()->with('error', $response->json()['message'] ?? 'Failed to activate account. Please try again.'); } } catch (\Exception $e) { Log::error('Error activating account: ' . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred while activating the account.'); } } }