示例#1
0
        /// <summary>
        ///     Update an order from the backend
        /// </summary>
        /// <param name="model">UserOrderViewModel</param>
        /// <param name="selectedProduct">List of selected products as strings</param>
        /// <param name="orderToEdit">Identification of the order to edit</param>
        /// <returns>Actionresult that should go back to OrderOverview</returns>
        public IActionResult Update(UserOrderViewModel model, List <string> selectedProduct, int orderToEdit)
        {
            var orderToUpdate = orderRepo.RetrieveOrderById(orderToEdit);
            var itemsToOrder  = new List <CartItem>();

            //Create cartitems
            foreach (var item in selectedProduct)
            {
                var product  = productRepo.RetrieveProductByName(item);
                var cartItem = new CartItem(1);
                cartItem.Product  = product;
                cartItem.Quantity = 1;
                itemsToOrder.Add(cartItem);
            }

            //New order to update the old one
            var newOrder = new Order(orderToUpdate.RetrieveCustomer(), orderToUpdate.OrderDetails, orderToUpdate.RetrieveOrderId(), itemsToOrder);

            newOrder.SendAddress = model.SendAddress;
            newOrder.SendPlace   = model.SendPlace;
            newOrder.SendZipcode = model.SendZipcode;

            if (orderRepo.UpdateOrder(newOrder) == true)
            {
                return(RedirectToAction("Overview", "Order"));
            }
            return(RedirectToAction("Single", "Order"));
        }
示例#2
0
        /// <summary>
        ///     Create order
        /// </summary>
        /// <param name="model">UserViewModel</param>
        /// <param name="selectedProduct">Product</param>
        /// <returns>IAction</returns>
        public IActionResult CreateOrderAdmin(UserOrderViewModel model, List <string> selectedProduct)
        {
            var selectedUser = userRepo.RetrieveUserByUsername(model.Username);

            if (selectedUser == null)
            {
                RedirectToAction("Dashboard", "Home");
            }
            var itemsToOrder = new List <CartItem>();

            //Create cartitems
            foreach (var item in selectedProduct)
            {
                var product  = productRepo.RetrieveProductByName(item);
                var cartItem = new CartItem(1);
                cartItem.Product  = product;
                cartItem.Quantity = 1;
                itemsToOrder.Add(cartItem);
            }

            if (model.OrderDescription == null)
            {
                model.OrderDescription = "No description";
            }

            var order = new Order(selectedUser, model.OrderDescription, 1, itemsToOrder);

            order.SendAddress = model.SendAddress;
            order.SendZipcode = model.SendZipcode;
            order.SendPlace   = model.SendPlace;
            orderRepo.CreateNewOrder(order);

            return(RedirectToAction("Overview", "Order"));
        }
示例#3
0
        public async Task <IActionResult> Index([FromRoute] int userId)
        {
            // This is an async function, but "await" is never used
            // Trying to figure out which part of this call is await-able
            // and where to do it in the LINQ call
            // Or does this even need to BE async??? We may never know

            var productsOnOrder =
                from ord in context.Order
                join uid in context.User on ord.UserId equals uid.UserId
                join op in context.OrderProduct on ord.OrderId equals op.OrderId
                join prod in context.Product on op.ProductId equals prod.ProductId
                where ord.UserId == 3 &&
                ord.PaymentTypeId == null &&
                prod.Sold == false
                select prod;

            UserOrderViewModel uorder = new UserOrderViewModel();

            uorder.Product = productsOnOrder;

            if (productsOnOrder == null)
            {
                // This is where we could build a new ViewModel for when the user's cart is empty
                // All of the logic for an empty order view will be within this IF block
                // In pseudo-code,, it might be something like...

                // EmptyOrderViewModel emptyOrder = new EmptyOrderViewModel();
                // emptyOrder.message = "The user's cart is empty!";
                // return View(emptyOrder);

                return(View());
            }
            return(View(uorder));
        }
示例#4
0
        public UserOrderViewModel CheckForLoggedInUserForOrder()
        {
            try
            {
                var objComplex = HttpContext.Session.GetObjectFromJson <UserViewModel>("ComplexObject");

                //Set up automapping
                var mapper = mapextension.UserViewModelToUserOrderViewModel();
                UserOrderViewModel model = mapper.Map <UserOrderViewModel>(objComplex);
                model.PaymentMethods = new List <PaymentMethodViewModel>();

                foreach (Payment p in paymentRepo.RetrieveAllPayments())
                {
                    PaymentMethodViewModel pmodel = new PaymentMethodViewModel();
                    pmodel.PaymentMethodId   = p.RetrieveID();
                    pmodel.PaymentMethodName = p.RetrieveName();
                    model.PaymentMethods.Add(pmodel);
                }

                return(model);
            }
            catch (NullReferenceException e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine("No session set");
            }

            return(null);
        }
