From aa46ddde7f4692b9e0f5e738d154512f44dc3eac Mon Sep 17 00:00:00 2001 From: armiejean Date: Wed, 21 May 2025 09:01:18 +0800 Subject: [PATCH] locked-account page functionality works --- .../Controllers/LockedAccountController.php | 108 ++++++++++++++++- .../views/pages/locked-account-view.blade.php | 110 ++++++++++++------ .../locked-accounts.blade.php | 2 +- 3 files changed, 179 insertions(+), 41 deletions(-) diff --git a/app/Http/Controllers/LockedAccountController.php b/app/Http/Controllers/LockedAccountController.php index 2e26617..a857db7 100644 --- a/app/Http/Controllers/LockedAccountController.php +++ b/app/Http/Controllers/LockedAccountController.php @@ -175,8 +175,110 @@ class LockedAccountController extends Controller } } - public function show() - { - return view('pages.locked-account-view'); + public function show($uuid) +{ + try { + // Verify session data + $user = Session::get('user'); + Log::debug('Session user data', ['user' => $user]); + + if (!$user || !isset($user['access_token'])) { + Log::warning('No user or access token found in session', ['uuid' => $uuid]); + return redirect()->route('login')->with('error', 'Please log in to view the account.'); + } + + $accessToken = $user['access_token']; + Log::debug('Access token in show method', ['access_token' => $accessToken]); + + // Log the API request details + $apiUrl = "{$this->apiBaseUrl}/cms/member/{$uuid}"; + Log::debug('Making API call to fetch locked account details', [ + 'url' => $apiUrl, + 'uuid' => $uuid, + ]); + + // Make the API call + $response = Http::withHeaders([ + 'Accept' => 'application/json', + 'Authorization' => 'Bearer ' . $accessToken, + ])->timeout(10)->get($apiUrl); + + // Log the raw response + Log::debug('Show API response received', [ + 'status' => $response->status(), + 'headers' => $response->headers(), + 'body' => $response->body(), + ]); + + // Handle specific HTTP status codes + if ($response->status() === 401 || $response->status() === 403) { + Log::warning('Unauthorized or Forbidden API response', [ + 'uuid' => $uuid, + 'response' => $response->json(), + ]); + return redirect()->route('login')->with('error', 'Your session has expired. Please log in again.'); + } + + if ($response->status() === 404) { + Log::warning('Account not found in API', [ + 'uuid' => $uuid, + 'response' => $response->json(), + ]); + return redirect()->route('locked-accounts')->with('error', 'The requested account does not exist.'); + } + + if (!$response->successful()) { + Log::error('API request failed', [ + 'uuid' => $uuid, + 'status' => $response->status(), + 'response' => $response->json(), + ]); + return redirect()->route('locked-accounts')->with('error', 'Failed to fetch account data from the server. Status: ' . $response->status()); + } + + // Parse the response + $json = $response->json(); + Log::debug('Parsed API response', ['json' => $json]); + + if (!isset($json['data']) || !is_array($json['data'])) { + Log::warning('Invalid or missing data in API response', [ + 'uuid' => $uuid, + 'response' => $json, + ]); + return redirect()->route('locked-accounts')->with('error', 'Invalid account data received from the server.'); + } + + // Map the data + $account = [ + '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'] ?? 1, + ]; + + Log::debug('Mapped account data', ['account' => $account]); + + return view('pages.locked-account-view', [ + 'member' => $account, + ]); + } catch (\Illuminate\Http\Client\ConnectionException $e) { + Log::error('Connection error in LockedAccountController show method', [ + 'uuid' => $uuid, + 'message' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + ]); + return redirect()->route('locked-accounts')->with('error', 'Unable to connect to the server. Please try again later.'); + } catch (\Exception $e) { + Log::error('Unexpected error in LockedAccountController show method', [ + 'uuid' => $uuid, + 'message' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + ]); + return redirect()->route('locked-accounts')->with('error', 'An unexpected error occurred while fetching the account: ' . $e->getMessage()); } +} } \ No newline at end of file diff --git a/resources/views/pages/locked-account-view.blade.php b/resources/views/pages/locked-account-view.blade.php index 723acfd..4fb050a 100644 --- a/resources/views/pages/locked-account-view.blade.php +++ b/resources/views/pages/locked-account-view.blade.php @@ -3,45 +3,81 @@ @section('page_title', 'View Locked Account') @section('content') -
-
-
View Locked Account
-
-
- @if (session('error')) - - @endif -
- Card Number: {{ $member['cardNumber'] }} +
+
+
+
+
View Locked Account
-
- First Name: {{ $member['firstName'] }} -
-
- Last Name: {{ $member['lastName'] }} -
-
- Birthday: {{ $member['birthday'] ? date('F d, Y', strtotime($member['birthday'])) : 'N/A' }} -
-
- Card Type: {{ $member['cardType'] }} -
-
- Status: {{ $member['status'] }} -
-
- Lock Status: {{ $member['is_locked'] == 1 ? 'Locked' : 'Unlocked' }} -
-
- Back -
- @csrf - -
+
+ @if (session('success')) + + @endif + @if (session('error')) + + @endif + + @if (isset($member)) +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ @if ($member['is_locked'] == 1) +
+ @csrf + @method('POST') + +
+ @endif + + Back to Locked Accounts + +
+ @else +

No account data available.

+ @endif
+
@endsection \ No newline at end of file diff --git a/resources/views/pages/member management/locked-accounts.blade.php b/resources/views/pages/member management/locked-accounts.blade.php index 592ad1f..198fe35 100644 --- a/resources/views/pages/member management/locked-accounts.blade.php +++ b/resources/views/pages/member management/locked-accounts.blade.php @@ -33,7 +33,7 @@ 'showCheckboxes' => false, 'showBatchDelete' => false, 'showEditModal' => false, - 'showViewModal' => true, + 'showViewModal' => false, 'currentPage' => $currentPage ?? 1, 'lastPage' => $lastPage ?? 1, 'total' => $total ?? 0,