示例#1
0
        public IActionResult Index()
        {
            //logged in user
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            ShoppingCartVM = new ShoppingCartViewModel()
            {
                OrderHeader = new Models.OrderHeader(),
                // load product along with cart
                ListCart = _unitOfWork.ShoppingCart.GetAll(u => u.ApplicationUserId == claim.Value, includeProperties: "Product")
            };
            ShoppingCartVM.OrderHeader.OrderTotal      = 0;
            ShoppingCartVM.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser
                                                         .GetFirstOrDefault(u => u.Id == claim.Value);

            //go through all items in cart
            foreach (var list in ShoppingCartVM.ListCart)
            {
                list.Price = list.Product.Price;
                ShoppingCartVM.OrderHeader.OrderTotal += (list.Price * list.Count);
                list.Product.Description = StaticDetails.ConvertToRawHtml(list.Product.Description);
                //get first 100 chars only
                if (list.Product.Description.Length > 100)
                {
                    list.Product.Description = list.Product.Description.Substring(0, 99) + "...";
                }
            }

            return(View(ShoppingCartVM));
        }
示例#2
0
        public async Task <IActionResult> Register(UserForRegisterDto userForRegisterDto)
        {
            var user = await _userManager.FindByEmailAsync(userForRegisterDto.Email);

            if (user != null)
            {
                return(BadRequest(new { error = "User already exist" }));
            }

            try{
                var userToCreate = _mapper.Map <User>(userForRegisterDto);
                userToCreate.AccountNumber  = StaticDetails.GenerateAccountNo();
                userToCreate.AccountBalance = StaticDetails.DefaultAmount;
                userToCreate.IsActive       = true;
                userToCreate.DateCreated    = DateTime.Now;
                userToCreate.UserName       = userForRegisterDto.Email;

                var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);

                // var userToReturn = _mapper.Map<UserForListDto>(userToCreate);

                if (result.Succeeded)
                {
                    return(Ok("Congratulations!!! Your account creation was successful. Kindly remember to fund your account"));
                }

                return(BadRequest(result.Errors));
            }catch (Exception)
            {
                return(StatusCode(500, "Error Occured please try again later,please try again later..."));
            }
        }
示例#3
0
        public async Task <IActionResult> Index()
        {
            DetailsCart = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            DetailsCart.OrderHeader.OrderTotal = 0;

            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            var cart = db.ShoppingCart.Where(sc => sc.ApplicationUserId == claim.Value);

            if (cart != null)
            {
                DetailsCart.ListCart = cart.ToList();
            }

            foreach (var shoppingCart in DetailsCart.ListCart)
            {
                shoppingCart.MenuItem = await db.MenuItem.FirstOrDefaultAsync(mi => mi.Id == shoppingCart.MenuItemId);

                DetailsCart.OrderHeader.OrderTotal = DetailsCart.OrderHeader.OrderTotal + (shoppingCart.MenuItem.Price * shoppingCart.Count);
                shoppingCart.MenuItem.Description  = StaticDetails.ConvertToRawHtml(shoppingCart.MenuItem.Description);
                if (shoppingCart.MenuItem.Description.Length > 100)
                {
                    shoppingCart.MenuItem.Description = shoppingCart.MenuItem.Description.Substring(0, 99) + "...";
                }
            }
            DetailsCart.OrderHeader.OrderTotalOriginal = DetailsCart.OrderHeader.OrderTotal;

            return(View(DetailsCart));
        }