示例#5
0
文件: Order.cs 项目: ncelsRS/ptp
 public Order(UserOrderViewModel model)
 {
     TradeId = model.OfferId;
     Volume  = model.Volume;
     BuyerId = model.SelectedContragent;
     Price   = model.Price;
 }
        IEnumerable <UserOrderViewModel> GetAllUserTransactions()
        {
            var viewModels = new List <UserOrderViewModel>();

            using (FoodOrderEntities db = new FoodOrderEntities())
            {
                var innerjoin = db.Orders.Join(
                    db.Users.Where(x => x.username != "admin"),
                    o => o.userId,
                    u => u.userId,
                    (o, u) => new
                {
                    username   = u.username,
                    transId    = o.transId,
                    totalPrice = o.totalPrice,
                    dateTime   = o.dateTime
                }).ToList();
                foreach (var item in innerjoin)
                {
                    UserOrderViewModel viewModel = new UserOrderViewModel
                    {
                        user  = new User(),
                        order = new Order()
                    };
                    viewModel.user.username    = item.username;
                    viewModel.order.transId    = item.transId;
                    viewModel.order.dateTime   = item.dateTime;
                    viewModel.order.totalPrice = item.totalPrice;
                    viewModels.Add(viewModel);
                }
                return(viewModels);
            }
        }
示例#7
0
        public IActionResult UserIndex()
        {
            var orders = context.Orders
                         .Include(o => o.Cashier)
                         .Include(o => o.Product)
                         .Include(o => o.OrderStatus)
                         .Where(o => o.Cashier.Username == this.Identity.Username && o.OrderStatus.Name == "Active")
                         .ToList();

            List <UserOrderViewModel> userOrdersViewModels = new List <UserOrderViewModel>();
            decimal total = 0;

            foreach (Order order in orders)
            {
                var userOrderViewModel = new UserOrderViewModel()
                {
                    Id       = order.Id,
                    Name     = order.Product.Name,
                    Price    = order.Product.Price,
                    Quantity = order.Quantity,
                };
                total += order.Product.Price * order.Quantity;

                userOrdersViewModels.Add(userOrderViewModel);
            }

            this.Model["Orders"] = userOrdersViewModels;
            this.Model["Total"]  = total;

            return(this.View());
        }
示例#8
0
        /// <summary>
        ///     Opens the single page for an order with data to edit
        /// </summary>
        /// <param name="orderToEdit"></param>
        /// <returns></returns>
        public IActionResult SingleEdit(int orderToEdit)
        {
            var order     = orderRepo.RetrieveOrderById(orderToEdit);
            var mapperOne = mapextension.OrdertoUserOrderViewModel();

            UserOrderViewModel model = mapperOne.Map <UserOrderViewModel>(order);

            model.ShoppingCart             = new ShoppingCartViewModel();
            model.ShoppingCart.cartId      = 1;
            model.ShoppingCart.ItemsInCart = new List <CartItemViewModel>();
            model.ProductsInSystem         = new List <ProductOverviewViewModel>();

            foreach (var c in order.RetrieveItemsInOrder())
            {
                CartItemViewModel cmodel = new CartItemViewModel();
                cmodel.Quantity = c.Quantity;
                var mapper         = mapextension.CartItemToProductViewModel();
                ProductViewModel p = mapper.Map <ProductViewModel>(c);
                cmodel.Product = p;
                model.ShoppingCart.ItemsInCart.Add(cmodel);
            }
            foreach (Product p in productRepo.RetrieveAllProducts())
            {
                ProductOverviewViewModel pmodel = new ProductOverviewViewModel();
                pmodel.ProductId   = p.RetrieveProductId();
                pmodel.ProductName = p.ProductName;
                model.ProductsInSystem.Add(pmodel);
            }
            return(View("SingleOrder", model));
        }
