mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-25 06:00:28 +01:00
303 lines
6.7 KiB
PHP
303 lines
6.7 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Xentral\Modules\Report\Data;
|
||
|
|
||
|
use JsonSerializable;
|
||
|
|
||
|
class ReportColumn implements JsonSerializable
|
||
|
{
|
||
|
/** @var string ALIGN_LEFT */
|
||
|
public const ALIGN_LEFT = 'left';
|
||
|
|
||
|
/** @var string ALIGN_RIGHT */
|
||
|
public const ALIGN_RIGHT = 'right';
|
||
|
|
||
|
/** @var string ALIGN_CENTER */
|
||
|
public const ALIGN_CENTER = 'center';
|
||
|
|
||
|
/** @var string ALIGN_JUSTIFY */
|
||
|
public const ALIGN_JUSTIFY = 'justify';
|
||
|
|
||
|
/** @var string SORT_NUMERIC */
|
||
|
public const SORT_NUMERIC = 'numeric';
|
||
|
|
||
|
/** @var string SORT_ALPHABETIC */
|
||
|
public const SORT_ALPHABETIC = 'alphabetic';
|
||
|
|
||
|
/** @var string FORMAT_SUM_MONEY_DE */
|
||
|
public const FORMAT_SUM_MONEY_DE = 'sum_money_de';
|
||
|
|
||
|
/** @var string FORMAT_SUM_MONEY_EN */
|
||
|
public const FORMAT_SUM_MONEY_EN = 'sum_money_en';
|
||
|
|
||
|
/** @var string FORMAT_DATE_DMY */
|
||
|
public const FORMAT_DATE_DMY = 'date_dmy';
|
||
|
|
||
|
/** @var string FORMAT_DATE_YMD */
|
||
|
public const FORMAT_DATE_YMD = 'date_ymd';
|
||
|
|
||
|
/** @var string FORMAT_DATE_DMYHIS */
|
||
|
public const FORMAT_DATE_DMYHIS = 'date_dmyhis';
|
||
|
|
||
|
/** @var string FORMAT_DATE_YMDHIS */
|
||
|
public const FORMAT_DATE_YMDHIS = 'date_ymdhis';
|
||
|
|
||
|
/** @var string FORMAT_CUSTOM */
|
||
|
public const FORMAT_CUSTOM = 'custom';
|
||
|
|
||
|
/** @var string $key */
|
||
|
private $key;
|
||
|
|
||
|
/** @var string $title */
|
||
|
private $title;
|
||
|
|
||
|
/** @var string size */
|
||
|
private $width;
|
||
|
|
||
|
/** @var string $alignment */
|
||
|
private $alignment;
|
||
|
|
||
|
/** @var bool $isSumColumn */
|
||
|
private $isSumColumn;
|
||
|
|
||
|
/** @var int $id */
|
||
|
private $id;
|
||
|
|
||
|
/** @var int $sequence */
|
||
|
private $sequence;
|
||
|
|
||
|
/** @var string $sorting */
|
||
|
private $sorting;
|
||
|
|
||
|
/** @var string|null $formatType */
|
||
|
private $formatType;
|
||
|
|
||
|
/** @var string|null $formatStatement */
|
||
|
private $formatStatement;
|
||
|
|
||
|
/**
|
||
|
* @param string $key
|
||
|
* @param string $title
|
||
|
* @param string $width
|
||
|
* @param string $alignment
|
||
|
* @param bool $isSumColumn
|
||
|
* @param int $id
|
||
|
* @param int $sequence
|
||
|
* @param string $sorting
|
||
|
* @param string|null $formatType
|
||
|
* @param null $formatStatement
|
||
|
*/
|
||
|
public function __construct(
|
||
|
$key,
|
||
|
$title,
|
||
|
$width = '30',
|
||
|
$alignment = self::ALIGN_LEFT,
|
||
|
$isSumColumn = false,
|
||
|
$id = 0,
|
||
|
$sequence = 0,
|
||
|
$sorting = 'numeric',
|
||
|
$formatType = null,
|
||
|
$formatStatement = null
|
||
|
) {
|
||
|
$this->key = $key;
|
||
|
$this->title = $title;
|
||
|
$this->width = $width;
|
||
|
$this->alignment = $alignment;
|
||
|
$this->isSumColumn = $isSumColumn;
|
||
|
$this->id = $id;
|
||
|
$this->sequence = $sequence;
|
||
|
$this->sorting = $sorting;
|
||
|
$this->formatType = $formatType;
|
||
|
$this->formatStatement = $formatStatement;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $data
|
||
|
*
|
||
|
* @return ReportColumn|null
|
||
|
*/
|
||
|
public static function fromDbState($data)
|
||
|
{
|
||
|
if (!isset($data['key_name'])) {
|
||
|
return null;
|
||
|
}
|
||
|
if (!isset($data['title'])) {
|
||
|
return null;
|
||
|
}
|
||
|
$key = (string)$data['key_name'];
|
||
|
$title = (string)$data['title'];
|
||
|
$width = '';
|
||
|
if (isset($data['width'])) {
|
||
|
$width = $data['width'];
|
||
|
}
|
||
|
$alignment = '';
|
||
|
if (isset($data['alignment'])) {
|
||
|
$alignment = $data['alignment'];
|
||
|
}
|
||
|
$sorting = 'numeric';
|
||
|
if (isset($data['sorting'])) {
|
||
|
$sorting = $data['sorting'];
|
||
|
}
|
||
|
$sequence = 0;
|
||
|
if (isset($data['sequence'])) {
|
||
|
$sequence = $data['sequence'];
|
||
|
}
|
||
|
$format = null;
|
||
|
if (array_key_exists('format_type', $data)) {
|
||
|
$format = $data['format_type'];
|
||
|
}
|
||
|
$formatStatement = null;
|
||
|
if (array_key_exists('format_statement', $data)) {
|
||
|
$formatStatement = $data['format_statement'];
|
||
|
}
|
||
|
$sum = false;
|
||
|
if (isset($data['sum']) && $data['sum'] === 1) {
|
||
|
$sum = true;
|
||
|
}
|
||
|
$id = 0;
|
||
|
if (isset($data['id'])) {
|
||
|
$id = $data['id'];
|
||
|
}
|
||
|
|
||
|
return new self(
|
||
|
$key,
|
||
|
$title,
|
||
|
$width,
|
||
|
$alignment,
|
||
|
$sum,
|
||
|
$id,
|
||
|
$sequence,
|
||
|
$sorting,
|
||
|
$format,
|
||
|
$formatStatement
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return array
|
||
|
*/
|
||
|
public function toArray(): array
|
||
|
{
|
||
|
return [
|
||
|
'key_name' => $this->getKey(),
|
||
|
'title' => $this->getTitle(),
|
||
|
'width' => $this->getWidth(),
|
||
|
'alignment' => $this->getAlignment(),
|
||
|
'sorting' => $this->getSorting(),
|
||
|
'sum' => $this->isSumColumn(),
|
||
|
'id' => $this->getId(),
|
||
|
'sequence' => $this->getSequence(),
|
||
|
'format_type' => $this->getFormatType(),
|
||
|
'format_statement' => $this->getFormatStatement(),
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Specify data which should be serialized to JSON
|
||
|
*
|
||
|
* @return mixed data which can be serialized by <b>json_encode</b>,
|
||
|
*/
|
||
|
public function jsonSerialize()
|
||
|
{
|
||
|
$data = $this->toArray();
|
||
|
unset($data['id'], $data['sequence']);
|
||
|
|
||
|
return $data;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getKey()
|
||
|
{
|
||
|
return $this->key;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getTitle()
|
||
|
{
|
||
|
return $this->title;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getWidth()
|
||
|
{
|
||
|
return $this->width;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getAlignment()
|
||
|
{
|
||
|
return $this->alignment;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function isSumColumn()
|
||
|
{
|
||
|
return $this->isSumColumn;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return int
|
||
|
*/
|
||
|
public function getId()
|
||
|
{
|
||
|
return $this->id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return int
|
||
|
*/
|
||
|
public function getSequence()
|
||
|
{
|
||
|
return $this->sequence;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getSorting()
|
||
|
{
|
||
|
return $this->sorting;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Changes sequence number and returns old sequence number.
|
||
|
*
|
||
|
* @param int $sequence
|
||
|
*
|
||
|
* @return int previous sequence number
|
||
|
*/
|
||
|
public function changeSequence($sequence)
|
||
|
{
|
||
|
$oldSequence = $this->getSequence();
|
||
|
$this->sequence = $sequence;
|
||
|
|
||
|
return $oldSequence;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string|null
|
||
|
*/
|
||
|
public function getFormatType(): ?string
|
||
|
{
|
||
|
return $this->formatType;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string|null
|
||
|
*/
|
||
|
public function getFormatStatement(): ?string
|
||
|
{
|
||
|
return $this->formatStatement;
|
||
|
}
|
||
|
}
|