public OrderResponseViewModel Get(Guid id, string memberId)
        {
            if (id == null)
            {
                throw CreateException(HttpStatusCode.BadRequest, "Invalid or Incomplete Order information", 101416);
            }
            try
            {
                var locale = Thread.CurrentThread.CurrentCulture.Name;
                var result = _iMobileOrderProvider.GetOrder(id, memberId, locale);
                if (result != null)
                {
                    var response = new OrderResponseViewModel {
                        Data = result
                    };

                    MobileActivityLogProvider.ActivityLog(response, response, memberId, true,
                                                          this.Request.RequestUri.ToString(),
                                                          this.Request.Headers.ToString(),
                                                          this.Request.Headers.UserAgent.ToString(),
                                                          locale);

                    return(response);
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(ex.ToString());
                throw CreateException(HttpStatusCode.InternalServerError,
                                      "Internal server errror searching for Get Orders" + ex.Message, 500);
            }
            var orderResponseViewModel3 = new OrderResponseViewModel {
                Data = null
            };

            MobileActivityLogProvider.ActivityLog(string.Empty, orderResponseViewModel3, memberId, true,
                                                  this.Request.RequestUri.ToString(),
                                                  this.Request.Headers.ToString(),
                                                  this.Request.Headers.UserAgent.ToString(),
                                                  Thread.CurrentThread.CurrentCulture.Name);

            return(orderResponseViewModel3);
        }
Example #2
0
 public async Task <ApiResult <OrderResponseViewModel> > CreateOrder(int userId, OrderRequestViewModel orderModel)
 {
     {
         OrderResponseViewModel model = null;
         try
         {
             SqlParameter UserId = new SqlParameter("@userId", System.Data.SqlDbType.Int)
             {
                 Value = userId
             };
             SqlParameter AddressId = new SqlParameter("@AddressId", System.Data.SqlDbType.Int)
             {
                 Value = orderModel.AddressId
             };
             SqlParameter PickUpSlotId = new SqlParameter("@PickUpSlotId", System.Data.SqlDbType.Int)
             {
                 Value = orderModel.PickUpSlotId
             };
             SqlParameter PickUpDate = new SqlParameter("@PickUpDate", System.Data.SqlDbType.DateTime)
             {
                 Value = orderModel.PickUpDate
             };
             SqlParameter DeliverDate = new SqlParameter("@DeliverDate", System.Data.SqlDbType.DateTime)
             {
                 Value = orderModel.DeliverDate
             };
             SqlParameter DeliverSlotId = new SqlParameter("@DeliverSlotId", System.Data.SqlDbType.Int)
             {
                 Value = orderModel.DeliverSlotId
             };
             SqlParameter DeliveryNote = new SqlParameter("@DeliveryNote", System.Data.SqlDbType.VarChar)
             {
                 Value = orderModel.DeliveryNote ?? (object)DBNull.Value
             };
             SqlParameter PaymentType = new SqlParameter("@PaymentType", System.Data.SqlDbType.Int)
             {
                 Value = orderModel.PaymentType ?? (object)DBNull.Value
             };
             SqlParameter ServiceId = new SqlParameter("@ServiceId", System.Data.SqlDbType.Int)
             {
                 Value = orderModel.ServiceId
             };
             var result = _context.ExecuteStoreProcedure("[CreateOrder]", UserId, AddressId, PickUpSlotId, PickUpDate, DeliverDate, DeliverSlotId, DeliveryNote, PaymentType, ServiceId);
             if (result.Tables.Count > 0 && result.Tables[0].Rows.Count > 0)
             {
                 foreach (System.Data.DataRow row in result.Tables[0].Rows)
                 {
                     model = new OrderResponseViewModel()
                     {
                         OrderId  = (row["OrderId"] != DBNull.Value) ? Convert.ToInt32(row["OrderId"]) : 0,
                         OrderRef = (row["InvoiceNo"] != DBNull.Value) ? Convert.ToString(row["InvoiceNo"]) : string.Empty
                     };
                 }
             }
         }
         catch (Exception ex)
         {
             ErrorTrace.Logger(LogArea.ApplicationTier, ex);
             return(new ApiResult <OrderResponseViewModel>(new ApiResultCode(ApiResultType.Error, 0, "No data in given request")));
         }
         return(new ApiResult <OrderResponseViewModel>(new ApiResultCode(ApiResultType.Success), model));
     }
 }
Example #3
0
        public OrderResponseViewModel RequestMobilePin(OrderRequestViewModel request)
        {
            string obj = JsonConvert.SerializeObject(request);
            List <ValidationErrorViewModel> errors = null;

            request.Data.OrderMemberId = string.IsNullOrEmpty(request.Data.OrderMemberId) && !string.IsNullOrEmpty(request.Data.CustomerId) ? request.Data.CustomerId : request.Data.OrderMemberId;
            var viewModel    = request.Data;
            var shoppingcart = _mobileQuoteHelper.PriceCart(ref viewModel, ref errors);
            var quickPayresponseviewModel = new OrderResponseViewModel();

            if (null != errors && errors.Any())
            {
                quickPayresponseviewModel.ValidationErrors = errors;
                return(quickPayresponseviewModel);
            }
            var     orderTotalsV01 = shoppingcart.Totals as ServiceProvider.OrderSvc.OrderTotals_V01;
            var     orderTotalsV02 = shoppingcart.Totals as ServiceProvider.OrderSvc.OrderTotals_V02;
            decimal amount;
            var     order = _mobileQuickPayController.Getorder(viewModel, ref errors, orderTotalsV02, orderTotalsV01,
                                                               out amount);
            var ordernumber = order.OrderID;

            if (string.IsNullOrWhiteSpace(ordernumber))
            {
                ordernumber = _mobileQuickPayController.GetOrderNumber(amount, shoppingcart.CountryCode, shoppingcart.DistributorID);
            }

            //Order_V01 order, string ordernumber, MyHLShoppingCart cart
            var cn99BillQuickPayProvider = new CN_99BillQuickPayProvider();
            var hasrequestedmobilepin    = cn99BillQuickPayProvider.RequestMobilePinForPurchase(ordernumber, order, shoppingcart, request.Data.MemberId);

            if (hasrequestedmobilepin)
            {
                var quickPayPaymentViewModel = request.Data.Payments[0] as QuickPayPaymentViewModel;
                if (quickPayPaymentViewModel != null)
                {
                    quickPayPaymentViewModel.StorablePAN = cn99BillQuickPayProvider.StorablePAN;
                    quickPayPaymentViewModel.Token       = cn99BillQuickPayProvider.Token;
                }

                viewModel.OrderNumber = ordernumber;
            }

            if (!string.IsNullOrEmpty(cn99BillQuickPayProvider.LastErrorMessage))
            {
                if (errors == null)
                {
                    errors = new List <ValidationErrorViewModel>();
                }

                errors.Add(new ValidationErrorViewModel {
                    Code = 126000, Reason = cn99BillQuickPayProvider.LastErrorMessage
                });
            }

            quickPayresponseviewModel.Data = viewModel;

            if (null != errors && errors.Any())
            {
                quickPayresponseviewModel.ValidationErrors = errors;
            }

            JObject json = JObject.Parse(obj);

            MobileActivityLogProvider.ActivityLog(json, quickPayresponseviewModel, request.Data.MemberId, true,
                                                  this.Request.RequestUri.ToString(),
                                                  this.Request.Headers.ToString(),
                                                  this.Request.Headers.UserAgent.ToString(),
                                                  request.Data.Locale);

            return(quickPayresponseviewModel);
        }
        public OrderResponseViewModel Put(OrderRequestViewModel request)
        {
            if (request == null || request.Data.OrderItems == null)
            {
                throw CreateException(HttpStatusCode.BadRequest, "Invalid or Incomplete Order information", 101416);
            }
            string obj = JsonConvert.SerializeObject(request);

            SetOrderMemberId(request.Data);
            request.Data.Locale = Thread.CurrentThread.CurrentCulture.Name;

            //Logging the bare request before it gets modified as it is a reference type
            //MobileActivityLogProvider.ActivityLog(request, null, request.Data.MemberId, true,
            //            this.Request.RequestUri.ToString(),
            //            this.Request.Headers.ToString(),
            //            this.Request.Headers.UserAgent.ToString(),
            //            request.Data.Locale);


            var orderNumber      = string.Empty;
            var isOrderSubmitted = false;

            if (_mobileQuoteHelper.CheckIfAnyOrderInProcessing(request.Data.MemberId, request.Data.Locale,
                                                               ref orderNumber, ref isOrderSubmitted, request.Data.OrderNumber))
            {
                throw CreateException(HttpStatusCode.NotAcceptable,
                                      "order still processing", 110406, orderNumber);
            }

            var authToken = Guid.Empty;

            if (null != Request && null != Request.Headers && Request.Headers.Any())
            {
                if (Request.Headers.Contains("X-HLUSER-TOKEN"))
                {
                    var authTokenValue = Request.Headers.GetValues("X-HLUSER-TOKEN").FirstOrDefault();
                    if (!string.IsNullOrEmpty(authTokenValue))
                    {
                        Guid.TryParse(authTokenValue, out authToken);
                    }
                }
            }

            var response = new OrderResponseViewModel();
            List <ValidationErrorViewModel> errors = null;
            var result = _iMobileOrderProvider.Submit(request.Data, ref errors, authToken, request.Data.MemberId);

            if (result != null)
            {
                response.Data             = result;
                response.ValidationErrors = null != errors && errors.Any() ? errors : null;
                JObject json = JObject.Parse(obj);
                MobileActivityLogProvider.ActivityLog(json, response, request.Data.MemberId, true,
                                                      this.Request.RequestUri.ToString(),
                                                      this.Request.Headers.ToString(),
                                                      this.Request.Headers.UserAgent.ToString(),
                                                      request.Data.Locale);

                return(response);
            }

            return(new OrderResponseViewModel {
                Data = null
            });
        }
        public OrderResponseViewModel Post([FromBody] OrderRequestViewModel request)
        {
            if (request == null)
            {
                throw CreateException(HttpStatusCode.BadRequest, "Invalid or Incomplete Order information", 101416);
            }
            try
            {
                string obj = JsonConvert.SerializeObject(request);
                request.Data.Locale = Thread.CurrentThread.CurrentCulture.Name;
                SetOrderMemberId(request.Data);
                var response = new OrderResponseViewModel();
                List <ValidationErrorViewModel> errors = null;
                var result = _iMobileOrderProvider.Save(request.Data, ref errors);
                if (result != null)
                {
                    response.Data             = result;
                    response.ValidationErrors = null != errors && errors.Any() ? errors : null;
                    JObject json = JObject.Parse(obj);
                    MobileActivityLogProvider.ActivityLog(json, response, request.Data.CustomerId, true,
                                                          this.Request.RequestUri.ToString(),
                                                          this.Request.Headers.ToString(),
                                                          this.Request.Headers.UserAgent.ToString(),
                                                          request.Data.Locale);

                    return(response);
                }

                if (result != null)
                {
                    var orderResponseViewModel = new OrderResponseViewModel {
                        Data = request.Data
                    };
                    JObject json1 = JObject.Parse(obj);
                    MobileActivityLogProvider.ActivityLog(json1, orderResponseViewModel, request.Data.CustomerId, true,
                                                          this.Request.RequestUri.ToString(),
                                                          this.Request.Headers.ToString(),
                                                          this.Request.Headers.UserAgent.ToString(),
                                                          request.Data.Locale);

                    return(orderResponseViewModel);
                }
            }
            catch (Exception ex)
            {
                LoggerHelper.Error(ex.ToString());
                throw CreateException(HttpStatusCode.InternalServerError,
                                      "Internal server errror searching for Submit Order" + ex.Message, 404);
            }
            var orderResponseViewModel2 = new OrderResponseViewModel {
                Data = null
            };

            MobileActivityLogProvider.ActivityLog(request, orderResponseViewModel2, request.Data.CustomerId, true,
                                                  this.Request.RequestUri.ToString(),
                                                  this.Request.Headers.ToString(),
                                                  this.Request.Headers.UserAgent.ToString(),
                                                  request.Data.Locale);

            return(orderResponseViewModel2);
        }