示例#1
0
        public IActionResult Summary()
        {
            List <ShoppingCart> shoppingCartList = new List <ShoppingCart>();

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstant.SessionCart) != null &&
                HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstant.SessionCart).Count() > 0)
            {
                //session exsits
                shoppingCartList = HttpContext.Session.Get <List <ShoppingCart> >(WebConstant.SessionCart);
            }

            List <int>            prodInCart = shoppingCartList.Select(i => i.ProductId).ToList();
            IEnumerable <Product> prodList   = _prodRepo.GetAll(u => prodInCart.Contains(u.Id));

            var             claimsIdentity  = (ClaimsIdentity)User.Identity;
            var             claim           = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            ApplicationUser applicationUser = _userRepo.FirstOrDefault(u => u.Id == claim.Value);

            ProductUserVM = new ProductUserVM()
            {
                ApplicationUser = applicationUser,
            };
            foreach (var cartObj in shoppingCartList)
            {
                Product prodTemp = _prodRepo.FirstOrDefault(u => u.Id == cartObj.ProductId);
                prodTemp.Unit = cartObj.Unit;
                ProductUserVM.ProductList.Add(prodTemp);
            }


            return(View(ProductUserVM));
        }
示例#2
0
        public IActionResult Summary()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            //var userId = User.FindFirstValue(ClaimTypes.Name);

            List <ShoppingCart> shoppingCartList = new List <ShoppingCart>();

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessionCart) != null &&
                HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessionCart).Count() > 0)
            {
                //session exsits
                shoppingCartList = HttpContext.Session.Get <List <ShoppingCart> >(WC.SessionCart);
            }

            List <int>            prodInCart = shoppingCartList.Select(i => i.ProductId).ToList();
            IEnumerable <Product> prodList   = _db.Product.Where(u => prodInCart.Contains(u.Id));

            ProductUserVM = new ProductUserVM()
            {
                ApplicationUser = _db.ApplicationUser.FirstOrDefault(u => u.Id == claim.Value),
                ProductList     = prodList.ToList()
            };


            return(View(ProductUserVM));
        }
        public async Task <IActionResult> SummaryPost(ProductUserVM productUserVM)
        {
            var PathToTemplate = _webHostEnviroment.WebRootPath + Path.DirectorySeparatorChar.ToString() + "templates" + Path.DirectorySeparatorChar + "Inquiry.html";

            var    subject  = "New Inquiry";
            string HtmlBody = "";

            using (StreamReader sr = System.IO.File.OpenText(PathToTemplate))
            {
                HtmlBody = sr.ReadToEnd();
            }

            //Name: { 0}
            //Email: { 1}
            //Phone: { 2}
            //Products: { 3}

            StringBuilder productListSB = new StringBuilder();

            foreach (var prod in ProductUserVM.ProductList)
            {
                productListSB.Append($" - Name: {prod.Name} <span style='font-size:14px; '> (ID: {prod.Id})</span><br />");
            }
            string messageBody = string.Format(HtmlBody, productUserVM.ApplicationUser.FullName, productUserVM.ApplicationUser.Email,
                                               productUserVM.ApplicationUser.PhoneNumber,
                                               productListSB.ToString());


            await _emailSender.SendEmailAsync(WC.EmailAdmin, subject, messageBody);

            return(RedirectToAction(nameof(InquiryConfirmation)));
        }
        public IActionResult CheckOut(double total)
        {
            //Get Logged In User Id
            var    claimsIdentity = (ClaimsIdentity)User.Identity;
            var    claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            string userId         = claim.Value;

            //Get Shopping Cart List
            List <ShoppingCart> shoppingCartList = new List <ShoppingCart>();

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessionCart) != null && HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessionCart).Count() > 0)
            {
                shoppingCartList = HttpContext.Session.Get <List <ShoppingCart> >(WC.SessionCart);
            }

            int storeId = _cartRepository.GetStoreIdInCart(shoppingCartList);

            Purchase purchase = _cartRepository.CreateAddPurchase(storeId, userId, total);

            List <int> productIds = _cartRepository.GetItemIdsInCart(shoppingCartList);
            List <int> qtys       = _cartRepository.GetItemQtysInCart(shoppingCartList);

            _cartRepository.CreateAddItemPurchase(purchase, productIds, qtys);

            IEnumerable <Item> itemList = _cartRepository.GetItemListByIds(productIds);

            ProductUserVM = new ProductUserVM()
            {
                ApplicationUser = _cartRepository.GetUserById(userId),
                ProductList     = itemList.ToList(),
                PurchaseTotal   = total
            };
            HttpContext.Session.Clear();
            return(View(ProductUserVM));
        }
