/// <summary> /// Update the definition of an extra attribute for the specified product type. /// <example> /// <code> /// var result = ProductTypeExtraFactory.UpdateExtra(handler : handler, attributeInProductType : attributeInProductType, productTypeId : productTypeId, attributeFQN : attributeFQN, responseFields : responseFields, dataViewMode: dataViewMode, expectedCode: expectedCode, successCode: successCode); /// var optionalCasting = ConvertClass<AttributeInProductType/>(result); /// return optionalCasting; /// </code> /// </example> /// </summary> public static Mozu.Api.Contracts.ProductAdmin.AttributeInProductType UpdateExtra(ServiceClientMessageHandler handler, Mozu.Api.Contracts.ProductAdmin.AttributeInProductType attributeInProductType, int productTypeId, string attributeFQN, string responseFields = null, DataViewMode dataViewMode = DataViewMode.Live, HttpStatusCode expectedCode = HttpStatusCode.OK, HttpStatusCode successCode = HttpStatusCode.OK) { SetSdKparameters(); var currentClassName = System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.Name; var currentMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name; Debug.WriteLine(currentMethodName + '.' + currentMethodName); var apiClient = Mozu.Api.Clients.Commerce.Catalog.Admin.Attributedefinition.Producttypes.ProductTypeExtraClient.UpdateExtraClient( attributeInProductType: attributeInProductType, productTypeId: productTypeId, attributeFQN: attributeFQN, responseFields: responseFields, dataViewMode: dataViewMode); try { apiClient.WithContext(handler.ApiContext).Execute(); } catch (ApiException ex) { // Custom error handling for test cases can be placed here Exception customException = TestFailException.GetCustomTestException(ex, currentClassName, currentMethodName, expectedCode); if (customException != null) { throw customException; } return(null); } return(ResponseMessageFactory.CheckResponseCodes(apiClient.HttpResponse.StatusCode, expectedCode, successCode) ? (apiClient.Result()) : null); }
/// <summary> /// /// </summary> /// <param name="attributeFQN">Fully qualified name for an attribute.</param> /// <param name="productTypeId">Identifier of the product type.</param> /// <param name="responseFields">Filtering syntax appended to an API call to increase or decrease the amount of data returned inside a JSON object. This parameter should only be used to retrieve data. Attempting to update data using this parameter may cause data loss.</param> /// <param name="dataViewMode">{<see cref="Mozu.Api.DataViewMode"/>}</param> /// <param name="attributeInProductType">Properties of an attribute definition associated with a specific product type. When an attribute is applied to a product type, each product of that type maintains the same set of attributes.</param> /// <returns> /// <see cref="Mozu.Api.Contracts.ProductAdmin.AttributeInProductType"/> /// </returns> /// <example> /// <code> /// var producttypeoption = new ProductTypeOption(); /// var attributeInProductType = await producttypeoption.UpdateOptionAsync(_dataViewMode, attributeInProductType, productTypeId, attributeFQN, responseFields); /// </code> /// </example> public virtual async Task <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType> UpdateOptionAsync(Mozu.Api.Contracts.ProductAdmin.AttributeInProductType attributeInProductType, int productTypeId, string attributeFQN, string responseFields = null, CancellationToken ct = default(CancellationToken)) { MozuClient <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType> response; var client = Mozu.Api.Clients.Commerce.Catalog.Admin.Attributedefinition.Producttypes.ProductTypeOptionClient.UpdateOptionClient(_dataViewMode, attributeInProductType, productTypeId, attributeFQN, responseFields); client.WithContext(_apiContext); response = await client.ExecuteAsync(ct).ConfigureAwait(false); return(await response.ResultAsync()); }
public virtual Mozu.Api.Contracts.ProductAdmin.AttributeInProductType UpdateOption(Mozu.Api.Contracts.ProductAdmin.AttributeInProductType attributeInProductType, int productTypeId, string attributeFQN, string responseFields = null) { MozuClient <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType> response; var client = Mozu.Api.Clients.Commerce.Catalog.Admin.Attributedefinition.Producttypes.ProductTypeOptionClient.UpdateOptionClient(_dataViewMode, attributeInProductType, productTypeId, attributeFQN, responseFields); client.WithContext(_apiContext); response = client.Execute(); return(response.Result()); }
/// <summary> /// Assigns an option attribute to the product type based on the information supplied in the request. /// </summary> /// <param name="productTypeId">Identifier of the product type.</param> /// <param name="responseFields">Use this field to include those fields which are not included by default.</param> /// <param name="dataViewMode">{<see cref="Mozu.Api.DataViewMode"/>}</param> /// <param name="attributeInProductType">Properties of an attribute definition associated with a specific product type. When an attribute is applied to a product type, each product of that type maintains the same set of attributes.</param> /// <returns> /// <see cref="Mozu.Api.Contracts.ProductAdmin.AttributeInProductType"/> /// </returns> /// <example> /// <code> /// var producttypeoption = new ProductTypeOption(); /// var attributeInProductType = await producttypeoption.AddOptionAsync(_dataViewMode, attributeInProductType, productTypeId, responseFields); /// </code> /// </example> public virtual async Task <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType> AddOptionAsync(Mozu.Api.Contracts.ProductAdmin.AttributeInProductType attributeInProductType, int productTypeId, string responseFields = null) { MozuClient <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType> response; var client = Mozu.Api.Clients.Commerce.Catalog.Admin.Attributedefinition.Producttypes.ProductTypeOptionClient.AddOptionClient(_dataViewMode, attributeInProductType, productTypeId, responseFields); client.WithContext(_apiContext); response = await client.ExecuteAsync(); return(await response.ResultAsync()); }
/// <summary> /// /// </summary> /// <param name="productTypeId">Identifier of the product type.</param> /// <param name="responseFields">Filtering syntax appended to an API call to increase or decrease the amount of data returned inside a JSON object. This parameter should only be used to retrieve data. Attempting to update data using this parameter may cause data loss.</param> /// <param name="dataViewMode">{<see cref="Mozu.Api.DataViewMode"/>}</param> /// <param name="attributeInProductType">Properties of an attribute definition associated with a specific product type. When an attribute is applied to a product type, each product of that type maintains the same set of attributes.</param> /// <returns> /// <see cref="Mozu.Api.MozuClient" />{<see cref="Mozu.Api.Contracts.ProductAdmin.AttributeInProductType"/>} /// </returns> /// <example> /// <code> /// var mozuClient=AddProperty(dataViewMode, attributeInProductType, productTypeId, responseFields); /// var attributeInProductTypeClient = mozuClient.WithBaseAddress(url).Execute().Result(); /// </code> /// </example> public static MozuClient <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType> AddPropertyClient(DataViewMode dataViewMode, Mozu.Api.Contracts.ProductAdmin.AttributeInProductType attributeInProductType, int productTypeId, string responseFields = null) { var url = Mozu.Api.Urls.Commerce.Catalog.Admin.Attributedefinition.Producttypes.ProductTypePropertyUrl.AddPropertyUrl(productTypeId, responseFields); const string verb = "POST"; var mozuClient = new MozuClient <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType>() .WithVerb(verb).WithResourceUrl(url) .WithBody <Mozu.Api.Contracts.ProductAdmin.AttributeInProductType>(attributeInProductType).WithHeader(Headers.X_VOL_DATAVIEW_MODE, dataViewMode.ToString()) ; return(mozuClient); }
public void Exercise_10_2_Update_ProductTypes() { #region Add "Monogram" as an Extra //Create a new ProductType resource var producttypeResource = new Mozu.Api.Resources.Commerce.Catalog.Admin.Attributedefinition.ProductTypeResource(_apiContext); //Add Your Code: //Get product type filtered by name var typePurse = (producttypeResource.GetProductTypesAsync(filter: "name sw 'purse'").Result).Items[0]; //Create an Attribute resource var productAttributeResource = new Mozu.Api.Resources.Commerce.Catalog.Admin.Attributedefinition.AttributeResource(_apiContext); //In case you've forgotten about Product Attributes: //http://developer.mozu.com/content/api/APIResources/commerce/commerce.catalog/commerce.catalog.admin.attributedefinition.attributes.htm //Add Your Code: //Get a monogram attribute var attrMonogram = productAttributeResource.GetAttributeAsync("tenant~monogram").Result; //Add Your Code: //Create new object defining new extra var attributeInProductTypeMonogram = new Mozu.Api.Contracts.ProductAdmin.AttributeInProductType() { AttributeDetail = attrMonogram, AttributeFQN = attrMonogram.AttributeFQN, }; //Test if the Extra already exists if (typePurse.Extras.Find(x => x.AttributeFQN == "tenant~monogram") == null) { //Add Your Code: //Update product type with new extra typePurse.Extras.Add(attributeInProductTypeMonogram); //Update product type var updatedTypeMonogram = producttypeResource.UpdateProductTypeAsync(typePurse, (int)typePurse.Id).Result; } #endregion #region Add "Purse-Size" as an Option //Add Your Code: //Get a purse size attribute var attrSize = productAttributeResource.GetAttributeAsync("tenant~purse-size").Result; //Add Your Code: //Create new object defining new option var attributeInProductTypePurse = new Mozu.Api.Contracts.ProductAdmin.AttributeInProductType() { AttributeDetail = attrSize, AttributeFQN = attrSize.AttributeFQN, VocabularyValues = new List <Mozu.Api.Contracts.ProductAdmin.AttributeVocabularyValueInProductType>(), Order = 0 }; //Add Your Code: //Exclude "Alta" from sizes var doNotInclude = "Alta"; //A variable needed for Option types to providea hierarchical order for each value var sortOrder = 0; foreach (var value in attrSize.VocabularyValues) { if (!doNotInclude.ToLower().Contains(value.Content.StringValue.ToLower())) { attributeInProductTypePurse.VocabularyValues.Add(new Mozu.Api.Contracts.ProductAdmin.AttributeVocabularyValueInProductType { Value = value.Value, VocabularyValueDetail = value, Order = sortOrder++ }); } } //Test if the Option already exists if (typePurse.Options.Find(x => x.AttributeFQN == "tenant~purse-size") == null) { //update product type with new option typePurse.Options.Add(attributeInProductTypePurse); //update product type var updatedTypePurse = producttypeResource.UpdateProductTypeAsync(typePurse, (int)typePurse.Id).Result; } #endregion }