示例#4
0
 /// <summary>
 /// Class file that reads the json file from disk. If the file isn't empty we return it's contents.
 /// Otherwise we return null.
 /// </summary>
 /// <returns></returns>
 public DaylightStatModel.Playerstats ReadIndividualPlayerFile(string id)
 {
     DaylightStatModel.Playerstats obj = new DaylightStatModel.Playerstats();
     try
     {
         if (!File.Exists(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{id}.json")))
         {
             var SteamIDJson = File.Create(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{id}.json"));
             SteamIDJson.Close();
             return(null);
         }
         var file = File.ReadAllText(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{id}.json"));
         if (file != "")
         {
             JsonConvert.PopulateObject(file, obj);
             return(obj);
         }
         else
         {
             return(null);
         }
     }
     catch (Exception msg)
     {
         Console.WriteLine(msg);
         throw;
     }
 }
示例#5
0
        public async Task <string> SCreateDBoxClient(DaylightStatModel.Playerstats PlayerData)
        {
            using (var dbox = new DropboxClient(StaticDetails.DropboxToken))
            {
                using (var mem = new MemoryStream(File.ReadAllBytes(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{PlayerData.SteamId}.json"))))
                {
                    try
                    {
                        var UploadFileDbox = dbox.Files.UploadAsync($"/{PlayerData.SteamId}.json", WriteMode.Overwrite.Instance, body: mem);
                        UploadFileDbox.Wait();
                        var DboxListSharedLinks = dbox.Sharing.ListSharedLinksAsync($"/{PlayerData.SteamId}.json");
                        DboxListSharedLinks.Wait();
                        //SharedLinkSettings Settings = new SharedLinkSettings();
                        //Settings.Expires.Value.Add

                        foreach (var current in DboxListSharedLinks.Result.Links)
                        {
                            if (current.Name == $"{PlayerData.SteamId}.json")
                            {
                                return(current.Url);
                            }
                        }

                        var DownloadLink = dbox.Sharing.CreateSharedLinkWithSettingsAsync($"/{PlayerData.SteamId}.json");
                        DownloadLink.Wait();
                        return(DownloadLink.Result.Url);
                    }

                    catch (Exception msg)
                    {
                        return("Failed to created link");
                    }
                }
            }
        }
示例#6
0
        public IActionResult Index()

        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            if (claim != null)
            {
                ShoppingCartVM = new ShoppingCartVM()
                {
                    OrderHeader = new Models.OrderHeader(),
                    ListCart    = _unitOfWork.ShoppingCart.GetAll(u => u.ApplicationUserId == claim.Value, includeProperties: "Product")
                };

                ShoppingCartVM.OrderHeader.OrderTotal = 0;

                foreach (var list in ShoppingCartVM.ListCart)
                {
                    list.Price = StaticDetails.GetPriceBasedOnQuantity(list.Count, list.Product.Price,
                                                                       list.Product.Price50, list.Product.Price100);
                    ShoppingCartVM.OrderHeader.OrderTotal += (list.Price * list.Count);
                    list.Product.Description = StaticDetails.ConvertToRawHtml(list.Product.Description);
                    if (list.Product.Description.Length > 100)
                    {
                        list.Product.Description = list.Product.Description.Substring(0, 99) + "...";
                    }
                }

                return(View(ShoppingCartVM));
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
        }
        public IActionResult Index()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claims         = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            ShoppingCartVM = new ShoppingCartVM()
            {
                OrderHeader = new OrderHeader(),
                CartList    = unitOfWork.ShoppingCart.GetAll(u => u.ApplicatinUserId == claims.Value, includeProperties: "Product")
            };

            ShoppingCartVM.OrderHeader.OrderTotal      = 0;
            ShoppingCartVM.OrderHeader.ApplicationUser = unitOfWork.ApplicationUser.GetFirstOrDefault(u => u.Id == claims.Value, includeProperties: "Organization");

            foreach (var item in ShoppingCartVM.CartList)
            {
                item.Price = StaticDetails.CalculateBooksPrice(item.Count, item.Product.Price, item.Product.Price50, item.Product.Price100);
                ShoppingCartVM.OrderHeader.OrderTotal += (item.Price * item.Count);
                item.Product.ProductDescription        = StaticDetails.ConvertToRawHtml(item.Product.ProductDescription);
                if (item.Product.ProductDescription.Length > 100)
                {
                    item.Product.ProductDescription = item.Product.ProductDescription.Substring(0, 99) + "...";
                }
            }
            return(View(ShoppingCartVM));
        }
        public IActionResult Index()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity; //To get user id and verify user
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            ShoppingCartVM = new ShoppingCartViewModel()
            {
                OrderHeader = new BookStoreModels.OrderHeader(),
                CartList    = _unitOfWork.Cart.GetAll(u => u.AppUserId == claim.Value, includeProperties: "Book")
            };
            ShoppingCartVM.OrderHeader.OrderTotal      = 0;
            ShoppingCartVM.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser.
                                                         GetFirstOrDefault(u => u.Id == claim.Value, includeProperties: "Company"); //to fill app user

            //To populate ListCart
            foreach (var list in ShoppingCartVM.CartList)
            {
                list.Price = list.Book.Price;
                ShoppingCartVM.OrderHeader.OrderTotal += (list.Price * list.Count);
                list.Book.Description = StaticDetails.ConvertToRawHtml(list.Book.Description);
                if (list.Book.Description.Length > 100)
                {
                    list.Book.Description = list.Book.Description.Substring(0, 99) + "...";
                }
            }

            return(View());
        }
        public IActionResult Index()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            SCVM = new ShoppingCartViewModel()
            {
                OrderHeader = new OrderHeader(),
                Carts       = _unitOfWork.ShoppingCart.GetAll(
                    u => u.ApplicationUserId == claim.Value,
                    includeProperties: "Product")
            };

            SCVM.OrderHeader.OrderTotal      = 0;
            SCVM.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser.
                                               GetFirstOrDefault(u => u.Id == claim.Value,
                                                                 includeProperties: "Company");

            foreach (var cart in SCVM.Carts)
            {
                cart.Price = StaticDetails.GetPrice(
                    cart.Count, cart.Product.Price, cart.Product.Price50, cart.Product.Price100);
                SCVM.OrderHeader.OrderTotal += (cart.Price * cart.Count);
            }

            return(View(SCVM));
        }
示例#10
0
        public IActionResult Index()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            ShoppingCartViewModel = new ShoppingCartViewModel()
            {
                OrderHeader = new OrderHeader(),
                ListCart    = _unitOfWork.ShoppingCart.GetAll(u => u.ApplicationUserId == claim.Value, includeProperties: "Product")
            };
            ShoppingCartViewModel.OrderHeader.OrderTotal      = 0;
            ShoppingCartViewModel.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser
                                                                .GetFirstOrDefault(u => u.Id == claim.Value,
                                                                                   includeProperties: "Company");

            foreach (var list in ShoppingCartViewModel.ListCart)
            {
                list.Price = StaticDetails.GetPriceBasedOnQuantity(list.Count, list.Product.Price,
                                                                   list.Product.Price50, list.Product.Price100);
                ShoppingCartViewModel.OrderHeader.OrderTotal += (list.Price * list.Count);
                list.Product.Descreption = StaticDetails.ConvertToRawHtml(list.Product.Descreption);
                if (list.Product.Descreption.Length > 100)
                {
                    list.Product.Descreption = list.Product.Descreption.Substring(0, 99) + "...";
                }
            }


            return(View(ShoppingCartViewModel));
        }
示例#11
0
        private async Task MainAsync()
        {
            GetCheckDirectory.CheckDirectory();
            StaticDetails.PopulateKeys();
            Client = new DiscordSocketClient(new DiscordSocketConfig
            {
                LogLevel = LogSeverity.Debug
            });

            Commands = new CommandService(new CommandServiceConfig
            {
                CaseSensitiveCommands = true,
                DefaultRunMode        = RunMode.Async,
                LogLevel = LogSeverity.Debug
            });

            Client.MessageReceived += Client_MessageRecieved;
            await Commands.AddModulesAsync(Assembly.GetEntryAssembly(), null);

            Client.Ready += Client_Ready;
            Client.Log   += Log;

            string Token = StaticDetails.DBDBotKey;
            await Client.LoginAsync(TokenType.Bot, Token);

            await Client.StartAsync();

            await Task.Delay(-1);
        }
示例#12
0
        public IActionResult Summary()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            ShoppingCartViewModel = new ShoppingCartViewModel()
            {
                OrderHeader = new OrderHeader(),
                ListCart    = _unitOfWork.ShoppingCart.GetAll(c => c.ApplicationUserId == claim.Value, includeProperties: "Product")
            };

            ShoppingCartViewModel.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser.GetFirstOrDefault(c => c.Id == claim.Value, includeProperties: "Company");

            foreach (var list in ShoppingCartViewModel.ListCart)
            {
                list.Price = StaticDetails.GetPriceBasedOnQuantity(list.Count, list.Product.Price, list.Product.Price50, list.Product.Price100);
                ShoppingCartViewModel.OrderHeader.OrderTotal += (list.Price * list.Count);
            }

            ShoppingCartViewModel.OrderHeader.Name          = ShoppingCartViewModel.OrderHeader.ApplicationUser.Name;
            ShoppingCartViewModel.OrderHeader.PhoneNumber   = ShoppingCartViewModel.OrderHeader.ApplicationUser.PhoneNumber;
            ShoppingCartViewModel.OrderHeader.StreetAddress = ShoppingCartViewModel.OrderHeader.ApplicationUser.StreetAddress;
            ShoppingCartViewModel.OrderHeader.City          = ShoppingCartViewModel.OrderHeader.ApplicationUser.City;
            ShoppingCartViewModel.OrderHeader.State         = ShoppingCartViewModel.OrderHeader.ApplicationUser.State;
            ShoppingCartViewModel.OrderHeader.PostalCode    = ShoppingCartViewModel.OrderHeader.ApplicationUser.PostalCode;

            return(View(ShoppingCartViewModel));
        }
示例#13
0
        public IActionResult Summary()
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            SCVM = new ShoppingCartViewModel
            {
                OrderHeader = new OrderHeader(),
                Carts       = _unitOfWork.ShoppingCart.GetAll(
                    c => c.ApplicationUserId == claim.Value,
                    includeProperties: "Product")
            };

            SCVM.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser.
                                               GetFirstOrDefault(c => c.Id == claim.Value,
                                                                 includeProperties: "Company");

            foreach (var cart in SCVM.Carts)
            {
                cart.Price = StaticDetails.GetPrice(
                    cart.Count, cart.Product.Price, cart.Product.Price50, cart.Product.Price100);
                SCVM.OrderHeader.OrderTotal += (cart.Price * cart.Count);
            }

            SCVM.OrderHeader.Name          = SCVM.OrderHeader.ApplicationUser.Name;
            SCVM.OrderHeader.PhoneNumber   = SCVM.OrderHeader.ApplicationUser.PhoneNumber;
            SCVM.OrderHeader.StreetAddress = SCVM.OrderHeader.ApplicationUser.StreetAddress;
            SCVM.OrderHeader.City          = SCVM.OrderHeader.ApplicationUser.City;
            SCVM.OrderHeader.State         = SCVM.OrderHeader.ApplicationUser.State;
            SCVM.OrderHeader.PostalCode    = SCVM.OrderHeader.ApplicationUser.PostalCode;

            return(View(SCVM));
        }
示例#14
0
        /// <summary>
        /// Class file designed to save our list of player's stats, steam ID and Game to a JSON file.
        /// </summary>
        /// <param name="newEntryObj"></param>

        public void WriteToFile(DaylightStatModel.Playerstats newEntryObj)
        {
            using (StreamWriter file = File.CreateText(StaticDetails.BuildFilePath(StaticDetails.DataDirectoryPath, $"{newEntryObj.SteamId}.json")))
            {
                JsonSerializer serializer = new JsonSerializer();
                serializer.Formatting = Formatting.Indented;
                serializer.Serialize(file, newEntryObj);
            }
        }
示例#15
0
        public IActionResult Plus(int cartId)
        {
            var cart = _unitOfWork.ShoppingCart.GetFirstOrDefault(c => c.Id == cartId, includeProperties: "Product");

            cart.Count += 1;
            cart.Price  = StaticDetails.GetPriceBasedOnQuantity(cart.Count, cart.Product.Price, cart.Product.Price50, cart.Product.Price100);
            _unitOfWork.Save();
            return(RedirectToAction(nameof(Index)));
        }
        public IActionResult Plus(int cartId)
        {
            var cart = unitOfWork.ShoppingCart.GetFirstOrDefault(u => u.ShoppingCartId == cartId, includeProperties: "Product");

            cart.Count += 1;
            cart.Price  = StaticDetails.CalculateBooksPrice(cart.Count, cart.Product.Price, cart.Product.Price50, cart.Product.Price100);
            unitOfWork.Save();
            return(RedirectToAction(nameof(Index)));
        }
示例#17
0
        public async Task <IActionResult> Index()
        {
            CartDetails = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            CartDetails.OrderHeader.OrderTotal = 0;
            var ClaimIdenttity = (ClaimsIdentity)User.Identity;
            var Claim          = ClaimIdenttity.FindFirst(ClaimTypes.NameIdentifier);

            var cart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == Claim.Value).ToListAsync();

            if (cart != null)
            {
                CartDetails.ListCart = cart;
            }

            foreach (var item in CartDetails.ListCart)
            {
                //MenuItem Details from DB
                item.MenuItem = await _db.MenuItem.Where(x => x.Id == item.MenuItemId).FirstOrDefaultAsync();

                //Calculating OrderTotal
                CartDetails.OrderHeader.OrderTotal += (item.MenuItem.Price * item.Count);
                item.MenuItem.Description           = StaticDetails.ConvertToRawHtml(item.MenuItem.Description);
                //Only shows 100 character Descriptiom
                if (item.MenuItem.Description.Count() > 100)
                {
                    item.MenuItem.Description = item.MenuItem.Description.Substring(0, 99) + "...";
                }
            }

            //Storing Original Order Total Before Applying coupon

            CartDetails.OrderHeader.OrderTotalOriginal = CartDetails.OrderHeader.OrderTotal;

            if (HttpContext.Session.GetString(StaticDetails.CouponCodeSession) != null)
            {
                CartDetails.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticDetails.CouponCodeSession);
                var coupon = await _db.Coupon.Where(c => c.Name.ToUpper() == CartDetails.OrderHeader.CouponCode.ToUpper()).FirstOrDefaultAsync();

                CartDetails.OrderHeader.OrderTotal = StaticDetails.DiscountedPrice(coupon, CartDetails.OrderHeader.OrderTotalOriginal);
            }
            return(View(CartDetails));
        }
