public MobileResponseWrapper Get([FromUri] OrderSearchParameter query)
        {
            try
            {
                if (query == null)
                {
                    throw CreateException(HttpStatusCode.BadRequest, "Invalid or Incomplete Order information", 101416);
                }
                string obj = JsonConvert.SerializeObject(query);
                query.Locale = Thread.CurrentThread.CurrentCulture.Name;

                var result = _mobileOrderSummaryProvider.GetOrders(query);
                if (result != null)
                {
                    if (!string.IsNullOrEmpty(query.OrderNumber))
                    {
                        result = result.FindAll(r => r.OrderNumber == query.OrderNumber);
                    }
                    var response = new MobileResponseWrapper
                    {
                        Data =
                            new OrdersResponseViewModel
                        {
                            Orders      = result,
                            RecordCount = result != null && result.Any() ? result.Count : 0
                        }
                    };
                    JObject json = JObject.Parse(obj);
                    MobileActivityLogProvider.ActivityLog(json, response, query.MemberId, true,
                                                          this.Request.RequestUri.ToString(),
                                                          this.Request.Headers.ToString(),
                                                          this.Request.Headers.UserAgent.ToString(),
                                                          query.Locale);

                    return(response);
                }

                if (!string.IsNullOrEmpty(query.OrderNumber))
                {
                    var cartId         = 0;
                    var orderViewModel = _iMobileOrderProvider.GetOrderByOrderNumber(query.OrderNumber, query.MemberId,
                                                                                     query.Locale, ref cartId);

                    if (null != orderViewModel)
                    {
                        var mobResponseWrapper = new MobileResponseWrapper
                        {
                            Data =
                                new OrdersResponseViewModel
                            {
                                Orders = new List <OrderViewModel> {
                                    orderViewModel
                                },
                                RecordCount = 1
                            }
                        };
                        JObject json1 = JObject.Parse(obj);
                        MobileActivityLogProvider.ActivityLog(json1, mobResponseWrapper, query.MemberId, true,
                                                              this.Request.RequestUri.ToString(),
                                                              this.Request.Headers.ToString(),
                                                              this.Request.Headers.UserAgent.ToString(),
                                                              query.Locale);

                        return(mobResponseWrapper);
                    }
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(ex.ToString());
                throw CreateException(HttpStatusCode.InternalServerError,
                                      "Internal server errror searching for Get Orders" + ex.Message, 404);
            }
            var responseWrapper = new MobileResponseWrapper
            {
                Data = new OrdersResponseViewModel {
                    Orders = null, RecordCount = 0
                }
            };

            MobileActivityLogProvider.ActivityLog(query, responseWrapper, query.MemberId, true,
                                                  this.Request.RequestUri.ToString(),
                                                  this.Request.Headers.ToString(),
                                                  this.Request.Headers.UserAgent.ToString(),
                                                  query.Locale);

            return(responseWrapper);
        }
Beispiel #2
0
        public List <OrderViewModel> GetOrders(OrderSearchParameter request)
        {
            List <OrderViewModel> result = null;

            #region validation

            if (string.IsNullOrWhiteSpace(request.Locale) || string.IsNullOrWhiteSpace(request.MemberId))
            {
                return(result);
            }

            #endregion

            var countryCode = request.Locale.Substring(3, 2);
            var localNow    = DateUtils.GetCurrentLocalTime(countryCode);

            var defaultStartDate = localNow.AddMonths(-12);
            var defaultEndDate   = localNow;

            DateTime startDate = request.From ?? defaultStartDate;
            DateTime endDate   = request.To ?? defaultEndDate;

            if (!string.IsNullOrEmpty(request.OrderNumber))
            {
                var orderViewmodelsByOrderNumber = new List <OrderViewModel>();
                var orders = GetOrdersByOrderNumber(request.MemberId, request.Locale, request.OrderNumber, startDate,
                                                    endDate);
                var addressGuid = Guid.Empty;
                var country     = string.Empty;
                if (null != orders && orders.Any())
                {
                    if (orders.Count == 1)
                    {
                        var mobileQuoteHelper = new MobileQuoteHelper();
                        var shoppingCart      = mobileQuoteHelper.GetShoppingCart(request.OrderNumber, Guid.Empty);
                        if (null != shoppingCart && shoppingCart.DeliveryOption == DeliveryOptionType.Shipping)
                        {
                            var addressId = shoppingCart.ShippingAddressID;
                            if (addressId > 0)
                            {
                                var shippingProvider =
                                    ShippingProvider.GetShippingProvider(countryCode);
                                if (null != shippingProvider)
                                {
                                    var address = shippingProvider.GetShippingAddressFromAddressGuidOrId(Guid.Empty,
                                                                                                         addressId);
                                    addressGuid = null != address ? address.AddressId : Guid.Empty;
                                    country     = null != address && null != address.Address
                                        ? address.Address.Country
                                        : string.Empty;
                                }
                            }
                        }
                    }
                    orderViewmodelsByOrderNumber.AddRange(
                        orders.Select(
                            item => ModelConverter.ConvertShoppingCartViewToOrderViewModel(item, request.Locale)));
                    if (addressGuid != Guid.Empty && null != orderViewmodelsByOrderNumber &&
                        orderViewmodelsByOrderNumber.Any() && orderViewmodelsByOrderNumber.Count == 1 &&
                        null != orderViewmodelsByOrderNumber[0].Shipping &&
                        null != orderViewmodelsByOrderNumber[0].Shipping.Address)
                    {
                        orderViewmodelsByOrderNumber[0].Shipping.Address.CloudId = addressGuid;
                        orderViewmodelsByOrderNumber[0].Shipping.Address.Country = country;
                        if (request.Locale == "zh-CN")
                        {
                            orderViewmodelsByOrderNumber[0].Shipping.FreightVariant =
                                GetFreightVariant(orderViewmodelsByOrderNumber[0].Shipping.DeliveryType);
                        }
                    }
                }
                return(orderViewmodelsByOrderNumber);
            }
            List <MyHLShoppingCartView> orderList;
            var shoppingCartView  = new MyHLShoppingCartView();
            var customerProfileId =
                DistributorOrderingProfileProvider.GetProfile(request.MemberId, countryCode).CNCustomorProfileID;

            //var proposedStartDate = DateTime.Now.AddMonths(-6);
            //DateTime startDate = new DateTime(proposedStartDate.Year, proposedStartDate.Month, proposedStartDate.Day); //ensure the time is the start of the day, which is 00:00:00
            //DateTime endDate = DateTime.Now;

            orderList = shoppingCartView.GetOrdersWithDetail(request.MemberId, customerProfileId, request.Locale,
                                                             startDate, endDate, OrderStatusFilterType.All, "", "");

            if (orderList != null)
            {
                if (request.PageSize > 0 && orderList.Any())
                {
                    var paged = orderList.Skip((request.PageNumber) * request.PageSize).Take(request.PageSize);
                    if (null != paged && paged.Any())
                    {
                        orderList = paged.ToList();
                    }
                    else
                    {
                        orderList = new List <MyHLShoppingCartView>();
                    }
                }

                result = new List <OrderViewModel>();

                foreach (var itm in orderList)
                {
                    var newItem = ModelConverter.ConvertShoppingCartViewToOrderViewModel(itm, request.Locale);
                    result.Add(newItem);
                }
            }

            return(result);
        }