validateAssetTypeCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $assetType = $this->createAssetTypeFromRequest($request); $this->createModel($request->header->account, $assetType, AssetTypeMapper::class, 'asset_type', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $assetType); } /** * Method to create AssetType from request. * * @param RequestAbstract $request Request * * @return AssetType * * @since 1.0.0 */ private function createAssetTypeFromRequest(RequestAbstract $request) : AssetType { $assetType = new AssetType(); $assetType->setL11n( $request->getDataString('content') ?? '', ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN ); $assetType->depreciationDuration = $request->getDataInt('duration') ?? 0; $assetType->industry = $request->getDataInt('industry') ?? 0; return $assetType; } /** * Validate AssetType create request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateAssetTypeCreate(RequestAbstract $request) : array { $val = []; if (($val['content'] = !$request->hasData('content')) ) { return $val; } return []; } /** * Api method to create AssetType l11n * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiAssetTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAssetTypeL11nCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $assetTypeL11n = $this->createAssetTypeL11nFromRequest($request); $this->createModel($request->header->account, $assetTypeL11n, AssetTypeL11nMapper::class, 'asset_type_l11n', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $assetTypeL11n); } /** * Method to create AssetType l11n from request. * * @param RequestAbstract $request Request * * @return BaseStringL11n * * @since 1.0.0 */ private function createAssetTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n { $assetTypeL11n = new BaseStringL11n(); $assetTypeL11n->ref = $request->getDataInt('ref') ?? 0; $assetTypeL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language; $assetTypeL11n->content = $request->getDataString('content') ?? ''; return $assetTypeL11n; } /** * Validate AssetType l11n create request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateAssetTypeL11nCreate(RequestAbstract $request) : array { $val = []; if (($val['content'] = !$request->hasData('content')) || ($val['ref'] = !$request->hasData('ref')) ) { return $val; } return []; } /** * Api method to update AssetType * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiAssetTypeUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAssetTypeUpdate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidUpdateResponse($request, $response, $val); return; } /** @var BaseStringL11nType $old */ $old = AssetTypeMapper::get()->where('id', $request->getDataInt('id') ?? 0); $new = $this->updateAssetTypeFromRequest($request, clone $old); $this->updateModel($request->header->account, $old, $new, AssetTypeMapper::class, 'asset_type', $request->getOrigin()); $this->createStandardUpdateResponse($request, $response, $new); } /** * Method to update AssetType from request. * * @param RequestAbstract $request Request * @param BaseStringL11nType $new Model to modify * * @return BaseStringL11nType * * @todo Implement API update function * * @since 1.0.0 */ public function updateAssetTypeFromRequest(RequestAbstract $request, BaseStringL11nType $new) : BaseStringL11nType { $new->title = $request->getDataString('name') ?? $new->title; return $new; } /** * Validate AssetType update request * * @param RequestAbstract $request Request * * @return array * * @todo Implement API validation function * * @since 1.0.0 */ private function validateAssetTypeUpdate(RequestAbstract $request) : array { $val = []; if (($val['id'] = !$request->hasData('id'))) { return $val; } return []; } /** * Api method to delete AssetType * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiAssetTypeDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAssetTypeDelete($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidDeleteResponse($request, $response, $val); return; } /** @var BaseStringL11nType $assetType */ $assetType = AssetTypeMapper::get()->where('id', $request->getDataInt('id') ?? 0)->execute(); $this->deleteModel($request->header->account, $assetType, AssetTypeMapper::class, 'asset_type', $request->getOrigin()); $this->createStandardDeleteResponse($request, $response, $assetType); } /** * Validate AssetType delete request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateAssetTypeDelete(RequestAbstract $request) : array { $val = []; if (($val['id'] = !$request->hasData('id'))) { return $val; } return []; } /** * Api method to update AssetTypeL11n * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiAssetTypeL11nUpdate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAssetTypeL11nUpdate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidUpdateResponse($request, $response, $val); return; } /** @var BaseStringL11n $old */ $old = AssetTypeL11nMapper::get()->where('id', $request->getDataInt('id') ?? 0); $new = $this->updateAssetTypeL11nFromRequest($request, clone $old); $this->updateModel($request->header->account, $old, $new, AssetTypeL11nMapper::class, 'asset_type_l11n', $request->getOrigin()); $this->createStandardUpdateResponse($request, $response, $new); } /** * Method to update AssetTypeL11n from request. * * @param RequestAbstract $request Request * @param BaseStringL11n $new Model to modify * * @return BaseStringL11n * * @since 1.0.0 */ public function updateAssetTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n { $new->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $new->language; $new->content = $request->getDataString('title') ?? $new->content; return $new; } /** * Validate AssetTypeL11n update request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateAssetTypeL11nUpdate(RequestAbstract $request) : array { $val = []; if (($val['id'] = !$request->hasData('id'))) { return $val; } return []; } /** * Api method to delete AssetTypeL11n * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiAssetTypeL11nDelete(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAssetTypeL11nDelete($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidDeleteResponse($request, $response, $val); return; } /** @var BaseStringL11n $assetTypeL11n */ $assetTypeL11n = AssetTypeL11nMapper::get()->where('id', $request->getDataInt('id') ?? 0)->execute(); $this->deleteModel($request->header->account, $assetTypeL11n, AssetTypeL11nMapper::class, 'asset_type_l11n', $request->getOrigin()); $this->createStandardDeleteResponse($request, $response, $assetTypeL11n); } /** * Validate AssetTypeL11n delete request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateAssetTypeL11nDelete(RequestAbstract $request) : array { $val = []; if (($val['id'] = !$request->hasData('id'))) { return $val; } return []; } }