示例#18
0
        public async Task <IActionResult> OrderSummery()
        {
            CartDetails = new OrderDetailsCart()
            {
                OrderHeader = new Models.OrderHeader()
            };

            CartDetails.OrderHeader.OrderTotal = 0;
            var ClaimIdenttity = (ClaimsIdentity)User.Identity;
            var Claim          = ClaimIdenttity.FindFirst(ClaimTypes.NameIdentifier);

            ApplicationUser applicationUser = await _db.ApplicationUser.Where(u => u.Id == Claim.Value).FirstOrDefaultAsync();

            var cart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == Claim.Value).ToListAsync();

            if (cart != null)
            {
                CartDetails.ListCart = cart;
            }

            foreach (var item in CartDetails.ListCart)
            {
                //MenuItem Details from DB
                item.MenuItem = await _db.MenuItem.Where(x => x.Id == item.MenuItemId).FirstOrDefaultAsync();

                //Calculating OrderTotal
                CartDetails.OrderHeader.OrderTotal += (item.MenuItem.Price * item.Count);
            }

            //Storing Original Order Total Before Applying coupon

            CartDetails.OrderHeader.OrderTotalOriginal = CartDetails.OrderHeader.OrderTotal;
            CartDetails.OrderHeader.PickUpName         = applicationUser.Name;
            CartDetails.OrderHeader.PhoneNumber        = applicationUser.PhoneNumber;
            CartDetails.OrderHeader.PickUpTime         = DateTime.Now;

            //retrive coupon form session
            if (HttpContext.Session.GetString(StaticDetails.CouponCodeSession) != null)
            {
                CartDetails.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticDetails.CouponCodeSession);
                var coupon = await _db.Coupon.Where(c => c.Name.ToUpper() == CartDetails.OrderHeader.CouponCode.ToUpper()).FirstOrDefaultAsync();

                CartDetails.OrderHeader.OrderTotal = StaticDetails.DiscountedPrice(coupon, CartDetails.OrderHeader.OrderTotalOriginal);
            }
            return(View(CartDetails));
        }
