card-member table integrated

This commit is contained in:
erishBRBS 2025-05-11 18:21:03 +08:00
parent c9ef8179ff
commit 0f2e429676
5 changed files with 54 additions and 12 deletions

View File

@ -3,6 +3,8 @@
namespace App\Livewire;
use Livewire\Component;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;
use Livewire\Attributes\Layout; // Required for layout declaration
#[Layout('layouts.dashboard')] // Attribute syntax for Laravel 11
@ -17,7 +19,38 @@ class CardMember extends Component
public function loadCardMembers()
{
$this->cardMembers = collect(json_decode(file_get_contents(storage_path('app/c-member.json')), true));
try {
$token = Session::get('user')['access_token'] ?? null;
if (!$token) {
$this->addError('users', 'No access token found.');
return;
}
$response = Http::withToken($token)
->get(config('services.backend_api.url') . '/api/cms/member');
// dd($response->json());
if ($response->successful()) {
// Properly use collect to handle the response data
$this->cardMembers = collect($response->json()['data'])->map(function ($cardMembers) {
return [
'lcard_uuid' => $cardMembers['lcard_uuid'],
'card_number' => $cardMembers['card_number'],
'firstname' => $cardMembers['firstname'],
'lastname' => $cardMembers['lastname'],
'birthdate' => $cardMembers['birthdate'],
'cardtype_id' => $cardMembers['card_type'],
'status' => $cardMembers['status'],
];
});
} else {
$this->addError('users', 'Failed to load users.');
}
} catch (\Exception $e) {
$this->addError('users', 'Error: ' . $e->getMessage());
}
}
public function render()

View File

@ -13,6 +13,7 @@ class Table extends Component
public $selected = [];
public $addRoute = null;
public $hasAddButton = true;
public $hasExportButton = true;
public $hasDelete = true;
public $selectAll = false;
public $hasCheckbox = true;

View File

@ -31,19 +31,22 @@
@endif
@if ($hasAddButton ?? true)
@if ($hasAddButton ?? true)
<!-- Add button -->
<a href="{{ $addRoute }}" class="bg-orange-600 text-white px-4 py-2 rounded">
+ Add
</a>
@else
@elseif ($hasExportButton ?? false)
<!-- Export button -->
<button
wire:click="export"
class="bg-orange-600 text-white px-4 py-2 rounded flex items-center gap-2">
Export CSV
<button wire:click="export" class="bg-orange-600 text-white px-4 py-2 rounded flex items-center gap-2">
Export
</button>
@endif
@else
<!-- Default button or anything else you want here -->
<button class="bg-gray-600 text-white px-4 py-2 rounded">
Default Action
</button>
@endif
</div>
<!-- Table Header -->

View File

@ -4,10 +4,10 @@
<livewire:components.table
:columns="[
['label' => 'Card Number', 'field' => 'card_number'],
['label' => 'First Name', 'field' => 'first_name'],
['label' => 'Last Name', 'field' => 'last_name'],
['label' => 'Birthday', 'field' => 'birthday'],
['label' => 'Card Type', 'field' => 'card_type'],
['label' => 'First Name', 'field' => 'firstname'],
['label' => 'Last Name', 'field' => 'lastname'],
['label' => 'Birthday', 'field' => 'birthdate'],
['label' => 'Card Type', 'field' => 'cardtype_id'],
['label' => 'Status', 'field' => 'status'],
]"
:rows="$cardMembers"
@ -15,5 +15,8 @@
:hasActions="true"
:isViewPage="true"
:hasDelete="false"
:hasAddButton="false"
:hasExportButton="false"
:rowKey="'lcard_uuid'"
/>
</div>

View File

@ -15,5 +15,7 @@
:hasActions="true"
:isViewPage="true"
:hasDelete="false"
:hasAddButton="false"
:hasExportButton="false"
/>
</div>