예제 #1
0
        public IActionResult Details(int id)
        {
            var product   = _repository.GetProductById(id);
            var size      = _repository.GetSizesById(id);
            var viewModel = new ProductDetailsViewModel
            {
                Product = product,
                Sizes   = size
            };

            return(View(viewModel));
        }
        public IActionResult AddToWishList(Product viewModel)
        {
            if (User.Identity.IsAuthenticated)
            {
                var    item   = _repository.GetProductById(viewModel.Id);
                var    user   = _userManager.GetUserAsync(User).Result;
                string userId = user.Id;

                var wishList = _repository.GetWishListByUserId(userId);
                if (ModelState.IsValid)
                {
                    if (wishList == null)
                    {
                        var wishListModel = new WishList();
                        wishListModel.User          = user;
                        wishListModel.WishListItems = new List <WishListItem>()
                        {
                            new WishListItem()
                            {
                                Product    = item,
                                WishListId = wishListModel.Id
                            }
                        };


                        _repository.AddEntity(wishListModel);


                        if (_repository.SaveAll())
                        {
                            //var result = new { Success = "true", message = "Uspešno ste dodali artikal u korpu. " };
                            //return Json(result);
                            FlashMessage.Info("Uspešno ste dodali artikal u listu želja. ");
                            return(RedirectToAction("Index", "Home"));
                        }
                        else
                        {
                            throw new Exception("Nije uspelo");
                        }
                    }
                    else
                    {
                        item      = _repository.GetProductById(viewModel.Id);
                        viewModel = item;

                        if (_repository.IsThereSameProductInTheWishList(wishList.Id, item.Id) != false)
                        {
                            //var result = new { Success = "true", message = "Već ste dodali ovaj artikal u korpu. " };
                            //return Json(result);


                            ModelState.AddModelError("Product", "Već ste dodali ovaj artikal u listu želja. ");
                            return(View("../Home/Details", viewModel));
                        }
                        else
                        {
                            wishList.WishListItems.Append(
                                new WishListItem()
                            {
                                Product    = item,
                                WishListId = wishList.Id
                            });


                            _repository.AddEntity(new WishListItem()
                            {
                                Product    = item,
                                WishListId = wishList.Id
                            });

                            _repository.UpdateEntity(wishList);

                            if (_repository.SaveAll())
                            {
                                //return Json(new { Success = true });
                                FlashMessage.Info("Uspešno ste dodali artikal u listu želja. ");
                                return(RedirectToAction("Index", "Home"));
                            }
                            else
                            {
                                //var result = new { Success = "true", message = "Uspešno ste dodali artikal u korpu. " };
                                //return Json(result);

                                return(RedirectToAction("Index", "Home"));
                            }
                        }
                    }
                }
                else
                {
                    viewModel = item;
                    return(View("../Home/Details", viewModel));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }
        }
        public IActionResult AddToCart(ProductDetailsViewModel viewModel)
        {
            var    item   = _repository.GetProductById(viewModel.ProductId);
            var    user   = _userManager.GetUserAsync(User).Result;
            string userId = user.Id;

            var cart = _repository.GetCartByUserId(userId);

            if (ModelState.IsValid)
            {
                if (cart == null)
                {
                    var cartModel = new Cart();
                    cartModel.User     = user;
                    cartModel.CartItem = new List <CartItem>()
                    {
                        new CartItem()
                        {
                            Product  = item,
                            Quantity = viewModel.Quantity,
                            Size     = viewModel.Size,
                            CartId   = cartModel.Id
                        }
                    };
                    cartModel.TotalPrice += item.Price * viewModel.Quantity;


                    _repository.AddEntity(cartModel);


                    if (_repository.SaveAll())
                    {
                        //var result = new { Success = "true", message = "Uspešno ste dodali artikal u korpu. " };
                        //return Json(result);
                        FlashMessage.Info("Uspešno ste dodali artikal u korpu. ");
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        throw new Exception("Nije uspelo");
                    }
                }
                else
                {
                    item = _repository.GetProductById(viewModel.ProductId);
                    viewModel.Product = item;

                    if (_repository.IsThereSameProductInTheCart(cart.Id, item.Id) != false)
                    {
                        //var result = new { Success = "true", message = "Već ste dodali ovaj artikal u korpu. " };
                        //return Json(result);


                        ModelState.AddModelError("Product", "Već ste dodali ovaj artikal u korpu. ");
                        return(View("../Home/Details", viewModel));
                    }
                    else
                    {
                        cart.CartItem.Append(
                            new CartItem()
                        {
                            Product  = item,
                            Quantity = viewModel.Quantity,
                            Size     = viewModel.Size,
                            CartId   = cart.Id
                        }
                            );



                        cart.TotalPrice += item.Price * viewModel.Quantity;



                        _repository.AddEntity(new CartItem()
                        {
                            Product  = item,
                            Quantity = viewModel.Quantity,
                            Size     = viewModel.Size,
                            CartId   = cart.Id
                        });

                        _repository.UpdateCartWithNewCartItem(cart);

                        if (_repository.SaveAll())
                        {
                            //return Json(new { Success = true });
                            FlashMessage.Info("Uspešno ste dodali artikal u korpu. ");
                            return(RedirectToAction("Index", "Home"));
                        }
                        else
                        {
                            //var result = new { Success = "true", message = "Uspešno ste dodali artikal u korpu. " };
                            //return Json(result);

                            return(RedirectToAction("Index", "Home"));
                        }
                    }
                }
            }
            else
            {
                viewModel.Sizes   = _repository.GetSizesById(item.Id);
                viewModel.Product = item;
                return(View("../Home/Details", viewModel));
            }
        }