public ActionResult updateCustomizedProduct(long id, [FromBody] UpdateCustomizedProductModelView updateCustomizedProductModelView, [FromHeader(Name = "UserToken")] string userAuthToken) { if (updateCustomizedProductModelView == null) { return(BadRequest(new SimpleJSONMessageService(INVALID_REQUEST_BODY_MESSAGE))); } try { updateCustomizedProductModelView.customizedProductId = id; updateCustomizedProductModelView.userAuthToken = userAuthToken; GetCustomizedProductModelView customizedProductModelView = new core.application.CustomizedProductController().updateCustomizedProduct(updateCustomizedProductModelView); return(Ok(customizedProductModelView)); } catch (ResourceNotFoundException e) { return(NotFound(new SimpleJSONMessageService(e.Message))); } catch (NotAuthorizedException notAuthorizedException) { return(StatusCode(401, new SimpleJSONMessageService(notAuthorizedException.Message))); } catch (ArgumentException e) { return(BadRequest(new SimpleJSONMessageService(e.Message))); } catch (InvalidOperationException e) { return(BadRequest(new SimpleJSONMessageService(e.Message))); } catch (Exception) { return(StatusCode(500, new SimpleJSONMessageService(UNEXPECTED_ERROR))); } }
/// <summary> /// Updates an instance of CustomizedProduct with the data provided in the given UpdateCustomizedProductModelView. /// </summary> /// <param name="updateCustomizedProductModelView">Instance of UpdateCustomizedProductModelView containing updated CustomizedProduct information.</param> /// <returns>An instance of GetCustomizedProductModelView with the updated CustomizedProduct information.</returns> /// <exception cref="ResourceNotFoundException">Thrown when the CustomizedProduct could not be found.</exception> /// <exception cref="System.ArgumentException">Thrown when none of the CustomizedProduct's properties are updated.</exception> public GetCustomizedProductModelView updateCustomizedProduct(UpdateCustomizedProductModelView updateCustomizedProductModelView) { CustomizedProductRepository customizedProductRepository = PersistenceContext.repositories().createCustomizedProductRepository(); CustomizedProduct customizedProduct = customizedProductRepository.find(updateCustomizedProductModelView.customizedProductId); if (customizedProduct == null) { throw new ResourceNotFoundException(string.Format(ERROR_UNABLE_TO_FIND_CUSTOMIZED_PRODUCT_BY_ID, updateCustomizedProductModelView.customizedProductId)); } checkUserToken(customizedProduct, updateCustomizedProductModelView.userAuthToken); bool performedAtLeastOneUpdate = false; if (updateCustomizedProductModelView.reference != null) { customizedProduct.changeReference(updateCustomizedProductModelView.reference); performedAtLeastOneUpdate = true; } if (updateCustomizedProductModelView.designation != null) { customizedProduct.changeDesignation(updateCustomizedProductModelView.designation); performedAtLeastOneUpdate = true; } if (updateCustomizedProductModelView.customizedMaterial != null) { //TODO: check if only the finish or the color are being updated CustomizedMaterial customizedMaterial = CreateCustomizedMaterialService.create(updateCustomizedProductModelView.customizedMaterial); customizedProduct.changeCustomizedMaterial(customizedMaterial); performedAtLeastOneUpdate = true; } if (updateCustomizedProductModelView.customizedDimensions != null) { customizedProduct.changeDimensions(CustomizedDimensionsModelViewService.fromModelView(updateCustomizedProductModelView.customizedDimensions)); performedAtLeastOneUpdate = true; } if (updateCustomizedProductModelView.customizationStatus == CustomizationStatus.FINISHED) { customizedProduct.finalizeCustomization(); performedAtLeastOneUpdate = true; } if (!performedAtLeastOneUpdate) { throw new ArgumentException(ERROR_NO_UPDATE_PERFORMED); } customizedProduct = customizedProductRepository.update(customizedProduct); if (customizedProduct == null) { throw new ArgumentException(ERROR_UNABLE_TO_SAVE_CUSTOMIZED_PRODUCT); } return(CustomizedProductModelViewService.fromEntity(customizedProduct)); }