Exemplo n.º 1
0
        public async Task <IQuoteRequestBuilder> LoadQuoteRequestAsync(string number, Language language, IEnumerable <Currency> availCurrencies)
        {
            var quoteRequest = await _quoteApi.QuoteModuleGetByIdAsync(number);

            if (quoteRequest == null)
            {
                throw new StorefrontException("Quote request for number " + number + " not found");
            }
            _quoteRequest = quoteRequest.ToWebModel(availCurrencies, language);

            return(this);
        }
        private async Task <QuoteRequest> GetCustomerQuoteRequestByIdAsync(string id)
        {
            var result = await _quoteApi.QuoteModuleGetByIdAsync(id);

            if (WorkContext.CurrentCustomer.Id != result.CustomerId)
            {
                throw new StorefrontException("Requested quote not belongs to current user");
            }

            return(result != null?result.ToWebModel(WorkContext.AllCurrencies, WorkContext.CurrentLanguage) : null);
        }
Exemplo n.º 3
0
        public async Task <IQuoteRequestBuilder> GetOrCreateNewTransientQuoteRequestAsync(Store store, CustomerInfo customer, Language language, Currency currency)
        {
            var cacheKey = GetQuoteRequestCacheKey(store.Id, customer.Id);

            _quoteRequest = await _cacheManager.GetAsync(cacheKey, _quoteRequestCacheRegion, async() =>
            {
                QuoteRequest quoteRequest     = null;
                var activeQuoteSearchCriteria = new VirtoCommerceDomainQuoteModelQuoteRequestSearchCriteria
                {
                    Tag        = "actual",
                    CustomerId = customer.Id,
                    StoreId    = store.Id
                };
                var searchResult = await _quoteApi.QuoteModuleSearchAsync(activeQuoteSearchCriteria);
                quoteRequest     = searchResult.QuoteRequests.Select(x => x.ToWebModel(store.Currencies, language)).FirstOrDefault();
                if (quoteRequest == null)
                {
                    quoteRequest            = new QuoteRequest(currency, language);
                    quoteRequest.Currency   = currency;
                    quoteRequest.CustomerId = customer.Id;
                    quoteRequest.Language   = language;
                    quoteRequest.Status     = "New";
                    quoteRequest.StoreId    = store.Id;
                    quoteRequest.Tag        = "actual";

                    if (!customer.IsRegisteredUser)
                    {
                        quoteRequest.CustomerName = StorefrontConstants.AnonymousUsername;
                    }
                    else
                    {
                        quoteRequest.CustomerName = string.Format("{0} {1}", customer.FirstName, customer.LastName);
                    }
                }
                else
                {
                    quoteRequest = (await _quoteApi.QuoteModuleGetByIdAsync(quoteRequest.Id)).ToWebModel(store.Currencies, language);
                }

                quoteRequest.Customer = customer;

                return(quoteRequest);
            });

            return(this);
        }