예제 #1
0
        public async Task <ActionResult <Rating> > Delete(int id)
        {
            // Request a new token
            var token = await webAPIToken.New();

            // Get rating by id
            var rating = await webAPI.GetOneAsync <Rating>(ApiURL.RATING_BY_ID + id, token);

            // Get user by id
            rating.User = await webAPI.GetOneAsync <User>(ApiURL.USER_BY_ID + rating.UserId, token);

            // Get product by id
            var product = await webAPI.GetOneAsync <AllProductsViewModel>(ApiURL.PRODUCTS + rating.ProductId, token);

            rating.Product = new Product
            {
                Name     = product.Name,
                Category = new Category {
                    Name = product.Name
                },
                Brand = new Brand {
                    Name = product.BrandName
                },
                Photo = product.Photo
            };

            return(View(rating));
        }
예제 #2
0
        public async Task <IActionResult> Index()
        {
            var token = await webAPIToken.New();

            var allUserOrders = await webAPI.GetAllAsync <AllUserOrders>(ApiURL.ORDERS_BY_USER + User.Identity.Name, token);

            return(View(allUserOrders));
        }
예제 #3
0
        public async Task <IActionResult> Update([Bind] News model)
        {
            var token = await webAPIToken.New();

            var result = await webAPI.UpdateAsync <News>(model, ApiURL.NEWS + model.Id, token);

            TempData["Article"] = "Nyhetsartikeln har uppdaterats";

            return(RedirectToAction("Index"));
        }
