示例#1
0
        public async Task <IActionResult> SummaryPostAsync(ProductUserViewModel productUserViewModel)
        {
            string pathToTemplate = _webHostsEnvironment.WebRootPath + Path.DirectorySeparatorChar.ToString()
                                    + "templates" + Path.DirectorySeparatorChar.ToString() + "inquiry.html";
            var    subject  = "New Inquiry";
            string htmlBody = "";

            // Read template file to htmlBody
            using (var sr = System.IO.File.OpenText(pathToTemplate))
            {
                htmlBody = sr.ReadToEnd();
            }
            StringBuilder productListSB = new StringBuilder();

            foreach (var product in productUserViewModel.ProductList)
            {
                productListSB.Append($" - Name: {product.Name} <span style='font-size: 14px;'> (ID: {product.Id})</span><br/>");
            }
            string messageBody = string.Format(htmlBody,
                                               productUserViewModel.ApplicationUser.FullName,
                                               productUserViewModel.ApplicationUser.Email,
                                               productUserViewModel.ApplicationUser.PhoneNumber,
                                               productListSB.ToString());
            // Send email to user
            await _emailSender.SendEmailAsync(WC.AdminEmail, subject, messageBody);

            return(RedirectToAction(nameof(InquiryConfirmation)));
        }
示例#2
0
        public IActionResult Summary()
        {
            //Get User Id
            //var claimIdentity = User.Identity as ClaimsIdentity;
            //var claim = claimIdentity.FindFirst(ClaimTypes.NameIdentifier).Value;
            //or
            var UserId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            List <ShoppingCart> ShoppingCartList = new List <ShoppingCart>();
            var session = HttpContext.Session.Get <IEnumerable <ShoppingCart> >(WC.SessinCart);

            if (session is not null && session.Count() > 0)
            {
                ShoppingCartList = session.ToList();
            }
            List <int?>           porductInCart = ShoppingCartList.Select(q => q.ProductId).ToList();
            IEnumerable <Product> productList   = db.Products.Where(q => porductInCart.Contains(q.ProId));

            ProductUserVM = new ProductUserViewModel()
            {
                AppUser = db.AppUsers.FirstOrDefault(q => q.Id == UserId), productList = productList.ToList()
            };


            return(View(ProductUserVM));
        }
示例#3
0
        public ActionResult Login()
        {
            var user = new ProductUserViewModel()
            {
                Id            = 1,
                ResourceOwner = "xrainchen"
            };

            TicketStorageFactory.InstanceTicketStorage <ProductUserViewModel>().SetTicket(user);
            return(RedirectToAction("Index", "Home"));
        }
