todos fixed

This commit is contained in:
Dennis Eichhorn 2023-10-12 22:49:20 +00:00
parent b763ef96c6
commit 39ed9367a6
4 changed files with 51 additions and 13 deletions

View File

@ -53,21 +53,24 @@ trait ApiAttributeTraitController
if ($request->hasData('value_id')) {
$new->value = new NullAttributeValue((int) $request->getData('value_id'));
} else {
// @todo: consider to check if custom value already exist and just reference the id? Problematic if content of id gets changed.
$new->value = new AttributeValue();
$new->value->setValue($request->getData('value'), $new->type->datatype);
}
} else {
// @todo: fix by only accepting the value id to be used
// this is a workaround for now because the front end doesn't allow to dynamically show default values.
$value = new NullAttributeValue((int) $request->getData('value_id'));
if ($request->hasData('value_id')) {
if (!$new->type->hasDefaultId((int) $request->getData('value_id'))) {
return $new;
}
// Couldn't find matching default value
/*
if ($value->id === 0) {
return $new;
$value = new NullAttributeValue((int) $request->getData('value_id'));
} else {
$value = $new->type->getDefaultByValue($request->getData('value'));
// Couldn't find matching default value
if ($value->id === 0) {
return $new;
}
}
*/
$new->value = $value;
}
@ -283,13 +286,15 @@ trait ApiAttributeTraitController
if ($request->hasData('value_id')) {
$new->value = new NullAttributeValue((int) $request->getData('value_id'));
} else {
// @todo: consider to check if custom value already exist and just reference the id? Problematic if content of id gets changed.
$new->value = new AttributeValue();
$new->value->setValue($request->getData('value'), $new->type->datatype);
}
} else {
if ($request->hasData('value_id')) {
// @todo: check if value_id part of default values
if (!$new->type->hasDefaultId((int) $request->getData('value_id'))) {
return $new;
}
$value = new NullAttributeValue((int) $request->getData('value_id'));
} else {
$value = $new->type->getDefaultByValue($request->getData('value'));

View File

@ -89,13 +89,15 @@ final class ApiController extends Controller
if ($request->hasData('value_id')) {
$new->value = new NullAttributeValue((int) $request->getData('value_id'));
} else {
// @todo: consider to check if custom value already exist and just reference the id? Problematic if content of id gets changed.
$new->value = new AttributeValue();
$new->value->setValue($request->getData('value'), $new->type->datatype);
}
} else {
if ($request->hasData('value_id')) {
// @todo: check if value_id part of default values
if (!$new->type->hasDefaultId((int) $request->getData('value_id'))) {
return $new;
}
$value = new NullAttributeValue((int) $request->getData('value_id'));
} else {
$value = $new->type->getDefaultByValue($request->getData('value'));

View File

@ -79,6 +79,17 @@ trait AttributeHolderTrait
return false;
}
public function hasAttributeType(string $attrName) : bool
{
foreach ($this->attributes as $attribute) {
if ($attribute->type->name === $attrName && !empty($attribute->value->getValue())) {
return true;
}
}
return false;
}
/**
* Get attribute
*

View File

@ -203,6 +203,26 @@ class AttributeType implements \JsonSerializable
return $this->defaults;
}
/**
* Check if an attribute type has a certain default id
*
* @param int $id Default object id
*
* @return bool
*
* @since 1.0.0
*/
public function hasDefaultId(int $id) : bool
{
foreach ($this->defaults as $default) {
if ($default->id === $id) {
return true;
}
}
return false;
}
/**
* {@inheritdoc}
*/