Files

161 lines
3.3 KiB
PHP
Raw Permalink Normal View History

2026-01-24 14:03:11 +00:00
<?php
/**
* Created by PhpStorm.
* User: AraNote
* Date: 18/04/2018
* Time: 06:27 PM
*/
namespace App\DB\Te;
use Illuminate\Support\Arr;
class TableEngineInput
{
public $columns;
public $columnTitles;
public $reportTitle;
public $filters;
public $filtersOpt;
public $selectCommand;
public $selectItems;
public $limit = 1000;
public $page;
public $key;
public $sort;
public $search;
public $op;
/**
* TableEngineInput constructor.
*/
public function __construct($input)
{
if (isset($input['select'])) {
$this->columns = array_filter($input['select'], function ($item) {
return $item != 'opt';
});
}
if (isset($input['titles'])) {
$this->columnTitles = $input['titles'];
}
if (isset($input['report_title'])) {
$this->reportTitle = $input['report_title'];
}
if (isset($input['filters'])) {
$this->filters = $input['filters'];
}
if (isset($input['limit'])) {
$this->limit = $input['limit'];
}
if (isset($input['page'])) {
$this->page = $input['page'];
}
if (isset($input['search'])) {
$this->search = $input['search'];
}
if (isset($input['text_search'])) {
$this->search = $input['text_search'];
}
if (isset($input['order'])) {
$e = substr($input['order'], 0, 1);
$col = substr($input['order'], 1);
$this->sort = (object)[
'key' => $col,
'order' => $e == '-' ? 'descending' : 'asc'
];
}
if (isset($input['filtersOpt'])) {
$this->filtersOpt = $input['filtersOpt'];
}
if (isset($input['selectCommand'])) {
$this->selectCommand = $input['selectCommand'];
}
if (isset($input['selectItems'])) {
$this->selectItems = $input['selectItems'];
}
if (isset($input['key'])) {
$this->key = $input['key'];
}
if (isset($input['op'])) {
$this->op = $input['op'];
$this->page = 1;
}
}
public static function create($input)
{
if (is_null($input)) {
return null;
}
return new TableEngineInput($input);
}
public function hasSearch()
{
return !is_null($this->search);
}
public function hasFilters()
{
return !is_null($this->filters);
}
public function hasCols()
{
return !is_null($this->columns);
}
public function hasLimit()
{
return !is_null($this->limit);
}
public function hasSort()
{
return !is_null($this->sort);
}
public function hasSelectCommand()
{
return !is_null($this->selectCommand);
}
public function hasSelectItems()
{
return !is_null($this->selectItems);
}
public function getShowColumns($i18nPrefix)
{
$exp = [];
foreach ($this->columns as $col) {
if (isset($this->columnTitles[$col])) {
$exp[$col] = $this->columnTitles[$col];
} else {
$exp[$col] = trans('field.' . $i18nPrefix . $col);
}
}
return $exp;
}
}