bug fixes and item management improvements

This commit is contained in:
Dennis Eichhorn 2023-05-24 18:11:37 +00:00
parent 953df0d2b2
commit 38bacc3bc5
5 changed files with 142 additions and 12 deletions

View File

@ -15,7 +15,7 @@ declare(strict_types=1);
namespace Modules\Attribute\Models;
/**
* class.
* Attribute class.
*
* @package Modules\Attribute\Models
* @license OMS License 2.0

121
Models/Attribute.php.out Normal file
View File

@ -0,0 +1,121 @@
<?php
/**
* Karaka
*
* PHP Version 8.1
*
* @package Modules\Attribute\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Attribute\Models;
/**
* Attribute class.
*
* @package Modules\Attribute\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
class Attribute implements \JsonSerializable
{
/**
* Id.
*
* @var int
* @since 1.0.0
*/
public int $id = 0;
/**
* this attribute belongs to
*
* @var int
* @since 1.0.0
*/
public int $ref = 0;
/**
* Attribute type the attribute belongs to.
*
* @var AttributeType
* @since 1.0.0
*/
public AttributeType $type;
/**
* Attribute value the attribute belongs to.
*
* @var AttributeValue
* @since 1.0.0
*/
public AttributeValue $value;
/**
* Constructor.
*
* @since 1.0.0
*/
public function __construct()
{
$this->type = new NullAttributeType();
$this->value = new NullAttributeValue();
}
/**
* Creates a deep clone of the object.
*
* @return self
*
* @since 1.0.0
*/
public function deepClone() : self
{
$clone = clone $this;
$clone->value = clone $this->value;
return $clone;
}
/**
* Returns the id of the attribute.
*
* @return int
*
* @since 1.0.0
*/
public function getId() : int
{
return $this->id;
}
/**
* Converts the attribute to an array.
*
* @return array
*
* @since 1.0.0
*/
public function toArray() : array
{
return [
'id' => $this->id,
'ref' => $this->ref,
'type' => $this->type,
'value' => $this->value,
];
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return $this->toArray();
}
}

View File

@ -128,22 +128,22 @@ class AttributeType implements \JsonSerializable
*/
public function getDefaultByValue(mixed $value) : AttributeValue
{
$value = null;
$mValue = null;
if ($this->datatype === AttributeValueType::_STRING) {
$value = (string) $value;
$mValue = (string) $value;
} elseif ($this->datatype === AttributeValueType::_INT
|| $this->datatype === AttributeValueType::_FLOAT_INT
|| $this->datatype === AttributeValueType::_BOOL
) {
$value = (int) $value;
$mValue = (int) $value;
} elseif ($this->datatype === AttributeValueType::_FLOAT) {
$value = (float) $value;
$mValue = (float) $value;
} elseif ($this->datatype === AttributeValueType::_DATETIME) {
$value = new \DateTime((string) $value);
$mValue = new \DateTime((string) $value);
}
foreach ($this->defaults as $default) {
if ($default->getValue() === $value) {
if ($default->getValue() === $mValue) {
return $default;
}
}

View File

@ -192,13 +192,13 @@ class AttributeValue implements \JsonSerializable
*/
public function getValue() : mixed
{
if (!empty($this->valueStr)) {
if ($this->valueStr !== null) {
return $this->valueStr;
} elseif (!empty($this->valueInt)) {
} elseif ($this->valueInt !== null) {
return $this->valueInt;
} elseif (!empty($this->valueDec)) {
} elseif ($this->valueDec !== null) {
return $this->valueDec;
} elseif ($this->valueDat instanceof \DateTimeInterface) {
} elseif ($this->valueDat !== null) {
return $this->valueDat;
}

View File

@ -13,5 +13,14 @@
declare(strict_types=1);
return ['Attribute' => [
'Accounts/Groups' => 'Accounts/Groups',
'AttributeTypes' => 'Attribute Types',
'Attribute' => 'Attribute',
'Name' => 'Name',
'Title' => 'Title',
'Datatype' => 'Datatype',
'Status' => 'Status',
'DefaultValues' => 'Default Values',
'Pattern' => 'Pattern',
'IsRequired' => 'Is required?',
'CustomValue' => 'Custom values allowed?',
]];