Beispiel #1
0
        //INDEX - GET
        public async Task <IActionResult> Index()
        {
            detailCart = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            detailCart.OrderHeader.OrderTotal = 0.0;

            var             claimsIdentity  = (ClaimsIdentity)User.Identity;
            var             claim           = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
            ApplicationUser applicationUser = await _db.ApplicationUser.Where(c => c.Id == claim.Value).FirstOrDefaultAsync();

            if (claim != null)
            {
                var cnt = _db.ShoppingCart.Where(u => u.ApplicationUserId == claim.Value).ToList().Count;
                HttpContext.Session.SetInt32("ssCartCount", cnt);
            }

            var cart = _db.ShoppingCart.Where(c => c.ApplicationUserId == claim.Value);

            if (cart != null)
            {
                detailCart.listCart = cart.ToList();
            }


            double weigth = 0.0;
            double volume = 0.0;

            foreach (var list in detailCart.listCart)
            {
                list.StoreItem = await _db.StoreItem.FirstOrDefaultAsync(m => m.Id == list.StoreItemId);

                detailCart.OrderHeader.OrderTotal = detailCart.OrderHeader.OrderTotal + (list.StoreItem.Price * list.Count);
                weigth += (list.StoreItem.Weight * list.Count);
                volume += (list.StoreItem.Volume * list.Count);
            }
            detailCart.OrderHeader.OrderTotalOriginal = detailCart.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(SD.ssUserName) != null)
            {
                detailCart.OrderHeader.Name = HttpContext.Session.GetString(SD.ssUserName);
            }
            else
            {
                detailCart.OrderHeader.Name = applicationUser.Name;
            }
            if (HttpContext.Session.GetString(SD.ssUserAddress) != null)
            {
                detailCart.OrderHeader.Address = HttpContext.Session.GetString(SD.ssUserAddress);
            }
            else
            {
                detailCart.OrderHeader.Address = applicationUser.StreetAddress;
            }
            if (HttpContext.Session.GetString(SD.ssUserCity) != null)
            {
                detailCart.OrderHeader.City = HttpContext.Session.GetString(SD.ssUserCity);
            }
            else
            {
                detailCart.OrderHeader.City = applicationUser.City;
            }
            if (HttpContext.Session.GetString(SD.ssUserState) != null)
            {
                detailCart.OrderHeader.State = HttpContext.Session.GetString(SD.ssUserState);
            }
            else
            {
                detailCart.OrderHeader.State = applicationUser.State;
            }

            if (HttpContext.Session.GetString(SD.ssPostalCode) != null)
            {
                detailCart.OrderHeader.PostalCode = HttpContext.Session.GetString(SD.ssPostalCode);
                string[] precoPrazo = await SD.GetPriceAndTimePostalServiceAsync(detailCart.OrderHeader.PostalCode, weigth, volume);

                detailCart.OrderHeader.PostalPrice = Convert.ToDouble(precoPrazo[0]);
                detailCart.OrderHeader.PostalTime  = Convert.ToDouble(precoPrazo[1]);
                detailCart.OrderHeader.OrderTotal += detailCart.OrderHeader.PostalPrice;
                HttpContext.Session.SetInt32("ssPostalPrice", Convert.ToInt32(detailCart.OrderHeader.PostalPrice * 100));
            }
            else
            {
                detailCart.OrderHeader.PostalCode = applicationUser.PostalCode;
                string[] precoPrazo = await SD.GetPriceAndTimePostalServiceAsync(detailCart.OrderHeader.PostalCode, weigth, volume);

                detailCart.OrderHeader.PostalPrice = Convert.ToDouble(precoPrazo[0]);
                detailCart.OrderHeader.PostalTime  = Convert.ToDouble(precoPrazo[1]);
                detailCart.OrderHeader.OrderTotal += detailCart.OrderHeader.PostalPrice;
                HttpContext.Session.SetInt32("ssPostalPrice", Convert.ToInt32(detailCart.OrderHeader.PostalPrice * 100));
            }


            return(View(detailCart));
        }