<?php namespace App\Http\Livewire; use App\User; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\Facades\Schema; use Livewire\Component; use Livewire\WithPagination; use Modules\Org\Entities\OrgPosition; use Modules\OrgSubscription\Entities\OrgCourseSubscription; use Rappasoft\LaravelLivewireTables\DataTableComponent; use Rappasoft\LaravelLivewireTables\Traits\WithFilters; use Rappasoft\LaravelLivewireTables\Traits\WithSearch; use Rappasoft\LaravelLivewireTables\Utilities\ColumnUtilities; use Rappasoft\LaravelLivewireTables\Views\Column; use Rappasoft\LaravelLivewireTables\Views\Filter; class ShowEnrollmentPlan extends DataTableComponent { public array $bulkActions = [ 'exportSelected' => 'Export', ]; public bool $columnSelect = true; public bool $rememberColumnSelection = true; public $table='org_course_subscriptions'; use WithSearch; use WithFilters; use WithPagination; public $page = 1; public $plan = null; protected $listeners = ['refreshDatatable' => '$refresh']; public function mount() { $this->plan = null; $this->emit('refreshDatatable'); } public function columns(): array { return [ Column::make(__('common.Title'), 'title') ->sortable() ->searchable(), Column::make(__('org-subscription.Join Date'), 'join_date') ->sortable() ->searchable(), Column::make(__('org-subscription.End Date'), 'end_date') ->sortable() ->searchable(), Column::make(__('org-subscription.Duration'), 'days') ->sortable() ->searchable(), Column::make(__('org-subscription.Plan'), 'type') ->sortable() ->searchable(), ]; } public function query() { $query = OrgCourseSubscription::where('status', 1)->orderBy('order', 'asc'); if (!empty($this->plan)) { $query->where('type', $this->plan); } return $query; } public function rowView(): string { $this->emptyMessage = trans("common.No data available in the table"); return 'livewire.org-enrollment-plan.row'; } public function paginationView() { return 'backend.partials._pagination'; } public function render() { return view('livewire.org-enrollment-plan.datatable') ->with([ 'columns' => $this->columns(), 'rowView' => $this->rowView(), 'filtersView' => $this->filtersView(), 'customFilters' => $this->filters(), 'rows' => $this->rows, 'modalsView' => $this->modalsView(), 'bulkActions' => $this->bulkActions, ]); } }