示例#9
0
        public async Task <ActionResult> Order(UserOrderViewModel model)
        {
            try
            {
                var offer = Db.Trades.Find(model.OfferId);
                if (offer == null)
                {
                    logger.Info("Какой-то чмошник что-то чудит");
                    throw new ArgumentNullException("lot", "Bet must not be empty");
                }
                var user = UserManager.FindById(User.Identity.GetUserId());

                tradeDataLayer.CheckOfferOnOrder(user, model, offer);
                var order = new Order(model);
                Db.Insert(order, user.Id);
                offer.Buyers.Add(order.Buyer);
                Db.UpdateEntity(offer, user.Id);


                foreach (var u in offer.Orders.GroupBy(c => c.Buyer).SelectMany(f => f.Key.ContragentUsers).ToList())
                {
                    await hub.UpdateTradeTable(offer.Id, u.UserName);
                }
                foreach (var u in offer.Seller.ContragentUsers.ToList())
                {
                    await hub.UpdateTradeTable(offer.Id, u.UserName);

                    EmailFactory.SendEmailAsync(new NewReplyToOffer(u, order));
                }

                return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
            }
            catch (ArgumentOutOfRangeException ex)
            {
                logger.Error(ex);
                return
                    (Json(new
                {
                    success = false,
                    error = $"{LocalText.Inst.Get("error", "VolumeTooMuch", "Зменшіть об’єм Вашої заявки", "Уменьшите объем Вашей заявки")} {GetFullErrorMessage(ex)}"
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                return
                    (Json(new
                {
                    success = false,
                    error = $"{LocalText.Inst.Get("error", "errorBet", "Відбулася помилка", "Произошла ошибка")} {GetFullErrorMessage(ex)}"
                }, JsonRequestBehavior.AllowGet));
            }
        }
        public async Task <IActionResult> Index()
        {
            string userId     = _userManager.GetUserId(User);
            var    orderItems = await _orderService.GetByUserIdAsync(userId);

            var orderDates = new List <string>();
            var ratings    = new List <RatingDto>(); //
            var toComment  = new List <string>();    // yes, no olsun

            // orderitemları sırala bir önceki ile aynı ise ekleme değilse ekle
            //orderItems = orderItems.OrderBy(p => p.ProductId).ToList();

            for (int i = 0; i < orderItems.Count; i++)
            {
                if (i == 0)
                {
                    toComment.Add("yes");
                }
                else if (!orderItems[i].ProductId.Equals(orderItems[i - 1].ProductId))
                {
                    toComment.Add("yes");
                }
                else
                {
                    toComment.Add("no");
                }
            }
            foreach (var item in orderItems)
            {
                var date = item.Order.OrderDate.ToString("dd MMMM yyyy | HH:mm", CultureInfo.CreateSpecificCulture("tr"));
                orderDates.Add(date);
                var rating = await _ratingService.SingleOrDefaultAsync(p => p.OrderItemId == item.Id);

                if (rating == null)
                {
                    ratings.Add(new RatingDto());
                }
                else
                {
                    ratings.Add(_mapper.Map <RatingDto>(rating));
                }
            }
            var model = new UserOrderViewModel()
            {
                OrderItems = _mapper.Map <List <OrderItemDto> >(orderItems),
                OrderDates = orderDates,
                Ratings    = ratings,
                ToComment  = toComment
            };

            return(View(model));
        }
示例#11
0
        public async Task <IActionResult> OnGet()
        {
            var foodList = await _foodService.GetAll();

            var vm = new UserOrderViewModel
            {
                FoodList = foodList.ToList(),
                UserId   = "55656",
                UserName = User.Identity.Name
            };

            return(Page());
        }
        public async Task <IActionResult> UserOrders()
        {
            string userId = this.userManager.GetUserId(this.HttpContext.User);

            var ordersViewModel = await this.orderService.GetAllUserOrders(userId);

            UserOrderViewModel model = new UserOrderViewModel
            {
                Orders = ordersViewModel.ToList(),
            };

            return(this.View(model));
        }
示例#13
0
        public async Task <IActionResult> Index([FromRoute] int id)
        {
            if (ActiveUser.Instance.User == null)
            {
                return(RedirectToAction("Create", "Users"));
            }

            var productsOnOrder =
                from ord in context.Order
                join uid in context.User on ord.UserId equals uid.UserId
                join op in context.OrderProduct on ord.OrderId equals op.OrderId
                join prod in context.Product on op.ProductId equals prod.ProductId
                where ord.UserId == ActiveUser.Instance.User.UserId &&
                ord.PaymentTypeId == null
                select prod;



            var userPaymentTypes = context.PaymentType
                                   .Where(p => p.UserId == ActiveUser.Instance.User.UserId)
                                   .AsEnumerable()
                                   .Select(li => new SelectListItem {
                Text  = li.Name.ToString(),
                Value = li.PaymentTypeId.ToString()
            }).ToList();

            UserOrderViewModel uorder = new UserOrderViewModel(context);

            uorder.PaymentTypes = userPaymentTypes;
            uorder.Product      = productsOnOrder
                                  .OrderBy(l => l.Name);

            double totalPrice   = 0;
            var    productsList = productsOnOrder.ToList();

            productsList.ForEach(p => totalPrice += p.Price);
            uorder.TotalOrderPrice = totalPrice;

            if (productsOnOrder == null)
            {
                // This is where we could build a new ViewModel for when the user's cart is empty
                // All of the logic for an empty order view will be within this IF block
                // In pseudo-code,, it might be something like...

                // EmptyOrderViewModel emptyOrder = new EmptyOrderViewModel();
                // return View(emptyOrder);

                return(View());
            }
            return(View(uorder));
        }
示例#14
0
        /// <summary>
        ///     Returns the single order page
        /// </summary>
        /// <returns>Actionresult SingleOrder</returns>
        public IActionResult Single()
        {
            var model = new UserOrderViewModel();

            model.ProductsInSystem = new List <ProductOverviewViewModel>();
            foreach (Product p in productRepo.RetrieveAllProducts())
            {
                ProductOverviewViewModel pmodel = new ProductOverviewViewModel();
                pmodel.ProductId   = p.RetrieveProductId();
                pmodel.ProductName = p.ProductName;
                model.ProductsInSystem.Add(pmodel);
            }
            return(View("SingleOrder", model));
        }
示例#15
0
        public ActionResult OrderDetail(int id)
        {
            ProductOrder oriData = repository.ProductOrders
                                   .Where(p => p.ID == id).FirstOrDefault();

            if (oriData == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UserOrderViewModel data = new UserOrderViewModel
            {
                Date            = oriData.Date,
                ProductList     = oriData.GetDetailFromProductList(),
                ShippingAddress = oriData.ShippingAddress,
                ReceiverName    = oriData.ReceiverName
            };

            return(View(data));
        }
示例#16
0
        public async Task <IActionResult> OrderConfirmationMail(UserOrderViewModel model)
        {
            //Set up sendgrid API
            string         apiKey  = "";
            SendGridClient client  = new SendGridClient(apiKey);
            EmailAddress   from    = new EmailAddress("*****@*****.**", "RicksWebWorld");
            EmailAddress   to      = new EmailAddress(model.Email);
            string         subject = "Order Confirmation RicksWebWorld";

            string content01   = "<h1>Thank you for your purchase!</h1>";
            string content02   = "<p>Hi, we're getting your order ready to be shipped. We will notify you when it has been sent</p>";
            string content03   = "<hr/>";
            string content04   = "<a style='display:inherit' href='http://rickswebworld.azurewebsites.net'>Visit our store</a>";
            string content05   = "<img style='width:150px; padding-top:20px;' src='http://rickswebworld.azurewebsites.net/images/logo-webworld.png'>";
            string htmlContent = content01 + content02 + content03 + content04 + content05;

            SendGridMessage msg      = MailHelper.CreateSingleEmail(from, to, subject, "", htmlContent);
            Response        response = await client.SendEmailAsync(msg);

            return(RedirectToAction("Login", "User"));
        }
示例#17
0
        public async Task <IActionResult> CreateOrder(UserOrderViewModel model, string orderingUser)
        {
            var             loggedInUser    = HttpContext.Session.GetObjectFromJson <UserViewModel>("ComplexObject");
            var             selectedUser    = userRepo.RetrieveUserByUsername(orderingUser);
            List <CartItem> ListOfCartItems = CartItemViewModelToCartItem(loggedInUser.ShoppingCart.ItemsInCart);

            if (model.OrderDescription == null)
            {
                model.OrderDescription = "No description";
            }

            Order order = new Order(selectedUser, model.OrderDescription, 1, ListOfCartItems);

            order.SendAddress = model.SendAddress;
            order.SendZipcode = model.SendZipcode;
            order.SendPlace   = model.SendPlace;
            orderRepo.CreateNewOrder(order);

            sessionHelper.UpdateCurrentSessionUVM(loggedInUser);
            await new MailController().OrderConfirmationMail(model);
            return(RedirectToAction("Index", "Home"));
        }
示例#18
0
        /// <summary>
        ///     Returns the OrderOverview page
        /// </summary>
        /// <returns>Actionresult OrderOverview</returns>
        public IActionResult Overview()
        {
            UserOrderViewModel model = new UserOrderViewModel();

            model.OrdersInSystem = new List <OrderViewModel>();
            foreach (Order o in orderRepo.RetrieveAllOrders())
            {
                IMapper        mapper = mapextension.OrdertoOrderViewModel();
                OrderViewModel omodel = mapper.Map <OrderViewModel>(o);
                omodel.ItemsInOrder = new List <CartItemViewModel>();
                omodel.User         = new UserOverviewViewModel();
                omodel.User.Email   = o.RetrieveCustomer().Email;

                foreach (CartItem c in o.RetrieveItemsInOrder())
                {
                    CartItemViewModel cmodel = new CartItemViewModel();
                    cmodel.Quantity = c.Quantity;
                    omodel.ItemsInOrder.Add(cmodel);
                }
                model.OrdersInSystem.Add(omodel);
            }
            return(View("OrderOverview", model));
        }
示例#19
0
 public ActionResult Order(int offer)
 {
     try
     {
         var offerDb = Db.Trades.Find(offer);
         var user    = UserManager.FindById(User.Identity.GetUserId());
         //    tradeDataLayer.CheckLotOnResell(user, lotDb);
         if (offerDb != null)
         {
             var model = new UserOrderViewModel()
             {
                 Contragent = user.Group.Contragents.ToList().Select(v =>
                                                                     new SelectListItem()
                 {
                     Value = v.Id.ToString(),
                     Text  = v.LongName
                 }).ToList(),
                 OfferId = offerDb.Id,
                 Price   = offerDb.PriceStart,
                 Volume  = (int)offerDb.TotalVolume
             };
             return(PartialView("Partials/OrderModal", model));
         }
         throw new ArgumentNullException("offer");
     }
     catch (Exception ex)
     {
         logger.Error(ex);
         return
             (Json(new
         {
             success = false,
             error = $"{LocalText.Inst.Get("error", "errorBet", "Відбулася помилка", "Произошла ошибка")} {GetFullErrorMessage(ex)}"
         },
                   JsonRequestBehavior.AllowGet));
     };
 }
        IEnumerable <UserOrderViewModel> GetTodayOrders()
        {
            var viewModels = new List <UserOrderViewModel>();

            using (FoodOrderEntities db = new FoodOrderEntities())
            {
                var today     = DateTime.Now.ToString("dd/MM/yyyy");
                var innerjoin = db.Orders.Where(x => x.dateTime.Contains(today)).Join(
                    db.Users,
                    o => o.userId,
                    u => u.userId,
                    (o, u) => new
                {
                    username   = u.username,
                    orderId    = o.orderId,
                    status     = o.status,
                    totalPrice = o.totalPrice,
                    dateTime   = o.dateTime
                }).ToList();
                foreach (var item in innerjoin)
                {
                    UserOrderViewModel viewModel = new UserOrderViewModel
                    {
                        user  = new User(),
                        order = new Order()
                    };
                    viewModel.user.username    = item.username;
                    viewModel.order.orderId    = item.orderId;
                    viewModel.order.status     = item.status;
                    viewModel.order.dateTime   = item.dateTime;
                    viewModel.order.totalPrice = item.totalPrice;
                    viewModels.Add(viewModel);
                }
                return(viewModels);
            }
        }
示例#21
0
        public void Can_View_Order_Detail()
        {
            var      myMock = new MyMock();
            DateTime time   = DateTime.Now;

            myMock.ProductRepository.Setup(u => u.ProductOrders).Returns(new ProductOrder[]
            {
                new ProductOrder {
                    ID              = 1,
                    Date            = time,
                    ReceiverName    = "Rec1",
                    ShippingAddress = "address1",
                    ProductList     = "1:name1,2,1999"
                },
                new ProductOrder {
                    ID              = 2,
                    Date            = time,
                    ReceiverName    = "Rec2",
                    ShippingAddress = "address2",
                    ProductList     = "2:name2,1,3999&3:name3,1,9999"
                }
            });
            var controller = new AdminController(myMock.ProductRepository.Object, myMock.UserManager.Object);

            UserOrderViewModel result = (controller.OrderDetail(2) as ViewResult).Model as UserOrderViewModel;

            Assert.AreEqual(time, result.Date);
            Assert.AreEqual("Rec2", result.ReceiverName);
            Assert.AreEqual("address2", result.ShippingAddress);
            Assert.AreEqual(2, result.ProductList.Count);
            Assert.AreEqual("2", result.ProductList[0][0]);
            Assert.AreEqual("name2", result.ProductList[0][1]);
            Assert.AreEqual("1", result.ProductList[0][2]);
            Assert.AreEqual("3999", result.ProductList[0][3]);
            Assert.AreEqual("3", result.ProductList[1][0]);
        }
示例#22
0
        public ActionResult PayNowCart(CheckOutViewModel checkoutViewModel)
        {
            if (checkoutViewModel != null && ModelState.IsValid)
            {
                string SessionID = string.Empty;
                if (Session["sessionid"] != null)
                {
                    SessionID = Convert.ToString(Session["sessionid"]);
                }
                string userName = string.IsNullOrEmpty(Convert.ToString(User.Identity.Name)) ? string.Empty : User.Identity.Name;
                if (string.IsNullOrEmpty(userName))
                {
                    ViewBag.msg = "Please login for your order confirmation";
                    return(View("Index"));
                }
                else
                {
                    Session["invoiceno"]     = Guid.NewGuid();
                    Session["checkoutmodel"] = checkoutViewModel;
                    CartBL objcart = new CartBL();
                    Int64  value   = objcart.UpdateCartWithUserId(SessionID, userName);
                    objcart = null;

                    //UserRepo objuser = new UserRepo();
                    //int value1 = objuser.UpdateUserInfo(model.BillingModel);
                    //objuser = null;
                    // return RedirectToAction("PayNowCart", model);
                }
                UserRepo objuser = new UserRepo();
                var      user    = objuser.GetUserInfo(userName);
                //var user = UserManager.Users.Where(u => u.Email == userName).FirstOrDefault();

                CartBL obj          = new CartBL();
                var    cartModelLst = obj.GetCartlist(SessionID, user);
                obj = null;

                string             Email          = user.Email;
                UserOrderViewModel orderViewModel = new UserOrderViewModel();
                orderViewModel.Address    = checkoutViewModel.BillingModel.AddressBlock;
                orderViewModel.City       = checkoutViewModel.BillingModel.City;
                orderViewModel.Country    = checkoutViewModel.BillingModel.Country;
                orderViewModel.FirstName  = checkoutViewModel.BillingModel.FirstName;
                orderViewModel.LastName   = checkoutViewModel.BillingModel.LastName;
                orderViewModel.PostalCode = checkoutViewModel.BillingModel.ZipCode;
                orderViewModel.State      = checkoutViewModel.BillingModel.State;
                orderViewModel.Mobile     = checkoutViewModel.BillingModel.Mobile;

                orderViewModel.AddressShipping    = checkoutViewModel.ShippingModel.AddressBlock;
                orderViewModel.CityShipping       = checkoutViewModel.ShippingModel.City;
                orderViewModel.CountryShipping    = checkoutViewModel.ShippingModel.Country;
                orderViewModel.FirstNameShipping  = checkoutViewModel.ShippingModel.FirstName;
                orderViewModel.LastNameShipping   = checkoutViewModel.ShippingModel.LastName;
                orderViewModel.PostalCodeShipping = checkoutViewModel.ShippingModel.ZipCode;
                orderViewModel.StateShipping      = checkoutViewModel.ShippingModel.State;
                orderViewModel.MobileShipping     = checkoutViewModel.ShippingModel.Mobile;

                orderViewModel.OrderDate = DateTime.Now;
                orderViewModel.InvoiceNo = Convert.ToString(Session["invoiceno"]);
                orderViewModel.Email     = Email;
                orderViewModel.IpAddress = Request.ServerVariables["REMOTE_ADDR"];
                orderViewModel.UserId    = user.Id;

                List <OrderDetailViewModel> orderDetailViewModelList = new List <OrderDetailViewModel>();
                string detl = "<table border='1'>";
                detl += "<thead>";
                detl += "<tr>";
                detl += "<th>Srno</th>";
                detl += "<th>Product</th>";
                detl += "<th>Qty</th>";
                detl += "<th>Price</th>";
                detl += "<th>Amount</th>";
                detl += "</tr>";
                detl += "</thead>";
                detl += "<tbody>";
                int     srno        = 1;
                decimal totalAmount = 0;
                foreach (var cart in cartModelLst)
                {
                    OrderDetailViewModel od = new OrderDetailViewModel();
                    od.ProductId = cart.ProductId;
                    od.Quantity  = cart.Qty;
                    od.UnitPrice = cart.SalePrice;
                    od.Discount  = 0;
                    orderDetailViewModelList.Add(od);
                    detl        += "<tr>";
                    detl        += "<td>" + srno++ + "</td>";
                    detl        += "<td>" + cart.ProductName + "</td>";
                    detl        += "<td>" + cart.Qty + "</td>";
                    detl        += "<td> Rs." + String.Format("{0:0.00}", cart.SalePrice) + "</td>";
                    detl        += "<td> Rs." + String.Format("{0:0.00}", cart.Qty * cart.SalePrice) + "</td>";
                    detl        += "</tr>";
                    totalAmount += (cart.Qty * cart.SalePrice);
                }
                detl += "<tr>";
                detl += "<td colspan='4' align='right'>Sub Total</td>";
                detl += "<td>" + String.Format("{0:0.00}", totalAmount) + "</td>";
                detl += "</tr>";
                detl += "</tbody>";
                detl += "</table>";
                orderViewModel.OrderDetailViewModelList = orderDetailViewModelList;
                orderViewModel.Total = Convert.ToDecimal(totalAmount);

                // remove detail from cart
                OrderBL objOrder = new OrderBL();
                Int64   OrderId  = objOrder.AddToOrder(orderViewModel);
                objOrder = null;
                //CartRepoModel objCart = new CartRepoModel();
                //int value = objCart.RemoveFromCart(UserId);
                //objCart = null;


                // mail to admin
                #region "Send mail by admin"
                string htmlString = CommonFunction.ReadHtmlTemplate("order");

                htmlString = htmlString.Replace("@@sitename@@", CommonFunction.SiteName)
                             .Replace("@@emailid@@", Email).Replace("@@orderdate@@", orderViewModel.OrderDate.ToString("dd-MM-yyyy"))
                             .Replace("@@invoiceno@@", orderViewModel.InvoiceNo)
                             .Replace("@@username@@", orderViewModel.FirstName + " " + orderViewModel.LastName)
                             .Replace("@@detail@@", detl);
                // var flag = CF.SendMail(CommonFunction.AdminEmail, CommonFunction.AdminEmail, "Order place", htmlString);
                // CommonFunction.SendEmail(Email, "Confirm your account",htmlString);
                CommonFunction.SendByAdminGmail(Email, "Order place", htmlString);

                #endregion

                // redirect to payment gateway

                return(RedirectToAction("Index", "Thanks"));
            }
            else
            {
            }
            return(View());
        }
示例#23
0
        public IActionResult Order([Bind("Name,Surname,Adress,Email,GameIds")] UserOrderViewModel user)
        {
            if (!ModelState.IsValid)
            {
                return(View(user));
            }
            else
            {
                var    order = new Order();
                var    igre  = new List <GameViewModel>();
                string id    = "";
                foreach (char c in user.GameIds)
                {
                    if (!c.Equals('[') && !c.Equals(',') && !c.Equals(']'))
                    {
                        id += c;
                        try
                        {
                            var game = _context.Games.FirstOrDefault(x => x.Id == Int32.Parse(id));
                            var igra = igre.FirstOrDefault(x => x.Id == game.Id);
                            game.Amount--;
                            _context.Games.Update(game);
                            _context.SaveChanges();
                            if (igra != null)
                            {
                                igra.Amount++;
                            }
                            else
                            {
                                igra                 = new GameViewModel();
                                igra.Id              = game.Id;
                                igra.Name            = game.Name;
                                igra.Amount          = 1;
                                igra.AmountAvailable = game.Amount;
                                igra.Category        = game.Category;
                                igra.ImgUrl          = game.ImgUrl;
                                igra.Price           = game.Price;
                                igra.Description     = game.Description;
                                igre.Add(igra);
                            }
                        }
                        catch (System.Exception)
                        {
                        }
                    }
                    else
                    {
                        id = "";
                    }
                }
                Order lastOrder = _context.Orders.LastOrDefault();
                int   orderId   = lastOrder != null ? lastOrder.Id + 1 : 1;
                order.Id      = orderId;
                order.Name    = user.Name;
                order.Surname = user.Surname;
                order.Email   = user.Email;
                order.Adress  = user.Adress;
                order.Date    = DateTime.Now;

                _context.Orders.Add(order);

                foreach (var game in igre)
                {
                    var         gameOnOrder     = new GameOnOrder();
                    GameOnOrder lastGameOnOrder = _context.GamesOnOrder.LastOrDefault();
                    int         gameOnOrderId   = lastGameOnOrder != null ? lastGameOnOrder.Id + 1 : 1;
                    gameOnOrder.Id      = gameOnOrderId;
                    gameOnOrder.GameId  = game.Id;
                    gameOnOrder.OrderId = order.Id;
                    gameOnOrder.Amount  = game.Amount;
                    _context.GamesOnOrder.Add(gameOnOrder);
                    _context.SaveChanges();
                }

                ViewBag.Success = true;
                return(View(user));
            }
        }
示例#24
0
        /// <summary>
        ///     Calls for the checkout page
        /// </summary>
        /// <returns>IActionresult Checkout</returns>
        public IActionResult Checkout()
        {
            UserOrderViewModel model = CheckForLoggedInUserForOrder();

            return(View("Checkout", model));
        }
示例#25
0
        public IActionResult ShowImages(string orderId)
        {
            UserOrderViewModel model = this.usersService.GetOrder(orderId);

            return(this.View(model));
        }
示例#26
0
        public Int64 AddToOrder(UserOrderViewModel userOrderViewModel)
        {
            Int64 OrderId = 0;

            using (var txn = new TransactionScope())
            {
                try
                {
                    using (ApplicationDbContext db = new ApplicationDbContext())
                    {
                        UserOrder order   = new UserOrder();
                        Guid      orderID = Guid.NewGuid();
                        order.Id          = orderID;
                        order.UserId      = userOrderViewModel.UserId;
                        order.InvoiceNo   = userOrderViewModel.InvoiceNo;
                        order.Email       = userOrderViewModel.Email;
                        order.Ip          = userOrderViewModel.IpAddress;
                        order.OrderStatus = "under process";
                        order.IsPaid      = false;

                        order.Address   = userOrderViewModel.Address;
                        order.City      = userOrderViewModel.City;
                        order.Country   = userOrderViewModel.Country;
                        order.FirstName = userOrderViewModel.FirstName;
                        order.LastName  = userOrderViewModel.LastName;
                        order.MobileNo  = userOrderViewModel.Mobile;
                        order.StateName = userOrderViewModel.State;
                        order.ZipCode   = userOrderViewModel.PostalCode;

                        order.FirstNameShipping = userOrderViewModel.FirstNameShipping;
                        order.LastNameShipping  = userOrderViewModel.LastNameShipping;
                        order.AddressShipping   = userOrderViewModel.AddressShipping;
                        order.CityShipping      = userOrderViewModel.CityShipping;
                        order.StateShipping     = userOrderViewModel.StateShipping;
                        order.CountryShipping   = userOrderViewModel.CountryShipping;
                        order.ZipCodeShipping   = userOrderViewModel.PostalCodeShipping;
                        order.MobileShipping    = userOrderViewModel.MobileShipping;
                        // order.StateIdShipping = userOrderViewModel.;
                        order.StdCodeShipping = string.Empty;
                        order.PhoneShipping   = string.Empty;

                        order.CouponCode  = string.Empty;
                        order.TotalAmount = userOrderViewModel.Total;

                        order.DiscountAmnt = 0;
                        //  order.StateId = 0;
                        order.StdCode       = string.Empty;
                        order.TransactionId = string.Empty;
                        order.UserId        = userOrderViewModel.UserId;
                        order.HomePhone     = string.Empty;

                        db.UserOrders.Add(order);
                        db.SaveChanges();
                        OrderId = 1;

                        foreach (var od in userOrderViewModel.OrderDetailViewModelList)
                        {
                            OrderDetail orderDetail = new OrderDetail();
                            orderDetail.Discount    = od.Discount;
                            orderDetail.UserOrderId = orderID;
                            orderDetail.ProductId   = od.ProductId;
                            orderDetail.Quantity    = od.Quantity;
                            orderDetail.UnitPrice   = od.UnitPrice;
                            db.OrderDetails.Add(orderDetail);
                            db.SaveChanges();
                        }
                        /// remove detail from tblcart
                        var cart = db.UserCarts.Where(w => w.UserId == order.UserId).ToList();
                        if (cart != null)
                        {
                            foreach (var c in cart)
                            {
                                db.UserCarts.Remove(c);
                                db.SaveChanges();
                            }
                        }

                        txn.Complete();
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.ToString());
                }
            }
            return(OrderId);
        }