示例#1
0
        public virtual Order CreateOrder(Session session, Basket basket, pci.BasketStatus basketStatus, string clientIpAddress, string languageId, string micrositeId)
        {
            try
            {
                Guid?currencyId        = new Guid(session.CurrencyId);
                var  currency          = CurrencyRepository.GetSingle(x => x.Id.Equals(currencyId));
                var  micrositeCurrency = GetCurrencyFromMicrositeId(micrositeId);
                var  user = UserRepository.GetSingle(x => x.Id == basket.UserId);

                var order = new Order
                {
                    PaymentMethod                 = basketStatus.card.type,
                    NumbViewPdf                   = 0,
                    OpenForPrinting               = true,
                    DatePdfLastViewed             = DateTime.Now,
                    UserId                        = user.Id,
                    UserName                      = user.Firstname + " " + user.Lastname,
                    EmailAddress                  = string.IsNullOrWhiteSpace(user.FriendlyEmail) ? user.Email : user.FriendlyEmail,
                    CurrencyId                    = currencyId,
                    LanguageId                    = languageId,
                    Total                         = basket.Total,
                    CcLast4Digits                 = basketStatus.card.number,
                    ClientIp                      = clientIpAddress,
                    WorldPayMerchantId            = basketStatus.merchant.merchantId,
                    GatewayReference              = basketStatus.merchant.gatewayref,
                    NameOnCard                    = basketStatus.card.name,
                    BasketId                      = basket.Id,
                    SessionId                     = session.Id,
                    TotalQuantity                 = basket.BasketLines.Sum(x => x.TicketQuantity),
                    IsMobileAppOrder              = false, //check how this is populated on old system.
                    DateCreated                   = LocalizationService.GetLocalDateTime(micrositeId),
                    FromNewCheckout               = true,
                    PurchaseMicrosite             = micrositeId,
                    PurchaseMicrositeCurrencyCode = micrositeCurrency.ISOCode
                };

                //populate order lines with existing baskets.
                foreach (var basketLine in basket.BasketLines)
                {
                    order.OrderLines.Add(ConvertBasketLineToOrderLine(basketLine, order.Id));
                }

                OrderRepository.Add(order);

                order.User     = user;
                order.Currency = currency;

                return(order);
            }
            catch (Exception ex)
            {
                Log(string.Format("Order Create Failed sessionid: {0} basketid:{1} {2} ", session.Id, basket.Id, ex.Message));
                return(null);
            }
        }
        private void LoadBasket()
        {
            //make sure we have a valid session
            if (CurrentSession == null || CurrentSession.BasketId == null || CurrentSession.BasketId == Guid.Empty)
            {
                GoToErrorPage(GetTranslation("Session_Details_NotFound"), "Session not found in Session");
                return;
            }

            _basketId = CurrentSession.BasketId.ToString();

            if (string.IsNullOrEmpty(_basketId))
            {
                _basketId = AuthenticationService.GetBasketIdFromCookie(BasketCookieName);
                GoToErrorPage(GetTranslation("Session_Basket_NotFound"), "Basket Id not found in Session Id:" + _basketId);
                return;
            }

            Log("Retrieving basket with id:" + _basketId);
            _basket = BasketService.GetBasket(new Guid(_basketId));
        }