<?php // //namespace kernel\IGTabel; // //use app\helpers\Debug; //use Exception; //use Illuminate\Database\Eloquent\Model; // //class EloquentDataProvider //{ // protected int $totalCount; // // protected int $perPage = 10; // // protected int $currentPage = 1; // // protected Model $model; // // protected $queryBuilder = false; // // protected array $options = []; // protected array $meta = []; // protected string $jsonStr = ''; // // /** // * @throws Exception // */ // public function __construct($source, array $options) // { // if (is_string($source)) { // $this->queryBuilder = $source::query(); // $model = new $source(); // } elseif (is_object($source)) { // $this->queryBuilder = $source; // $model = $source->getModel(); // } else { // throw new Exception(message: "source is not valid"); // } // $this->options = $options; // $this->currentPage = $this->options['currentPage'] ?? 1; // $this->perPage = $this->options['perPage'] ?? 10; // $this->meta['total'] = $model->count(); // $this->meta['totalWithFilters'] = $this->queryBuilder->count(); // $this->meta['columns'] = $options['columns'] ?? $model->labels(); // $this->meta['perPage'] = $options['perPage'] ?? 10; // $this->meta['currentPage'] = $options['currentPage'] ?? 1; // $this->meta['baseUrl'] = $options['baseUrl'] ?? $model->table; // $this->meta['params'] = $options['params'] ?? []; // $this->meta['actions'] = $options['actions'] ?? []; // $this->createQuery(); // // $this->jsonStr = (new JSONCreator($this->meta, $this->getCollection()->toArray()))->getJson(); // // } // // public function createQuery(): void // { // if ($this->currentPage > 1) { // $this->queryBuilder->skip(($this->currentPage - 1) * $this->perPage)->take($this->perPage); // } else { // $this->queryBuilder->take($this->perPage); // } // } // // public function getCollection() // { // return $this->queryBuilder->get(); // } // // /** // * @return string|null // */ // public function getJson(): string|null // { // return $this->jsonStr; // } // //}