示例#5
0
        //Add the Quantity Here
        public IActionResult Summary()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;

            //Claim is coming null if no one loggs in
            var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            //var userId = User.FindFirstValue(ClaimTypes.Name); //Anyther way of doing it

            List <ShoppingCart> shoppingCartList = new List <ShoppingCart>();

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstants.SessionCart) != null &&
                HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstants.SessionCart).Count() > 0)
            {
                //session exsits
                shoppingCartList = HttpContext.Session.Get <List <ShoppingCart> >(WebConstants.SessionCart);
            }

            List <int>            prodInCart = shoppingCartList.Select(i => i.ProductId).ToList();
            IEnumerable <Product> prodList   = _db.Product.Where(u => prodInCart.Contains(u.Id));

            if (claim != null)
            {
                ProductUserVM = new ProductUserVM()
                {
                    AppUser     = _db.AppUser.FirstOrDefault(u => u.Id == claim.Value),
                    ProductList = prodList.ToList(),
                };


                return(View(ProductUserVM));
            }
            return(View());
        }
示例#6
0
        public IActionResult Summary()
        {
            ApplicationUser applicationUser;

            if (User.IsInRole(WebConstants.AdminRole))
            {
                if (HttpContext.Session.Get <int>(WebConstants.SessionInquiryId) != 0)
                {
                    //Cart was loaded using an inquiry
                    InquiryHeader inquiryHeader = _inqHRepo.FirstOrDefault(x => x.Id == HttpContext.Session.Get <int>(WebConstants.SessionInquiryId));
                    applicationUser = new ApplicationUser()
                    {
                        Email       = inquiryHeader.Email,
                        FullName    = inquiryHeader.FullName,
                        PhoneNumber = inquiryHeader.PhoneNumber
                    };
                }
                else
                {
                    applicationUser = new ApplicationUser();
                }

                var gateway     = _brain.GetGateway();
                var clientToken = gateway.ClientToken.Generate();
                ViewBag.ClientToken = clientToken;
            }
            else
            {
                var claimsIdentity = (ClaimsIdentity)User.Identity;
                var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
                //var userId = User.FindFirstValue(ClaimTypes.Name);

                applicationUser = _userRepo.FirstOrDefault(x => x.Id == claim.Value);
            }



            List <ShoppingCart> shoppingCartList = new List <ShoppingCart>();

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstants.SessionCart) != null &&
                HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstants.SessionCart).Count() > 0)
            {
                //Session exists
                shoppingCartList = HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WebConstants.SessionCart).ToList();
            }
            List <int>            prodInCart = shoppingCartList.Select(i => i.ProductId).ToList();
            IEnumerable <Product> prodList   = _prodRepo.GetAll(x => prodInCart.Contains(x.Id));

            ProductUserVM = new ProductUserVM()
            {
                ApplicationUser = applicationUser,
            };
            foreach (var cartObj in shoppingCartList)
            {
                Product prodTemp = _prodRepo.FirstOrDefault(x => x.Id == cartObj.ProductId);
                prodTemp.TempSqFt = cartObj.SqFt;
                ProductUserVM.ProductList.Add(prodTemp);
            }
            return(View(ProductUserVM));
        }
        public IActionResult Summary()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.Name);
            var prodList       = GetProdListByShoppingCart();

            ProductUserVm = new ProductUserVM
            {
                ApplicationUser = _db.ApplicationUsers.FirstOrDefault(u => u.Id == claim.Value),
                ProductList     = prodList
            };
            return(View(ProductUserVm));
        }