예제 #4
0
        public async Task <IActionResult> Index()
        {
            var cartId = HttpContext.Session.GetString(_cartSessionCookie);

            // Does user have a shoppingcart Id?
            if (cartId == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            // Are there any products in the cart??
            var content = await webAPI.GetAllAsync <OrderItemsModel>(ApiURL.CARTS_CONTENT + cartId);

            if (content.Count == 0)
            {
                return(RedirectToAction("Index", "ShoppingCart"));
            }

            // Is user logged in?
            if (User.Identity.IsAuthenticated)
            {
                orderviewmodel = await webAPI.GetOneAsync <OrderViewModel>(ApiURL.CARTS_CONTENT_PAY + $"{cartId}/{User.Identity.Name}");

                // Does user have a complete shippingaddress?
                if (!orderviewmodel.AddressComplete)
                {
                    TempData["Address Null"] = "Vänligen ange din adressinformation";
                }

                // Check if order contains products out of stock
                if (orderviewmodel.Products.Any(x => x.QuantityInStock - x.Amount < 0))
                {
                    TempData["QuantityOverload"] = "Din order innehåller ett större antal produkter än vad vi har på lager vilket påverkar leveranstiden.";
                }
            }
            else
            {
                TempData["LoginNeeded"] = "Du måste vara inloggad för att kunna handla...";
                return(RedirectToAction("Index", "ShoppingCart"));
            }

            OrderAndPaymentMethods.OrderViewModel = orderviewmodel;

            var token = await webAPIToken.New();

            OrderAndPaymentMethods.User = await webAPI.GetOneAsync <User>(ApiURL.USERS + User.Identity.Name, token);

            return(View(OrderAndPaymentMethods));
        }
예제 #5
0
        public async Task <IActionResult> EditCategory([Bind] Category model)
        {
            model.categoryCollection = await GetAllCategories();

            if (ModelState.IsValid)
            {
                // If category contains an Id, update it, else create new category!
                if (model.Id > 0)
                {
                    var result = model.categoryCollection.Where(x => x.Id == model.Id).FirstOrDefault();
                    result.Name = model.Name;

                    var token = await webAPIToken.New();

                    var response = await webAPI.UpdateAsync(result, ApiURL.CATEGORIES + result.Id, token);

                    TempData["CategoryUpdate"] = "Kategorin har uppdaterats!";
                }
                else
                {
                    // Does category already exist?
                    if (model.categoryCollection.Any(x => x.Name == model.Name))
                    {
                        ModelState.AddModelError("Name", "Kategorin finns redan registrerad!");
                        return(View("EditCategory", model));
                    }

                    // Create new category
                    var category = new Category()
                    {
                        Name = model.Name
                    };

                    // Post to API
                    var token = await webAPIToken.New();

                    var response = await webAPI.PostAsync <Category>(category, ApiURL.CATEGORIES, token);

                    TempData["NewCategory"] = "Ny kategori har skapats!";
                }

                return(RedirectToAction("EditCategory", "Category", new { id = "" }));
            }
            else
            {
                return(View("EditCategory", model));
            }
        }
예제 #6
0
        public async Task <IActionResult> Edit([Bind] Brand model)
        {
            model.BrandsCollection = await GetAllBrands();

            if (ModelState.IsValid)
            {
                if (model.Id > 0)
                {
                    var brand = model.BrandsCollection.Where(x => x.Id == model.Id).FirstOrDefault();
                    brand.Name = model.Name;

                    var token = await webAPIToken.New();

                    var response = await webAPI.UpdateAsync(brand, ApiURL.BRANDS, token);
                }
                else
                {
                    // Does brand already exist?
                    if (model.BrandsCollection.Any(x => x.Name == model.Name))
                    {
                        ModelState.AddModelError("Name", "Tillverkaren finns redan registrerad!");
                        return(View("index", model));
                    }

                    // Create new brand
                    var brand = new Brand()
                    {
                        Name = model.Name
                    };

                    // Post to API
                    var token = await webAPIToken.New();

                    var response = await webAPI.PostAsync(brand, ApiURL.BRANDS, token);

                    TempData["NewBrand"] = "Ny tillverkare har skapats!";
                }

                return(RedirectToAction("index", "Brand"));
            }
            else
            {
                return(View("index", model));
            }
        }
예제 #7
0
        public async Task <ActionResult> EditUser()
        {
            var email = User.Identity.Name;

            var token = await webAPIToken.New();

            var user = await webAPI.GetOneAsync <User>(ApiURL.USERS + email, token);

            var editUserInfoModel = new EditUserInfoModel()
            {
                Email         = user.Email,
                FirstName     = user.FirstName,
                LastName      = user.LastName,
                PhoneNumber   = user.PhoneNumber,
                StreetAddress = user.StreetAddress,
                ZipCode       = user.ZipCode,
                City          = user.City
            };

            return(View(editUserInfoModel));
        }
예제 #8
0
        public async Task <ActionResult <IEnumerable <AllProductsViewModel> > > Index(string searchtext)
        {
            List <AllProductsViewModel> products = new List <AllProductsViewModel>();

            // Anything to search for
            if (searchtext != null)
            {
                // Admin search
                if (User.Identity.IsAuthenticated && User.IsInRole("Admin"))
                {
                    var token = await webAPIToken.New();

                    products = await webAPI.GetAllAsync <AllProductsViewModel>(ApiURL.SEARCH_ADMIN + searchtext.ToLower(), token);
                }
                else
                {
                    products = await webAPI.GetAllAsync <AllProductsViewModel>(ApiURL.SEARCH + searchtext.ToLower());
                }

                return(View(products));
            }

            return(RedirectToAction("AllProducts", "Product"));
        }
예제 #9
0
        public async Task <ActionResult> CreateProduct(IFormFile file, [Bind] AllProductsViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (!IsUploadedFileImage(file))
                    {
                        ModelState.AddModelError("Photo", "Filen är ogiltig!");
                        TempData["Errors"] = "Filen är ogiltig!";
                        model.Categories   = await webAPI.GetAllAsync <Category>(ApiURL.CATEGORIES);

                        model.Brands = await webAPI.GetAllAsync <Brand>(ApiURL.BRANDS);

                        return(View(model));
                    }

                    // Instantiate new product
                    Product newProduct = new Product()
                    {
                        Name            = model.Name,
                        Price           = model.Price,
                        Quantity        = model.Quantity,
                        CategoryId      = model.CategoryId,
                        BrandId         = model.BrandId,
                        Description     = model.Description,
                        FullDescription = model.FullDescription,
                        Specification   = model.Specification,
                        Discount        = model.Discount,
                        ActiveProduct   = model.ActiveProduct
                    };

                    // Request token
                    var token = await webAPIToken.New();

                    // Store product
                    var apiResonse = await webAPI.PostAsync(newProduct, ApiURL.PRODUCTS, token);

                    // Deserialize API response content and get ID of newly created product
                    var newProductId = webAPI.DeserializeJSON <AllProductsViewModel>(apiResonse.ResponseContent).Id;
                    newProduct.Id = newProductId;

                    // Store image in www root folder with unique product Id
                    if (file != null)
                    {
                        // Set category folder name
                        var folderName = await GetCategoryName(model.CategoryId);

                        // Store new image
                        ProductImage productImage = new ProductImage(environment.WebRootPath, folderName, file);
                        newProduct.Photo = productImage.StoreImage(newProduct.Id);
                    }

                    // Update product with image
                    var response = webAPI.UpdateAsync <Product>(newProduct, ApiURL.PRODUCTS + newProduct.Id, token);
                }

                else
                {
                    model.Categories = await webAPI.GetAllAsync <Category>(ApiURL.CATEGORIES);

                    model.Brands = await webAPI.GetAllAsync <Brand>(ApiURL.BRANDS);

                    TempData["Errors"] = "Fyll i formuläret ordentligt";
                    return(View(model));
                }

                TempData["Succesmsg"] = $"Great!! {model.Name} skapad i databasen";
                return(RedirectToAction("AllProducts", "Product"));
            }
            catch
            {
                TempData["Database error"] = "Sorry!! Något gick fel när du lägger Data till databasen";
                return(RedirectToAction("CreateProduct", "Product"));
            }
        }