示例#19
0
        public JsonResult GetStaticText(int IdStaic, int IdLang, int IdStaticText)
        {
            var model = new StaticDetails();


            var tblStatic = db.tblStaticResources
                            .Include(t => t.tblStaticTexts)
                            .Include(t => t.tblLanguages)
                            .Where(t => t.IdStatic == IdStaic)
                            .Where(s => s.IdLanguage == IdLang)
                            .Where(s => s.IdStaticText == IdStaticText)
                            .Select(s => new { s.tblStaticTexts.StaticText, s.Description }).ToList();

            model.Description = tblStatic[0].Description;
            model.StaticText  = tblStatic[0].StaticText;

            return(Json(model));
        }
        public IActionResult Minus(int cartId)
        {
            var cart  = unitOfWork.ShoppingCart.GetFirstOrDefault(u => u.ShoppingCartId == cartId, includeProperties: "Product");
            var count = unitOfWork.ShoppingCart.GetAll(u => u.ApplicatinUserId == cart.ApplicatinUserId).ToList().Count();

            if (cart.Count == 1)
            {
                unitOfWork.ShoppingCart.RemoveEntity(cart);
                HttpContext.Session.SetObject(StaticDetails.SessionShoppingCart, count - 1);
            }
            else
            {
                cart.Count -= 1;
                cart.Price  = StaticDetails.CalculateBooksPrice(cart.Count, cart.Product.Price, cart.Product.Price50, cart.Product.Price100);
            }
            unitOfWork.Save();
            return(RedirectToAction(nameof(Index)));
        }
