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['is_validated'] ? 'Active' : 'Inactive', ]; }, $json['data']); $total = $json['meta']['total'] ?? count($members); $lastPage = $json['meta']['last_page'] ?? ceil($total / $pageSize); return view('pages.member management.card-member', [ 'members' => $members, 'currentPage' => $page, 'lastPage' => $lastPage, 'total' => $total, 'search' => $search, ]); } else { Log::warning('No card member data found or invalid API response: ', $json); return view('pages.member management.card-member', [ 'members' => [], 'currentPage' => 1, 'lastPage' => 1, 'total' => 0, '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, ]); } } }