示例#4
0
        public IActionResult Summary()
        {
            // Find user info from Entity Framework
            var identity = (ClaimsIdentity)User.Identity;
            var claim    = identity.FindFirst(ClaimTypes.NameIdentifier);
            // var userId = User.FindFirstValue(ClaimTypes.Name);
            var products = GetProductCart();

            ProductUserVM = new ProductUserViewModel
            {
                ApplicationUser = _db.ApplicationUsers.FirstOrDefault(u => u.Id == claim.Value),
                ProductList     = products.ToList()
            };
            return(View(ProductUserVM));
        }
        public IActionResult Sum()
        {
            var claimsId = (ClaimsIdentity)User.Identity;
            var claim    = claimsId.FindFirst(ClaimTypes.NameIdentifier);

            List <Cart> cartList = new List <Cart>();

            if (HttpContext.Session.Get <IEnumerable <Cart> >(Constants.SessCart) != null && HttpContext.Session.Get <IEnumerable <Cart> >(Constants.SessCart).Count() > 0)
            {
                cartList = HttpContext.Session.Get <List <Cart> >(Constants.SessCart);
            }

            List <int>         productsInCart = cartList.Select(i => i.ProdId).ToList();
            IEnumerable <Prod> prodList       = _db.Product.Where(u => productsInCart.Contains(u.Id));

            ProductUserViewModel = new ProductUserViewModel()
            {
                AppUser  = _db.AppUser.FirstOrDefault(u => u.Id == claim.Value),
                ProdList = prodList.ToList()
            };

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

            if (User.IsInRole(MC.AdminRole))
            {
                //create order.



                OrderHeader orderheader = new OrderHeader()
                {
                    CreatedByUserId = claim.Value,
                    FinalOrderTotal = ProductUserViewModel.ProductList.Sum(x => x.TempSqFT * x.Price),
                    City            = ProductUserViewModel.ApplicationUser.City,
                    StreetAddress   = ProductUserViewModel.ApplicationUser.StreetAddress,
                    State           = ProductUserViewModel.ApplicationUser.State,
                    PostalCode      = ProductUserViewModel.ApplicationUser.Postal,
                    FullName        = ProductUserViewModel.ApplicationUser.FullName,
                    Email           = ProductUserViewModel.ApplicationUser.Email,
                    PhoneNumber     = ProductUserViewModel.ApplicationUser.PhoneNumber,
                    OrderDate       = DateTime.Now,
                    OrderStatus     = MC.StatusPending
                };
                _order_header_repo.Add(orderheader);
                _order_header_repo.Save();


                foreach (var prod in ProductUserVM.ProductList)
                {
                    OrderDetail orderDetail = new OrderDetail()
                    {
                        OrderHeaderId = orderheader.Id,
                        PricePerSqFt  = prod.Price,
                        Sqft          = prod.TempSqFT,
                        ProductId     = prod.Id
                    };

                    _order_details_repo.Add(orderDetail);
                }

                _order_details_repo.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   = MC.StatusApproved;
                }
                else
                {
                    orderheader.OrderStatus = MC.StatusCancelled;
                }
                _order_header_repo.Save();
                return(RedirectToAction(nameof(InquiryConfirmation), new { id = orderheader.Id }));
            }

            else
            {
                //create 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();
                }


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


                await _emailSender.SendEmailAsync(MC.EmailAdmin, subject, messageBdy);

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

                _headerRepo.Add(inquiryHeader);
                _headerRepo.Save();

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

                    _detailRepo.Add(inquiryDetail);
                }

                TempData[MC.Success] = "Inquiry Sent Successfully";
                _detailRepo.Save();
                return(RedirectToAction(nameof(InquiryConfirmation)));
            }
        }
示例#8
0
        public IActionResult Summary()
        {
            ApplicationUser applicationUser;

            if (User.IsInRole(MC.AdminRole))
            {
                if (HttpContext.Session.Get <int>(MC.SesssionInquiryId) != 0)
                {
                    //cart has been loaded with an inquiry.

                    InquiryHeader inquiryHeader = _headerRepo.FirstOrDefault(u => u.Id == HttpContext.Session.Get <int>(MC.SesssionInquiryId));
                    applicationUser = new ApplicationUser()
                    {
                        Email       = inquiryHeader.Email,
                        FullName    = inquiryHeader.FullName,
                        PhoneNumber = inquiryHeader.PhhoneNumber
                    };
                }
                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);
                applicationUser = _appRepo.FirstOrDefault(u => u.Id == claim.Value);
            }

            //var userId = User.FindFirstValue(ClaimTypes.Name);

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

            if (HttpContext.Session.Get <IEnumerable <ShoppingCart> >(MC.SesssionCart) != null &&
                HttpContext.Session.Get <IEnumerable <ShoppingCart> >(MC.SesssionCart).Count() > 0)
            {
                //session exists

                shoppingCartList = HttpContext.Session.Get <List <ShoppingCart> >(MC.SesssionCart);
            }
            List <int>            prodInCart = shoppingCartList.Select(i => i.ProductId).ToList();
            IEnumerable <Product> prodList   = _prodRepo.GetAll(u => prodInCart.Contains(u.Id));

            ProductUserViewModel = new ProductUserViewModel()
            {
                ApplicationUser = applicationUser,
            };

            foreach (var cartObj in shoppingCartList)
            {
                Product prodTemp = _prodRepo.FirstOrDefault(u => u.Id == cartObj.ProductId);
                prodTemp.TempSqFT = cartObj.SqFt;
                ProductUserViewModel.ProductList.Add(prodTemp);
            }
            return(View(ProductUserViewModel));
        }