示例#21
0
        public IActionResult Minus(int cartId)
        {
            var cart = _unitOfWork.ShoppingCart.GetFirstOrDefault
                           (c => c.Id == cartId, includeProperties: "Product");

            if (cart.Count == 1)
            {
                var cnt = _unitOfWork.ShoppingCart.GetAll(u => u.ApplicationUserId == cart.ApplicationUserId).ToList().Count;
                _unitOfWork.ShoppingCart.Remove(cart);
                _unitOfWork.Save();
                HttpContext.Session.SetInt32(StaticDetails.ShoppingCartSession, cnt - 1);
            }
            else
            {
                cart.Count -= 1;
                cart.Price  = StaticDetails.GetPriceBasedOnQuantity(cart.Count, cart.Product.Price,
                                                                    cart.Product.Price50, cart.Product.Price100);
                _unitOfWork.Save();
            }

            return(RedirectToAction(nameof(Index)));
        }
示例#22
0
        public async Task <IActionResult> OrderSummeryPost(string stripeToken)
        {
            var ClaimIdenttity = (ClaimsIdentity)User.Identity;
            var Claim          = ClaimIdenttity.FindFirst(ClaimTypes.NameIdentifier);

            CartDetails.ListCart = await _db.ShoppingCart.Where(c => c.ApplicationUserId == Claim.Value).ToListAsync();

            CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusPending;
            CartDetails.OrderHeader.OrderDate     = DateTime.Now;
            CartDetails.OrderHeader.UserId        = Claim.Value;
            CartDetails.OrderHeader.Status        = StaticDetails.PaymentStatusPending;
            CartDetails.OrderHeader.PickUpDate    = Convert.ToDateTime(CartDetails.OrderHeader.PickUpDate.ToShortDateString() + " " + CartDetails.OrderHeader.PickUpTime.ToShortTimeString());

            await _db.OrderHeader.AddAsync(CartDetails.OrderHeader);

            await _db.SaveChangesAsync();

            //OrderDetails List
            List <OrderDetails> OrderDetailsList = new List <OrderDetails>();



            ApplicationUser applicationUser = await _db.ApplicationUser.Where(u => u.Id == Claim.Value).FirstOrDefaultAsync();

            CartDetails.OrderHeader.OrderTotalOriginal = 0;
            foreach (var item in CartDetails.ListCart)
            {
                //MenuItem Details from DB
                item.MenuItem = await _db.MenuItem.Where(x => x.Id == item.MenuItemId).FirstOrDefaultAsync();

                //Calculating OrderTotal
                CartDetails.OrderHeader.OrderTotal += (item.MenuItem.Price * item.Count);
                OrderDetails orderDetails = new OrderDetails()
                {
                    MenuItemId  = item.MenuItem.Id,
                    OrderId     = CartDetails.OrderHeader.Id,
                    Description = item.MenuItem.Description,
                    Name        = item.MenuItem.Name,
                    Price       = item.MenuItem.Price,
                    Count       = item.Count
                };
                CartDetails.OrderHeader.OrderTotalOriginal += (item.MenuItem.Price * item.Count);
                _db.OrderDetails.Add(orderDetails);
            }

            //Calculate OrderTotal
            //retrive coupon form session
            if (HttpContext.Session.GetString(StaticDetails.CouponCodeSession) != null)
            {
                CartDetails.OrderHeader.CouponCode = HttpContext.Session.GetString(StaticDetails.CouponCodeSession);
                var coupon = await _db.Coupon.Where(c => c.Name.ToUpper() == CartDetails.OrderHeader.CouponCode.ToUpper()).FirstOrDefaultAsync();

                CartDetails.OrderHeader.OrderTotal = StaticDetails.DiscountedPrice(coupon, CartDetails.OrderHeader.OrderTotalOriginal);
            }
            else
            {
                CartDetails.OrderHeader.OrderTotal = CartDetails.OrderHeader.OrderTotalOriginal;
            }

            //Calculate Discount
            CartDetails.OrderHeader.CouponCodeDiscount = CartDetails.OrderHeader.OrderTotalOriginal - CartDetails.OrderHeader.OrderTotal;
            await _db.SaveChangesAsync();

            _db.ShoppingCart.RemoveRange(CartDetails.ListCart);
            HttpContext.Session.SetInt32(StaticDetails.ShoppingCartSession, 0);

            //var customerOptions = new CustomerCreateOptions
            //{
            //    Name = "Jenny Rosen",
            //    Address = new AddressOptions
            //    {
            //        Line1 = "510 Townsend St",
            //        PostalCode = "98140",
            //        City = "San Francisco",
            //        State = "CA",
            //        Country = "US",
            //    },
            //};
            //var customerService = new CustomerService();
            //var customer = customerService.Create(customerOptions);
            try
            {
                var options = new ChargeCreateOptions
                {
                    Amount      = Convert.ToInt32(CartDetails.OrderHeader.OrderTotal * 100),
                    Currency    = "usd",
                    Description = "Order ID : " + CartDetails.OrderHeader.Id,
                    Source      = stripeToken,
                };
                var    service = new ChargeService();
                Charge charge  = service.Create(options);

                if (charge.BalanceTransactionId == null)
                {
                    CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusRejected;
                }
                else
                {
                    CartDetails.OrderHeader.TransactionId = charge.BalanceTransactionId;
                }

                if (charge.Status.ToLower() == "succeeded")
                {
                    //send email for successfull order
                    var email   = _db.Users.Where(u => u.Id == Claim.Value).FirstOrDefault().Email;
                    var subject = "Spice-Order Created,Order ID:" + CartDetails.OrderHeader.Id;
                    var message = "Order Created successfully.";

                    await _emailSender.SendEmailAsync(email, subject, message);

                    CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusApproved;
                    CartDetails.OrderHeader.Status        = StaticDetails.StatusSubmitted;
                }
                else
                {
                    CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusRejected;
                }
                await _db.SaveChangesAsync();
            }
            catch (Exception e)
            {
                CartDetails.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusRejected;
                CartDetails.OrderHeader.Status        = StaticDetails.PaymentStatusPending;
                await _db.SaveChangesAsync();
            }

            //return RedirectToAction("Index", "Home");
            return(RedirectToAction("ConfirmOrder", "Order", new { id = CartDetails.OrderHeader.Id }));
        }