示例#8
0
        public async Task <IActionResult> SummaryPost(ProductUserVM ProductUserVM)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            //we need to create an order

            OrderHeader orderHeader = new OrderHeader()
            {
                ApplicationUserId = claim.Value,
                FinalOrderTotal   = ProductUserVM.ProductList.Sum(x => x.TempQty * x.Price),
                City          = ProductUserVM.ApplicationUser.City,
                StreetAddress = ProductUserVM.ApplicationUser.StreetAddress,
                PostalCode    = ProductUserVM.ApplicationUser.PostalCode,
                FullName      = ProductUserVM.ApplicationUser.FullName,
                Email         = ProductUserVM.ApplicationUser.Email,
                PhoneNumber   = ProductUserVM.ApplicationUser.PhoneNumber,
                OrderDate     = DateTime.Now,
                OrderStatus   = WC.StatusPending
            };

            _orderHRepo.Add(orderHeader);
            _orderHRepo.Save();

            foreach (var prod in ProductUserVM.ProductList)
            {
                OrderDetail orderDetail = new OrderDetail()
                {
                    OrderHeaderId = orderHeader.Id,
                    PricePerUnit  = prod.Price,
                    Qty           = prod.TempQty,
                    ProductId     = prod.Id
                };
                var prodPopularity = _prodRepo.FirstOrDefault(u => u.Id == prod.Id);
                prodPopularity.ProductPopularity++;
                _prodRepo.Update(prodPopularity);
                _orderDRepo.Add(orderDetail);
            }
            _orderDRepo.Save();
            TempData[WC.Success] = "Order is placed successfully";
            return(RedirectToAction(nameof(OrderConfirmation), new { id = orderHeader.Id }));
        }
示例#9
0
        public IActionResult SummaryPost(IFormCollection collection, ProductUserVM ProductUserVM)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            OrderHeader orderHeader = new OrderHeader()
            {
                CreatedByUserId = claim.Value,
                FinalOrderTotal = ProductUserVM.ProductList.Sum(x => x.Unit * x.Price),
                City            = ProductUserVM.ApplicationUser.City,
                StreetAddress   = ProductUserVM.ApplicationUser.StreetAddress,
                State           = ProductUserVM.ApplicationUser.State,
                PostalCode      = ProductUserVM.ApplicationUser.PostalCode,
                FullName        = ProductUserVM.ApplicationUser.FullName,
                Email           = ProductUserVM.ApplicationUser.Email,
                PhoneNumber     = ProductUserVM.ApplicationUser.PhoneNumber,
                OrderDate       = DateTime.Now,
                OrderStatus     = WebConstant.StatusPending
            };

            _orderHRepo.Add(orderHeader);
            _orderHRepo.Save();
            return(RedirectToAction(nameof(Index)));
        }
 public IActionResult SummaryPost(ProductUserVM productUserVm)
 {
     return(View(productUserVm));
 }
示例#11
0
        public async Task <IActionResult> SummaryPost(ProductUserVM ProductUserVM)
        {
            var ClaimIdentity = (ClaimsIdentity)User.Identity;
            var Claim         = ClaimIdentity.FindFirst(ClaimTypes.NameIdentifier);

            var PathToTemplate = _webHostEnvironment.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                 + "templates" + Path.DirectorySeparatorChar.ToString() +
                                 "Inquiry.html";

            var    subject  = "New Inquiry";
            string HtmlBody = "";

            using (StreamReader sr = System.IO.File.OpenText(PathToTemplate))
            {
                HtmlBody = sr.ReadToEnd();
            }
            //Name: { 0}
            //Email: { 1}
            //Phone: { 2}
            //Products: {3}

            StringBuilder productListSB = new StringBuilder();

            foreach (var prod in ProductUserVM.ProductList)
            {
                productListSB.Append($" - Name: { prod.Name} <span style='font-size:14px;'> (ID: {prod.Id})</span><br />");
            }

            string messageBody = string.Format(HtmlBody,
                                               ProductUserVM.ApplicationUser.FullName,
                                               ProductUserVM.ApplicationUser.Email,
                                               ProductUserVM.ApplicationUser.PhoneNumber,
                                               productListSB.ToString());


            await _emailSender.SendEmailAsync(WC.EmailAdmin, subject, messageBody);

            InquiryHeader inquiryHeader = new InquiryHeader()
            {
                ApplicationUserId = Claim.Value,
                FullName          = ProductUserVM.ApplicationUser.FullName,
                Email             = ProductUserVM.ApplicationUser.Email,
                PhoneNumber       = ProductUserVM.ApplicationUser.PhoneNumber,
                InquiryDate       = DateTime.Now
            };

            _InHRepo.Add(inquiryHeader);
            _InHRepo.Save();

            foreach (var prod in ProductUserVM.ProductList)
            {
                InquiryDetail inquiryDetail = new InquiryDetail()
                {
                    InquiryHeaderId = inquiryHeader.Id,
                    ProductId       = prod.Id
                };
                _InDRepo.Add(inquiryDetail);
            }

            _InDRepo.Save();

            return(RedirectToAction(nameof(InquiryConfirmation)));
        }
