public async Task<ActionResult> Success(FeedbackViewModel model)
        {
            var user = Session["user"] as User ?? new User();

            var order = new Order
            {
                Amount = SessionCart.Total,
                OrderId = model.OrderId,
                UserId = user.UserId,
                PayId = model.PayId,
                Status = model.Status,
                Currency = model.Currency,
                Quantity = SessionCart.Products.Count,
                TrxDate = DateTime.ParseExact(model.TrxDate, "MM/dd/yy", CultureInfo.InvariantCulture)
            };
            if (!await ApiHelpers.SaveAsync(order, "api/orders")) return RedirectToAction("UnexpectedError", "Errors");
            SessionCart.Clear();
            return View(order);
        }
 public void SaveOrder(Order order)
 {
     _repository.Save(order);
 }
 private string GetOrderStatus(Order order)
 {
     var request = new OrderQueryRequest {PayId = order.PayId, PspId = ConfigurationUtil.PspId, UserId = ConfigurationUtil.DirectUserName, Pswd = ConfigurationUtil.DirectPassword};
     var response = ApiHelpers.GetOrderQuery(ConfigurationUtil.DirectQuery, request);
     return response.Status;
 }
        public async Task<ActionResult> DirectCheckOut(ProductsViewModel model)
        {
            model = await GetProductViewModelAsync(model);

            if (!ModelState.IsValid)
            {
                return View("DirectCheckout", model);
            }

            var request = new OrderDirectRequest
                {
                    Amount = model.Amount,
                    CardNo = model.CardNumber,
                    Currency = ConfigurationUtil.DefaultCurrency,
                    Cvc = model.Cvc,
                    Ed = model.ExpiryDate,
                    Operation = ConfigurationUtil.DefaultOperation,
                    OrderId = model.OrderId,
                    PspId = ConfigurationUtil.PspId,
                    Pswd = ConfigurationUtil.DirectPassword,
                    UserId = ConfigurationUtil.DirectUserName,
                    Cn = model.CurrentUser.FullName,
                    Pm = model.PaymentMethod,
                    Brand = model.Brand
                };

            if (model.StoreFinancialData)
            {
                var wallet = CreateWallet(model);
                if (!await ApiHelpers.SaveAsync(wallet, "api/wallet")) return RedirectToAction("UnexpectedError", "Errors");
                request.Alias = wallet.WalletId;
            }

            var response = await ApiHelpers.PostOrderDirectAsync(ConfigurationUtil.DirectOrder, request);
            if (response.Status != "5")
            {
                ModelState.AddModelError("feedback",
                                         string.Format("Error while processing order: {0}",
                                                       OrderStatus.Instance[response.Status]));
                return View(model);
            }

            var order = new Order
                {
                    Amount = model.Cart.Total,
                    OrderId = model.OrderId,
                    UserId = model.CurrentUser.UserId,
                    CardBrand = response.Brand,
                    CardNo = response.CardNo,
                    Currency = response.Currency,
                    PayId = response.PayId,
                    Quantity = model.Cart.Products.Count,
                    Status = response.Status,
                    TrxDate = DateTime.Now
                };

            if (!await ApiHelpers.SaveAsync(order, "api/orders")) return RedirectToAction("UnexpectedError", "Errors");

            SessionCart.Clear();

            return View("Success", order);
        }
 public OrderHistoryEntry(Order order, OrderHistoryType type)
 {
     Order = order;
     Type = type;
 }