示例#23
0
        public IActionResult SummaryPost(string stripeToken)
        {
            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            ShoppingCartViewModel.OrderHeader.ApplicationUser = _unitOfWork.ApplicationUser.GetFirstOrDefault(c => c.Id == claim.Value, includeProperties: "Company");

            ShoppingCartViewModel.ListCart = _unitOfWork.ShoppingCart
                                             .GetAll(c => c.ApplicationUserId == claim.Value,
                                                     includeProperties: "Product");

            ShoppingCartViewModel.OrderHeader.PaymentStatus     = StaticDetails.PaymentStatusPending;
            ShoppingCartViewModel.OrderHeader.OrderStatus       = StaticDetails.PaymentStatusPending;
            ShoppingCartViewModel.OrderHeader.ApplicationUserId = claim.Value;
            ShoppingCartViewModel.OrderHeader.OrderDate         = DateTime.Now;

            _unitOfWork.OrderHeader.Add(ShoppingCartViewModel.OrderHeader);
            _unitOfWork.Save();

            List <OrderDetails> orderDetailsList = new List <OrderDetails>();

            foreach (var item in ShoppingCartViewModel.ListCart)
            {
                item.Price = StaticDetails.GetPriceBasedOnQuantity(item.Count, item.Product.Price,
                                                                   item.Product.Price50, item.Product.Price100);

                OrderDetails orderDetails = new OrderDetails()
                {
                    ProductId     = item.ProductId,
                    OrderHeaderId = ShoppingCartViewModel.OrderHeader.Id,
                    Price         = item.Price,
                    Count         = item.Count
                };
                ShoppingCartViewModel.OrderHeader.OrderTotal += orderDetails.Count * orderDetails.Price;
                _unitOfWork.OrderDetails.Add(orderDetails);
            }

            _unitOfWork.ShoppingCart.RemoveRange(ShoppingCartViewModel.ListCart);
            _unitOfWork.Save();
            HttpContext.Session.SetInt32(StaticDetails.ssShoppingCart, 0);

            if (stripeToken == null)
            {
                //order will be created for delayed payment for authroized company
                ShoppingCartViewModel.OrderHeader.PaymentDueDate = DateTime.Now.AddDays(30);
                ShoppingCartViewModel.OrderHeader.PaymentStatus  = StaticDetails.PaymentStatusDelayedPayment;
                ShoppingCartViewModel.OrderHeader.OrderStatus    = StaticDetails.PaymentStatusApproved;
            }
            else
            {
                //process the payment
                var options = new ChargeCreateOptions
                {
                    Amount      = Convert.ToInt32(ShoppingCartViewModel.OrderHeader.OrderTotal * 100),
                    Currency    = "usd",
                    Description = "Order ID : " + ShoppingCartViewModel.OrderHeader.Id,
                    Source      = stripeToken
                };

                var    service = new ChargeService();
                Charge charge  = service.Create(options);

                if (charge.BalanceTransactionId == null)
                {
                    ShoppingCartViewModel.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusRejected;
                }
                else
                {
                    ShoppingCartViewModel.OrderHeader.TransactionId = charge.BalanceTransactionId;
                }
                if (charge.Status.ToLower() == "succeeded")
                {
                    ShoppingCartViewModel.OrderHeader.PaymentStatus = StaticDetails.PaymentStatusApproved;
                    ShoppingCartViewModel.OrderHeader.OrderStatus   = StaticDetails.PaymentStatusApproved;
                    ShoppingCartViewModel.OrderHeader.PaymentDate   = DateTime.Now;
                }
            }

            _unitOfWork.Save();

            return(RedirectToAction("OrderConfirmation", "Cart", new { id = ShoppingCartViewModel.OrderHeader.Id }));
        }