示例#12
0
        public async Task <IActionResult> SummaryPost(IFormCollection collection, ProductUserVM ProductUserVM)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            if (User.IsInRole(WC.AdminRole))
            {
                //we need to create an order
                //var orderTotal = 0.0;
                //foreach(Product prod in ProductUserVM.ProductList)
                //{
                //    orderTotal += prod.Price * prod.TempSqFt;
                //}
                OrderHeader orderHeader = new OrderHeader()
                {
                    CreatedByUserId = claim.Value,
                    FinalOrderTotal = ProductUserVM.ProductList.Sum(x => x.TempSqFt * x.Price),
                    City            = ProductUserVM.ApplicationUser.City,
                    StreetAddress   = ProductUserVM.ApplicationUser.StreetAddress,
                    State           = ProductUserVM.ApplicationUser.State,
                    PostalCode      = ProductUserVM.ApplicationUser.PostalCode,
                    FullName        = ProductUserVM.ApplicationUser.FullName,
                    Email           = ProductUserVM.ApplicationUser.Email,
                    PhoneNumber     = ProductUserVM.ApplicationUser.PhoneNumber,
                    OrderDate       = DateTime.Now,
                    OrderStatus     = WC.StatusPending
                };
                _orderHRepo.Add(orderHeader);
                _orderHRepo.Save();

                foreach (var prod in ProductUserVM.ProductList)
                {
                    OrderDetail orderDetail = new OrderDetail()
                    {
                        OrderHeaderId = orderHeader.Id,
                        PricePerSqFt  = prod.Price,
                        Sqft          = prod.TempSqFt,
                        ProductId     = prod.Id
                    };
                    _orderDRepo.Add(orderDetail);
                }
                _orderDRepo.Save();

                string nonceFromTheClient = collection["payment_method_nonce"];

                var request = new TransactionRequest
                {
                    Amount             = Convert.ToDecimal(orderHeader.FinalOrderTotal),
                    PaymentMethodNonce = nonceFromTheClient,
                    OrderId            = orderHeader.Id.ToString(),
                    Options            = new TransactionOptionsRequest
                    {
                        SubmitForSettlement = true
                    }
                };

                var gateway = _brain.GetGateway();
                Result <Transaction> result = gateway.Transaction.Sale(request);

                if (result.Target.ProcessorResponseText == "Approved")
                {
                    orderHeader.TransactionId = result.Target.Id;
                    orderHeader.OrderStatus   = WC.StatusApproved;
                }
                else
                {
                    orderHeader.OrderStatus = WC.StatusCancelled;
                }
                _orderHRepo.Save();
                return(RedirectToAction(nameof(InquiryConfirmation), new { id = orderHeader.Id }));
            }
            else
            {
                //we need to create an inquiry
                var PathToTemplate = _webHostEnvironment.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                     + "templates" + Path.DirectorySeparatorChar.ToString() +
                                     "Inquiry.html";

                var    subject  = "New Inquiry";
                string HtmlBody = "";
                using (StreamReader sr = System.IO.File.OpenText(PathToTemplate))
                {
                    HtmlBody = sr.ReadToEnd();
                }
                //Name: { 0}
                //Email: { 1}
                //Phone: { 2}
                //Products: {3}

                StringBuilder productListSB = new StringBuilder();
                foreach (var prod in ProductUserVM.ProductList)
                {
                    productListSB.Append($" - Name: { prod.Name} <span style='font-size:14px;'> (ID: {prod.Id})</span><br />");
                }

                string messageBody = string.Format(HtmlBody,
                                                   ProductUserVM.ApplicationUser.FullName,
                                                   ProductUserVM.ApplicationUser.Email,
                                                   ProductUserVM.ApplicationUser.PhoneNumber,
                                                   productListSB.ToString());


                await _emailSender.SendEmailAsync(WC.EmailAdmin, subject, messageBody);

                InquiryHeader inquiryHeader = new InquiryHeader()
                {
                    ApplicationUserId = claim.Value,
                    FullName          = ProductUserVM.ApplicationUser.FullName,
                    Email             = ProductUserVM.ApplicationUser.Email,
                    PhoneNumber       = ProductUserVM.ApplicationUser.PhoneNumber,
                    InquiryDate       = DateTime.Now
                };

                _inqHRepo.Add(inquiryHeader);
                _inqHRepo.Save();

                foreach (var prod in ProductUserVM.ProductList)
                {
                    InquiryDetail inquiryDetail = new InquiryDetail()
                    {
                        InquiryHeaderId = inquiryHeader.Id,
                        ProductId       = prod.Id,
                    };
                    _inqDRepo.Add(inquiryDetail);
                }
                _inqDRepo.Save();
                TempData[WC.Success] = "Inquiry submitted successfully";
            }



            return(RedirectToAction(nameof(InquiryConfirmation)));
        }
