<?php namespace kernel\IGTabel; use app\helpers\Debug; use Illuminate\Database\Eloquent\Collection; class ListJsonTableEloquentCollection { private string|null $jsonStr; private array $meta = []; /** * @param Collection $collection * @param array $params * @throws \Exception */ public function __construct(Collection $collection, array $params = []) { if (!isset($params['model'])) { throw new \Exception(message: "The parameter model must not be empty"); } $model = new $params['model'](); $this->meta['columns'] = $params['columns'] ?? $model->labels(); $this->meta['perPage'] = $params['perPage'] ?? 10; $this->meta['currentPage'] = $params['currentPage'] ?? 1; $this->meta['baseUrl'] = $params['baseUrl'] ?? $model->table; $this->meta['params'] = $params['params'] ?? []; $this->meta['actions'] = $params['actions'] ?? []; $this->jsonStr = (new JSONCreator($this->meta, $collection->toArray()))->getJson(); } /** * @return string|null */ public function getJson(): string|null { return $this->jsonStr; } }