fix default respone generation

This commit is contained in:
Dennis Eichhorn 2023-07-26 09:18:04 +00:00
parent 03bdf66747
commit d5a48d2837
4 changed files with 201 additions and 140 deletions

View File

@ -24,7 +24,7 @@ use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\RequestAbstract;
trait ApiTraitController
trait ApiAttributeTraitController
{
/**
* Method to create item attribute from request.

View File

@ -27,7 +27,6 @@ use Modules\Attribute\Models\NullAttributeValue;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\Model\Message\FormValidation;
@ -58,8 +57,8 @@ final class ApiController extends Controller
public function apiAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateAttributeCreate($request))) {
$response->data['attribute_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
@ -67,7 +66,8 @@ final class ApiController extends Controller
$attribute = $this->createAttributeFromRequest($request);
$this->createModel($request->header->account, $attribute, AttributeMapper::class, 'attribute', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute);
$response->header->status = RequestStatusCode::R_400;
$this->createStandardCreateResponse($request, $response, $attribute);
}
/**
@ -137,15 +137,15 @@ final class ApiController extends Controller
public function apiAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateAttributeTypeL11nCreate($request))) {
$response->data['attr_type_l11n_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
$attrL11n = $this->createAttributeTypeL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, AttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n);
$this->createStandardCreateResponse($request, $response, $attrL11n);
}
/**
@ -206,16 +206,15 @@ final class ApiController extends Controller
public function apiAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateAttributeTypeCreate($request))) {
$response->data['attr_type_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
$attrType = $this->createAttributeTypeFromRequest($request);
$this->createModel($request->header->account, $attrType, AttributeTypeMapper::class, 'attr_type', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType);
$this->createStandardCreateResponse($request, $response, $attrType);
}
/**
@ -232,7 +231,7 @@ final class ApiController extends Controller
$attrType = new AttributeType($request->getDataString('name') ?? '');
$attrType->datatype = $request->getDataInt('datatype') ?? 0;
$attrType->custom = $request->getDataBool('custom') ?? false;
$attrType->isRequired = (bool) ($request->getData('is_required') ?? false);
$attrType->isRequired = $request->getDataBool('is_required') ?? false;
$attrType->validationPattern = $request->getDataString('validation_pattern') ?? '';
$attrType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN);
$attrType->setFields($request->getDataInt('fields') ?? 0);
@ -277,8 +276,8 @@ final class ApiController extends Controller
public function apiAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateAttributeValueCreate($request))) {
$response->data['attr_value_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
@ -295,7 +294,7 @@ final class ApiController extends Controller
);
}
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute value', 'Attribute value successfully created', $attrValue);
$this->createStandardCreateResponse($request, $response, $attrValue);
}
/**
@ -362,15 +361,15 @@ final class ApiController extends Controller
public function apiAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateAttributeValueL11nCreate($request))) {
$response->data['attr_value_l11n_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
$attrL11n = $this->createAttributeValueL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, AttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n);
$this->createStandardCreateResponse($request, $response, $attrL11n);
}
/**

View File

@ -0,0 +1,183 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\Attribute\Controller;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\BaseStringL11nType;
use phpOMS\Localization\NullBaseStringL11nType;
use phpOMS\Message\RequestAbstract;
trait ApiLocalizationTraitController
{
/**
* Method to create l11n from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11n
*
* @since 1.0.0
*/
private function createL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{
$l11n = new BaseStringL11n();
$l11n->ref = $request->getDataInt('ref') ?? 0;
$l11n->type = new NullBaseStringL11nType($request->getDataInt('type') ?? 0);
$l11n->setLanguage(
$request->getDataString('language') ?? $request->header->l11n->language
);
$l11n->content = $request->getDataString('content') ?? '';
return $l11n;
}
/**
* Validate l11n create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['ref'] = !$request->hasData('ref'))
|| ($val['type'] = !$request->hasData('type'))
|| ($val['content'] = !$request->hasData('content'))
) {
return $val;
}
return [];
}
/**
* Method to update L11n from request.
*
* @param RequestAbstract $request Request
* @param BaseStringL11n $new Model to modify
*
* @return BaseStringL11n
*
* @todo: consider to move all these FromRequest functions to the attribute module since they are the same in every module!
*
* @since 1.0.0
*/
public function updateL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n
{
$new->setLanguage(
$request->getDataString('language') ?? $new->language
);
$new->content = $request->getDataString('content') ?? $new->content;
return $new;
}
/**
* Validate L11n update request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @todo: implement
*
* @since 1.0.0
*/
private function validateL11nUpdate(RequestAbstract $request) : array
{
$val = [];
if (($val['id'] = !$request->hasData('id'))) {
return $val;
}
return [];
}
/**
* Method to create l11n type from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11nType
*
* @since 1.0.0
*/
private function createL11nTypeFromRequest(RequestAbstract $request) : BaseStringL11nType
{
$l11nType = new BaseStringL11nType();
$l11nType->title = $request->getDataString('title') ?? '';
$l11nType->isRequired = $request->getDataBool('is_required') ?? false;
return $l11nType;
}
/**
* Validate l11n type create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateL11nTypeCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))) {
return $val;
}
return [];
}
/**
* Method to update l11n type from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11nType
*
* @since 1.0.0
*/
private function updateL11nTypeFromRequest(RequestAbstract $request, BaseStringL11nType $new) : BaseStringL11nType
{
$new->title = $request->getDataString('title') ?? $new->title;
$new->isRequired = $request->getDataBool('is_required') ?? $new->isRequired;
return $new;
}
/**
* Validate l11n type update request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateL11nTypeUpdate(RequestAbstract $request) : array
{
$val = [];
if (($val['id'] = !$request->hasData('id'))) {
return $val;
}
return [];
}
}

View File

@ -1,121 +0,0 @@
<?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();
}
}