validateSupplierCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $supplier = $this->createSupplierFromRequest($request); $this->createModel($request->header->account, $supplier, SupplierMapper::class, 'supplier', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $supplier); } /** * Method to create news article from request. * * @param RequestAbstract $request Request * * @return Supplier * * @since 1.0.0 */ private function createSupplierFromRequest(RequestAbstract $request) : Supplier { $account = new Account(); $account->name1 = $request->getDataString('name1') ?? ''; $account->name2 = $request->getDataString('name2') ?? ''; $supplier = new Supplier(); $supplier->number = $request->getDataString('number') ?? ''; $supplier->account = $account; $addr = new Address(); $addr->address = $request->getDataString('address') ?? ''; $addr->postal = $request->getDataString('postal') ?? ''; $addr->city = $request->getDataString('city') ?? ''; $addr->state = $request->getDataString('state') ?? ''; $addr->setCountry($request->getDataString('country') ?? ''); $supplier->mainAddress = $addr; $supplier->unit = $request->getDataInt('unit'); return $supplier; } /** * Validate news create request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateSupplierCreate(RequestAbstract $request) : array { $val = []; if (($val['number'] = !$request->hasData('number')) || ($val['name1'] = !$request->hasData('name1')) ) { return $val; } return []; } /** * Api method to create supplier l11n * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierL11nCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateSupplierL11nCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $supplierL11n = $this->createSupplierL11nFromRequest($request); $this->createModel($request->header->account, $supplierL11n, SupplierL11nMapper::class, 'supplier_l11n', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $supplierL11n); } /** * Method to create supplier l11n from request. * * @param RequestAbstract $request Request * * @return BaseStringL11n * * @since 1.0.0 */ private function createSupplierL11nFromRequest(RequestAbstract $request) : BaseStringL11n { $supplierL11n = new BaseStringL11n(); $supplierL11n->ref = $request->getDataInt('supplier') ?? 0; $supplierL11n->type = new NullBaseStringL11nType($request->getDataInt('type') ?? 0); $supplierL11n->setLanguage( $request->getDataString('language') ?? $request->header->l11n->language ); $supplierL11n->content = $request->getDataString('description') ?? ''; return $supplierL11n; } /** * Validate supplier l11n create request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateSupplierL11nCreate(RequestAbstract $request) : array { $val = []; if (($val['supplier'] = !$request->hasData('supplier')) || ($val['type'] = !$request->hasData('type')) || ($val['description'] = !$request->hasData('description')) ) { return $val; } return []; } /** * Api method to create supplier l11n type * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierL11nTypeCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateSupplierL11nTypeCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $supplierL11nType = $this->createSupplierL11nTypeFromRequest($request); $this->createModel($request->header->account, $supplierL11nType, SupplierL11nTypeMapper::class, 'supplier_l11n_type', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $supplierL11nType); } /** * Method to create supplier l11n type from request. * * @param RequestAbstract $request Request * * @return BaseStringL11nType * * @since 1.0.0 */ private function createSupplierL11nTypeFromRequest(RequestAbstract $request) : BaseStringL11nType { $supplierL11nType = new BaseStringL11nType(); $supplierL11nType->title = $request->getDataString('title') ?? ''; $supplierL11nType->isRequired = $request->getDataBool('is_required') ?? false; return $supplierL11nType; } /** * Validate supplier l11n type create request * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function validateSupplierL11nTypeCreate(RequestAbstract $request) : array { $val = []; if (($val['title'] = !$request->hasData('title'))) { return $val; } return []; } /** * Api method to create supplier attribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierAttributeCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAttributeCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $type = SupplierAttributeTypeMapper::get()->with('defaults')->where('id', (int) $request->getData('type'))->execute(); $attribute = $this->createAttributeFromRequest($request, $type); $this->createModel($request->header->account, $attribute, SupplierAttributeMapper::class, 'attribute', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $attribute); } /** * Api method to create supplier attribute l11n * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAttributeTypeL11nCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $attrL11n = $this->createAttributeTypeL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, SupplierAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $attrL11n); } /** * Api method to create supplier attribute type * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAttributeTypeCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $attrType = $this->createAttributeTypeFromRequest($request); $this->createModel($request->header->account, $attrType, SupplierAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $attrType); } /** * Api method to create supplier attribute value * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAttributeValueCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } /** @var \Modules\Attribute\Models\AttributeType $type */ $type = SupplierAttributeTypeMapper::get() ->where('id', $request->getDataInt('type') ?? 0) ->execute(); $attrValue = $this->createAttributeValueFromRequest($request, $type); $this->createModel($request->header->account, $attrValue, SupplierAttributeValueMapper::class, 'attr_value', $request->getOrigin()); if ($attrValue->isDefault) { $this->createModelRelation( $request->header->account, (int) $request->getData('type'), $attrValue->id, SupplierAttributeTypeMapper::class, 'defaults', '', $request->getOrigin() ); } $this->createStandardCreateResponse($request, $response, $attrValue); } /** * Api method to create item attribute l11n * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSupplierAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { if (!empty($val = $this->validateAttributeValueL11nCreate($request))) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val); return; } $attrL11n = $this->createAttributeValueL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, SupplierAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); $this->createStandardCreateResponse($request, $response, $attrL11n); } /** * Api method to create supplier files * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiFileCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { $uploadedFiles = $request->files; if (empty($uploadedFiles)) { $response->header->status = RequestStatusCode::R_400; $this->createInvalidAddResponse($request, $response, $uploadedFiles); return; } $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( names: $request->getDataList('names'), fileNames: $request->getDataList('filenames'), files: $uploadedFiles, account: $request->header->account, basePath: __DIR__ . '/../../../Modules/Media/Files/Modules/SupplierManagement/' . ($request->getData('supplier') ?? '0'), virtualPath: '/Modules/SupplierManagement/' . ($request->getData('supplier') ?? '0'), pathSettings: PathSettings::FILE_PATH ); if ($request->hasData('type')) { foreach ($uploaded as $file) { $this->createModelRelation( $request->header->account, $file->id, $request->getDataInt('type'), MediaMapper::class, 'types', '', $request->getOrigin() ); } } if (empty($uploaded)) { $this->createInvalidAddResponse($request, $response, []); return; } $this->createModelRelation( $request->header->account, (int) $request->getData('supplier'), \reset($uploaded)->id, SupplierMapper::class, 'files', '', $request->getOrigin() ); $this->createStandardAddResponse($request, $response, $uploaded); } /** * Api method to create supplier files * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiNoteCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void { $request->setData('virtualpath', '/Modules/SupplierManagement/' . $request->getData('id'), true); $this->app->moduleManager->get('Editor')->apiEditorCreate($request, $response, $data); $data = $response->getDataArray($request->uri->__toString()); if (!\is_array($data)) { return; } $model = $data['response']; $this->createModelRelation( $request->header->account, $request->getData('id'), $model->id, SupplierMapper::class, 'notes', '', $request->getOrigin() ); } }