示例#13
0
        public IActionResult Summary()
        {
            ApplicationUser applicationUser;

            if (User.IsInRole(WC.AdminRole))
            {
                if (HttpContext.Session.Get <int>(WC.SessionInquiryId) != 0)
                {
                    //Cart has been loaded using an inquiry
                    InquiryHeader inquiryHeader = _inqHRepo.FirstOrDefault(u => u.Id == HttpContext.Session.Get <int>(WC.SessionInquiryId));
                    applicationUser = new ApplicationUser()
                    {
                        Email       = inquiryHeader.Email,
                        FullName    = inquiryHeader.FullName,
                        PhoneNumber = inquiryHeader.PhoneNumber
                    };
                }
                else
                {
                    applicationUser = new ApplicationUser();
                }

                //Payments logic:
                var gateway      = _brain.GetGateway();
                var clientTocken = gateway.ClientToken.Generate();
                ViewBag.ClientToken = clientTocken;
            }
            else
            {
                //Findout ID of Login User
                var clamsIdentity = (ClaimsIdentity)User.Identity;
                var claim         = clamsIdentity.FindFirst(ClaimTypes.NameIdentifier); // If user not Login (claim == null). ID will be in claim.Value
                //Anoter way to find UserID
                //var userId = User.FindFirstValue(ClaimTypes.Name);
                applicationUser = _userRepo.FirstOrDefault(u => u.Id == claim.Value);
            }


            //Get list of Products from Session "ShoppingCart"
            List <ShoppingCart> shoppingCartList = new List <ShoppingCart>();

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessionCart) != null && HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessionCart).Count() > 0)
            {
                //Session exists
                shoppingCartList = HttpContext.Session.Get <List <ShoppingCart> >(WC.SessionCart);
            }
            // Store all Id to new List
            List <int>            prodInCart = shoppingCartList.Select(i => i.ProductId).ToList();
            IEnumerable <Product> prodList   = _prodRepo.GetAll(u => prodInCart.Contains(u.Id));

            ProductUserVM = new ProductUserVM()
            {
                ApplicationUser = applicationUser //,
                                                  //ProductList = prodList.ToList()
            };

            foreach (var cartObj in shoppingCartList)
            {
                Product prodTemp = _prodRepo.FirstOrDefault(u => u.Id == cartObj.ProductId);
                prodTemp.TempSqFt = cartObj.SqFt;
                ProductUserVM.ProductList.Add(prodTemp);
            }


            return(View(ProductUserVM));
        }