Current File : /home/getxxhzo/app.genicards.com/app/Livewire/UsersubscriptionTable.php |
<?php
namespace App\Livewire;
use App\Models\Plan;
use App\Models\Subscription;
use Illuminate\Database\Eloquent\Builder;
use Rappasoft\LaravelLivewireTables\Views\Column;
use Rappasoft\LaravelLivewireTables\DataTableComponent;
class UsersubscriptionTable extends LivewireTableComponent
{
public function configure(): void
{
$this->setPageName('user-subscription-table');
$this->setPrimaryKey('id');
$this->setDefaultSort('created_at', 'desc');
$this->resetPage('user-subscription-table');
$this->setThAttributes(function (Column $column) {
if ($column->isField('status')) {
return [
'class' => 'd-flex justify-content-center',
];
}
return [];
});
$this->setTdAttributes(function (Column $column) {
if ($column->isField('status')) {
return [
'class' => 'text-center',
];
}
return [];
});
}
public function columns(): array
{
return [
Column::make(__('messages.subscription.plan_name'), 'plan.name')
->sortable(function (Builder $query, $direction) {
return $query->orderBy(Plan::select('name')->whereColumn('subscriptions.plan_id', 'plans.id'),
$direction);
})->searchable(),
Column::make(__('messages.subscription.amount'), 'plan_amount')
->sortable(),
Column::make(__('messages.subscription.subscribed_date'), 'starts_at')
->sortable()
->format(function ($state) {
return localized_date($state, 'dS M, Y');
}),
Column::make(__('messages.subscription.expired_date'), 'ends_at')->sortable()
->format(function ($state) {
return localized_date($state, 'dS M, Y');
}),
Column::make(__('messages.common.status'), 'status')->sortable()->view('subscription.columns.status'),
];
}
public function builder(): Builder
{
return Subscription::with(['plan.currency'])->where('tenant_id', getLogInTenantId())->select('subscriptions.*');
}
}