public async Task SaveAsync() { QuoteCacheRegion.ExpireQuote(_quoteRequest); var quoteDto = _quoteRequest.ToQuoteRequestDto(); if (_quoteRequest.IsTransient()) { await _quoteApi.CreateAsync(quoteDto); } else { await _quoteApi.UpdateAsync(quoteDto); } await _publisher.Publish(new QuoteRequestUpdatedEvent(_quoteRequest)); }
public async Task <IQuoteRequestBuilder> MergeFromOtherAsync(QuoteRequest quoteRequest) { _quoteRequest.Comment = quoteRequest.Comment; foreach (var quoteItem in quoteRequest.Items) { _quoteRequest.Items.Add(quoteItem); } if (quoteRequest.Addresses != null && quoteRequest.Addresses.Any()) { _quoteRequest.Addresses = quoteRequest.Addresses; } await _quoteApi.DeleteAsync(new[] { quoteRequest.Id }.ToList()); QuoteCacheRegion.ExpireQuote(_quoteRequest); return(this); }
public IQuoteRequestBuilder Update(QuoteRequestFormModel quoteRequest) { QuoteCacheRegion.ExpireQuote(_quoteRequest); _quoteRequest.Comment = quoteRequest.Comment; _quoteRequest.Status = quoteRequest.Status; _quoteRequest.Tag = quoteRequest.Tag; _quoteRequest.Addresses.Clear(); if (quoteRequest.BillingAddress != null) { _quoteRequest.Addresses.Add(quoteRequest.BillingAddress); } if (quoteRequest.ShippingAddress != null) { _quoteRequest.Addresses.Add(quoteRequest.ShippingAddress); } if (quoteRequest.Items != null) { foreach (var item in quoteRequest.Items) { var existingItem = _quoteRequest.Items.FirstOrDefault(i => i.Id == item.Id); if (existingItem != null) { existingItem.Comment = item.Comment; existingItem.SelectedTierPrice = new TierPrice(new Money(item.SelectedTierPrice.Price, _quoteRequest.Currency), item.SelectedTierPrice.Quantity); existingItem.ProposalPrices.Clear(); foreach (var proposalPrice in item.ProposalPrices) { existingItem.ProposalPrices.Add(new TierPrice(new Money(proposalPrice.Price, _quoteRequest.Currency), proposalPrice.Quantity)); } } } } return(this); }