public override async Task <ProductDto> CreateAsync(CreateProductInputDto input) { // save val InfoInAnotherLanguage var infoInAnotherLanguagesDto = input.InfoInAnotherLanguages; var attributesDto = input.Attributes; input.InfoInAnotherLanguages = null; input.Attributes = null; var entity = ObjectMapper.Map <Product>(input); // Add iInfoInAnotherLanguage to Prodct foreach (var infoInAnotherLanguageDto in infoInAnotherLanguagesDto) { var infoInAnotherLanguage = new InfoInAnotherLanguage(); infoInAnotherLanguage.LanguageId = infoInAnotherLanguageDto.LanguageId; infoInAnotherLanguage.Title = infoInAnotherLanguageDto.Title; infoInAnotherLanguage.Description = infoInAnotherLanguageDto.Description; entity.InfoInAnotherLanguages.Add(infoInAnotherLanguage); } // Add iInfoInAnotherLanguage to Prodct foreach (var attributeDto in attributesDto) { var attribute = new Attribute(); attribute.Name = attributeDto.Name; attribute.Type = attributeDto.Type; attribute.StringValu = attributeDto.StringValu; attribute.NumberValu = attributeDto.NumberValu; attribute.DateValu = attributeDto.DateValu; attribute.BooleanValu = attributeDto.BooleanValu; entity.Attributes.Add(attribute); } await Repository.InsertAsync(entity); return(MapToEntityDto(entity)); }
public override async Task <ProductDto> UpdateAsync(UpdateProductInputDto input) { var productDb = GetEntityByIdAsync(input.Id); // save val InfoInAnotherLanguage var infoInAnotherLanguagesDto = input.InfoInAnotherLanguages; var attributesDto = input.Attributes; input.InfoInAnotherLanguages = null; input.Attributes = null; // Add or edit iInfoInAnotherLanguage to Prodct foreach (var infoInAnotherLanguageDto in infoInAnotherLanguagesDto) { if (productDb.Result.InfoInAnotherLanguages.Any(a => a.Id == infoInAnotherLanguageDto.Id)) { foreach (var infoInAnotherLanguageDb in productDb.Result.InfoInAnotherLanguages) { if (infoInAnotherLanguageDb.Id == infoInAnotherLanguageDto.Id) { infoInAnotherLanguageDb.LanguageId = infoInAnotherLanguageDto.LanguageId; infoInAnotherLanguageDb.Title = infoInAnotherLanguageDto.Title; infoInAnotherLanguageDb.Description = infoInAnotherLanguageDto.Description; } } } else { var infoInAnotherLanguage = new InfoInAnotherLanguage(); infoInAnotherLanguage.Id = infoInAnotherLanguageDto.Id; infoInAnotherLanguage.LanguageId = infoInAnotherLanguageDto.LanguageId; infoInAnotherLanguage.Title = infoInAnotherLanguageDto.Title; infoInAnotherLanguage.Description = infoInAnotherLanguageDto.Description; productDb.Result.InfoInAnotherLanguages.Add(infoInAnotherLanguage); } } // Add or edit attribute to Prodct foreach (var attributeDto in attributesDto) { if (productDb.Result.Attributes.Any(a => a.Id == attributeDto.Id)) { foreach (var attributeDb in productDb.Result.Attributes) { if (attributeDb.Id == attributeDto.Id) { attributeDb.Name = attributeDto.Name; attributeDb.Type = attributeDto.Type; attributeDb.StringValu = attributeDto.StringValu; attributeDb.NumberValu = attributeDto.NumberValu; attributeDb.DateValu = attributeDto.DateValu; attributeDb.BooleanValu = attributeDto.BooleanValu; } } } else { var attribute = new Attribute(); attribute.Name = attributeDto.Name; attribute.Type = attributeDto.Type; attribute.StringValu = attributeDto.StringValu; attribute.NumberValu = attributeDto.NumberValu; attribute.DateValu = attributeDto.DateValu; attribute.BooleanValu = attributeDto.BooleanValu; productDb.Result.Attributes.Add(attribute); } } await Repository.InsertOrUpdateAsync(productDb.Result); return(MapToEntityDto(productDb.Result)); }