public async Task <bool> UpdateAttributeRelationAsync(ProductAttributeRelationRequest request) { if (!request.AttributeRelationValues.Any()) { /// Delete product attribute and all attribute values await _productAttributeRelationValueRepository.Get(x => x.ProductAttributeRelationId == request.Id).DeleteAsync(); await _productAttributeRelationRepository.Get(x => x.Id == request.Id).DeleteAsync(); } var attributeRelationUpdated = await(_productAttributeRelationRepository .Get(x => x.Id == request.Id) .Set(x => x.IsRequired, request.IsRequired) .Set(x => x.ProductAttributeId, request.ProductAttributeId) .Set(x => x.TextPrompt, request.TextPrompt) .Set(x => x.DisplayOrder, request.DisplayOrder) .Set(x => x.AttributeControlTypeId, request.ControlTypeId) .UpdateAsync()); if (attributeRelationUpdated == 0) { return(false); } var attributeRelationValueIds = request.AttributeRelationValues.Where(x => x.Id != 0).Select(x => x.Id); await _productAttributeRelationValueRepository .Get(x => x.ProductAttributeRelationId == request.Id && x.Id.NotIn(attributeRelationValueIds)).DeleteAsync(); foreach (var attributeValue in request.AttributeRelationValues) { var isAttributeValueExist = attributeValue.Id != 0 && await _productAttributeRelationValueRepository .Get(x => x.Id == attributeValue.Id).AnyAsync(); if (!isAttributeValueExist) { await CreateAttributeRelationValueAsync(request.Id, attributeValue); } else { var attributeValueUpdated = await(_productAttributeRelationValueRepository .Get(x => x.Id == attributeValue.Id) .Set(x => x.PriceAdjustment, attributeValue.PriceAdjustment) .Set(x => x.PricePercentageAdjustment, attributeValue.PricePercentageAdjustment) .Set(x => x.Name, attributeValue.Name) .Set(x => x.Quantity, attributeValue.Quantity) .Set(x => x.DisplayOrder, attributeValue.DisplayOrder) .UpdateAsync()); } } return(true); }
public async Task CreateAttributeRelationAsync(ProductAttributeRelationRequest request) { var productAttributeRelationId = await _productAttributeRelationRepository.AddWithInt32EntityAsync(new ProductAttributeRelation { AttributeControlTypeId = request.ControlTypeId, DisplayOrder = request.DisplayOrder, IsRequired = request.IsRequired, ProductAttributeId = request.ProductAttributeId, ProductId = request.ProductId, TextPrompt = request.TextPrompt }); if (request.AttributeRelationValues.Any()) { foreach (var attributeValue in request.AttributeRelationValues) { await CreateAttributeRelationValueAsync(productAttributeRelationId, attributeValue); } } }