public void PlaceOrder()
        {
            //uzeti cart listu
            List <CartVM> listCart = Session["cart"] as List <CartVM>;
            //pronaci username
            string username = User.Identity.Name;
            //inicijalizovati orderId
            int orderID = 0;

            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //inicijalizovati OrdersDTO
                OrdersDTO ordersDTO = new OrdersDTO();
                //Pronaci UserId
                var query  = db.Users.FirstOrDefault(x => x.Username == username);
                int userId = query.Id;
                //dodati u OrdersDTO i sacuvati
                ordersDTO.UserID    = userId;
                ordersDTO.CreatedAt = DateTime.Now;

                db.Orders.Add(ordersDTO);

                db.SaveChanges();
                //Pronaci ubaceni id
                orderID = ordersDTO.OrderID;
                //inicijalizovati OrderDetailsDTO
                OrderDetailsDTO orderDetailsDTO = new OrderDetailsDTO();
                //dodati u OrderDetailsDTO
                foreach (var item in listCart)
                {
                    orderDetailsDTO.OrderID   = orderID;
                    orderDetailsDTO.UserID    = userId;
                    orderDetailsDTO.ProductID = item.ProductId;
                    orderDetailsDTO.Quantity  = item.Quantity;

                    db.OrderDetails.Add(orderDetailsDTO);
                    db.SaveChanges();
                }
            }

            //poslati email admin-u
            var client = new SmtpClient("smtp.mailtrap.io", 2525)
            {
                Credentials = new NetworkCredential("600ce557b90f2a", "bdc3aca380f02f"),
                EnableSsl   = true
            };

            client.Send("*****@*****.**", "*****@*****.**", "New Order", "You have a new order, order number is : " + orderID);
            Console.WriteLine("Sent");
            //resetovati ssesion
            Session["cart"] = null;
        }
Exemplo n.º 2
0
        public ActionResult CreateAccount(UserVM model)
        {
            //proveriti stanje modela
            if (!ModelState.IsValid)
            {
                return(View("CreateAccount", model));
            }
            //proveriti da li se slazu passwordi
            if (!model.Password.Equals(model.ConfirmPassword))
            {
                ModelState.AddModelError("", "Password and Confirm Password doesn't match!");
                return(View("CreateAccount", model));
            }
            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //proveriti da li je username unikatan
                if (db.Users.Any(x => x.Username.Equals(model.Username)))
                {
                    ModelState.AddModelError("", "Username is taken");
                    model.Username = "";
                    return(View("CreateAccount", model));
                }
                //napraviti userDTO
                UserDTO dto = new UserDTO()
                {
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    Email     = model.Email,
                    Username  = model.Username,
                    Password  = model.Password
                };
                //dodati dto
                db.Users.Add(dto);
                //sacuvati
                db.SaveChanges();
                //dodati u UserRolesDTO
                int id = dto.Id;

                UserRolesDTO userRolesDTO = new UserRolesDTO()
                {
                    UserId = id,
                    RoleID = 2
                };
                db.UserRoles.Add(userRolesDTO);
                db.SaveChanges();
            }
            //napraviti temp poruku
            TempData["SM"] = "You succesfully registrated!";
            //redirektovati
            return(Redirect("~/account/login"));
        }
Exemplo n.º 3
0
        //catName dolazi iz Ajax
        public string AddNewCategory(string catName)
        {
            //Deklarisati id
            string id;

            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //proveriti da li je category ime jedinstveno
                if (db.Categories.Any(x => x.Name == catName))
                {
                    return("titletaken");
                }
                //inicijalizovati DTO
                CategoriesDTO dto = new CategoriesDTO();
                //Dodati u DTO
                dto.Name = catName;
                dto.Slug = catName.Replace(" ", "-").ToLower();
                //ista logika kao i za pageove kada se doda kategorija bice poslednja
                dto.Sorting = 100;
                //sacuvati DTO
                db.Categories.Add(dto);
                db.SaveChanges();
                //uzeti ubaceni id
                id = dto.Id.ToString();
            }
            //vratiti taj id
            return(id);
        }
Exemplo n.º 4
0
        public ActionResult UserProfile(UserProfileVM model)
        {
            //Proveriti stanje modela
            if (!ModelState.IsValid)
            {
                return(View("UserProfile", model));
            }

            //proveriti da lis e passwordi podudaraju

            if (!string.IsNullOrEmpty(model.Password))
            {
                if (!model.Password.Equals(model.ConfirmPassword))
                {
                    ModelState.AddModelError("", "Password and Confirm Password fields doesn't match");
                    return(View("UserProfile", model));
                }
            }



            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //pronaci username
                string username = User.Identity.Name;
                //proveriti da li je jedinstven username
                if (db.Users.Where(x => x.Id != model.Id).Any(x => x.Username == username))
                {
                    ModelState.AddModelError("", "That Username is taken!");
                    model.Username = "";
                    return(View("UserProfile", model));
                }

                //Editovati DTO
                UserDTO dto = db.Users.Find(model.Id);
                dto.FirstName = model.FirstName;
                dto.LastName  = model.LastName;
                dto.Username  = model.Username;
                dto.Email     = model.Email;

                if (!string.IsNullOrEmpty(model.Password))
                {
                    dto.Password = model.Password;
                }

                //Sacuvati DTO
                db.SaveChanges();
            }
            //postaviti TempData poruku
            TempData["SM"] = "You successfully edited your profile";
            //Redirektovati
            return(Redirect("~/account/user-profile"));
        }
        public ActionResult AddPAge(PageVM model)
        {
            //Proveriti model
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //Deklarisati Slug
                string slug;
                //Inicijalizacija DTO(Data transfer Object) PageDTO
                PageDTO dto = new PageDTO();
                //Koristiti da se doda vrednost za title u DTO
                dto.Title = model.Title;
                //Proveriti i dodati Slug ako je potrebno
                if (string.IsNullOrWhiteSpace(model.Slug))
                {
                    //Ukoliko je ostavljen white space ili nepostoji uzecemo title zameniti white space sa - i prebaciti u mala slova
                    slug = model.Title.Replace(" ", "-").ToLower();
                }
                else
                {
                    //Ukoliko ima nesto napiosano opet cemo prtazna polja zameniti sa - i prebaciti u mala slova
                    slug = model.Slug.Replace(" ", "-").ToLower();
                }
                //Pobrinuti se da su Title i Slug unikatni
                if (db.Pages.Any(x => x.Title == model.Title || db.Pages.Any(s => s.Slug == slug)))
                {
                    ModelState.AddModelError("", "That title or a slug already exists!");
                    return(View(model));
                }

                //Popuniti ostatak DTO-a
                dto.Slug       = slug;
                dto.Body       = model.Body;
                dto.HasSidebar = model.HasSidebar;
                //Ideja je da kada se doda nova stranica uvek bude zadnja(radunamo da nece biti vise od sto stranica napravljeno u isto vreme)
                dto.Sorting = 100;
                //Sacuvati DTO
                db.Pages.Add(dto);
                //Sacuvati u bazi podataka
                db.SaveChanges();
            }

            //Sacuvati privremenu poruku koja ostaje i posle requesta(za razliku od viewbage koji je bas privremen nestaje posle requesta),ovde koristimo da bi ostao i da bi smo mogli da ga dodamo u view
            TempData["SM"] = "You succesfully added a new page";
            //Redirektiovati na add page koji je onaj gore get
            return(RedirectToAction("AddPAge"));
        }
        public ActionResult EditPage(PageVM model)
        {
            //Proveriti da li postoji model
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //Pronaci page id
                int id = model.Id;
                //Inicijalizovati slug
                string slug = "home";
                //Pronaci page
                PageDTO page = db.Pages.Find(id);
                //DTO title
                page.Title = model.Title;
                //Proveriti da li je popunjen slug i postaviti ga ukoliko je potrebno
                if (model.Slug != "home")
                {
                    if (string.IsNullOrWhiteSpace(model.Slug))
                    {
                        slug = model.Title.Replace(" ", "-").ToLower();
                    }
                    else
                    {
                        slug = model.Slug.Replace(" ", "-").ToLower();
                    }
                }
                //Proveriti da li su Title i Slug unikatni
                if (db.Pages.Where(x => x.Id != id).Any(x => x.Title == model.Title) ||
                    db.Pages.Where(x => x.Id != id).Any(x => x.Slug == slug))
                {
                    ModelState.AddModelError("", "Title or Slug already exists!!!");
                    return(View(model));
                }
                //DTO ostatak
                page.Slug       = slug;
                page.Body       = model.Body;
                page.HasSidebar = model.HasSidebar;

                //Sacuvati DTO
                db.SaveChanges();
            }
            //Postaviti TempData poruku
            TempData["SM"] = "You have edited page!";

            //Redirektovati
            return(RedirectToAction("EditPage"));
        }
 //Get: Admin/Pages/DeletePage/id
 public ActionResult DeletePage(int id)
 {
     using (ShoppingCartDB db = new ShoppingCartDB())
     {
         //Pronaci page sa id-om u bazi
         PageDTO dto = db.Pages.Find(id);
         //Ukloniti taj page
         db.Pages.Remove(dto);
         //Sacuvati promene u bazi
         db.SaveChanges();
     }
     //Redirektovati na index
     return(RedirectToAction("Index"));
 }
Exemplo n.º 8
0
 //Get: Admin/Shop/DeleteCategory/id
 public ActionResult DeleteCategory(int id)
 {
     using (ShoppingCartDB db = new ShoppingCartDB())
     {
         //Pronaci Category sa id-om u bazi
         CategoriesDTO dto = db.Categories.Find(id);
         //Ukloniti taj Category
         db.Categories.Remove(dto);
         //Sacuvati promene u bazi
         db.SaveChanges();
     }
     //Redirektovati na index
     return(RedirectToAction("Categories"));
 }
 public ActionResult EditSidebar(SidebarVM model)
 {
     using (ShoppingCartDB db = new ShoppingCartDB())
     {
         //Uzmi DTO
         SidebarDTO dto = db.Sidebar.Find(1);
         //DTO body
         dto.Body = model.Body;
         //Sacuvaj
         db.SaveChanges();
     }
     //Postavi TempData poruku
     TempData["SM"] = "You succesfully edited a sidebar!!!";
     //Redirect
     return(RedirectToAction("EditSidebar"));
 }
Exemplo n.º 10
0
 public string RenameCategory(string newCatName, int id)
 {
     using (ShoppingCartDB db = new ShoppingCartDB())
     {
         //proveriti da li je ime kategorije unikatno
         if (db.Categories.Any(x => x.Name == newCatName))
         {
             return("titletaken");
         }
         //Uzeti DTO
         CategoriesDTO dto = db.Categories.Find(id);
         //Prepraviti DTO
         dto.Name = newCatName;
         dto.Slug = newCatName.Replace(" ", "-").ToLower();
         //Sacuvati
         db.SaveChanges();
     }
     //Vratiti
     return("done");
 }
 public void ReorderPages(int[] id)
 {
     using (ShoppingCartDB db = new ShoppingCartDB())
     {
         // napraviti brojac
         int br = 1;
         //Deklarisanje PageDTO
         PageDTO dto;
         //Postaviti sorting za svaki page
         foreach (var item in id)
         {
             //pronadji page sa vrednoscu koju trenutno ima item u db
             dto = db.Pages.Find(item);
             //postavi soting da bude isti kao i br
             dto.Sorting = br;
             //sacuvaj promene u db
             db.SaveChanges();
             //inkrementuj brojac
             br++;
         }
     }
 }
Exemplo n.º 12
0
        //Get: Admin/Shop/DeleteProduct/id
        public ActionResult DeleteProduct(int id)
        {
            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //Obrisati product iz baze podataka
                ProductsDTO dto = db.Products.Find(id);
                db.Products.Remove(dto);
                db.SaveChanges();
            }
            //obristai folder koji je veazn za product
            var rootDirectory = new DirectoryInfo(string.Format("{0}Images\\Uploads", Server.MapPath(@"\")));
            //putanja za products folder
            var pathStringProducts = Path.Combine(rootDirectory.ToString(), "Products" + id.ToString());

            if (Directory.Exists(pathStringProducts))
            {
                Directory.Delete(pathStringProducts, true);
            }

            //redirektovati
            return(RedirectToAction("Products"));
        }
Exemplo n.º 13
0
        public ActionResult EditProduct(ProductsVM model, HttpPostedFileBase file)
        {
            //Uzeti product id
            int id = model.Id;

            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //Napuniti select listu kategorije i galeriju slika
                model.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");
            }
            model.GalleryImages = Directory.EnumerateFiles(Server.MapPath("~/Images/Uploads/Products/" + id + "/Gallery/Thumbs")).Select(x => Path.GetFileName(x));
            //proveriti stanje modela
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            //proveriti da li je ime product-a jedinstven0
            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //ne racunajuci ovaj red da li postoji jos nesto pod ovim imenom ako postoji izbacujemo gresku
                if (db.Products.Where(x => x.Id != id).Any(x => x.Name == model.Name))
                {
                    ModelState.AddModelError("", "That product name already exists!!!");
                    return(View(model));
                }
            }
            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //preraditi product
                ProductsDTO dto = db.Products.Find(id);
                dto.Name        = model.Name;
                dto.Slug        = model.Name.Replace(" ", "-").ToLower();
                dto.Price       = model.Price;
                dto.CategoryId  = model.CategoryId;
                dto.ImageName   = model.ImageName;
                dto.Description = model.Description;

                CategoriesDTO cat = db.Categories.FirstOrDefault(x => x.Id == model.CategoryId);
                dto.CategoryName = cat.Name;

                db.SaveChanges();
            }
            //postaviti temp data poruku
            TempData["SM"] = "You succesfully edited the product!!!";

            #region Upload slike

            //Proveriti da li je uplodovana slika
            if (file != null && file.ContentLength > 0)
            {
                //pronaci koja je eksenzija
                string extension = file.ContentType.ToLower();
                //Verifikovati ekstenziju
                if (extension != "image/jpg" && extension != "image/jpeg" && extension != "image/pjpeg" && extension != "image/gif" && extension != "image/x-png" && extension != "image/png")
                {
                    using (ShoppingCartDB db = new ShoppingCartDB())
                    {
                        ModelState.AddModelError("", "That format is not supported,the image was not uploaded!!!");
                        return(View(model));
                    }
                }
                //Postaviti koji ce biti Upload Direktorijum putanja
                var rootDirectory = new DirectoryInfo(string.Format("{0}Images\\Uploads", Server.MapPath(@"\")));
                //putanja za produt id folder
                var pathStringProductsId = Path.Combine(rootDirectory.ToString(), "Products\\" + id.ToString());
                //putanja za product thumbnail folder
                var pathStringProductsTumb = Path.Combine(rootDirectory.ToString(), "Products\\" + id.ToString() + "\\Thumbs");

                //Obrisati sliku iz direktorijuma
                DirectoryInfo directory  = new DirectoryInfo(pathStringProductsId);
                DirectoryInfo directory1 = new DirectoryInfo(pathStringProductsTumb);

                foreach (FileInfo file1 in directory.GetFiles())
                {
                    file1.Delete();
                }
                foreach (FileInfo file2 in directory1.GetFiles())
                {
                    file2.Delete();
                }
                //Sacuvati ime slike

                string imgName = file.FileName;

                using (ShoppingCartDB db = new ShoppingCartDB())
                {
                    ProductsDTO dto = db.Products.Find(id);
                    dto.ImageName = imgName;

                    db.SaveChanges();
                }
                //Sacuvati orginalnu i thumb sliku
                //postaviit putanje za Orginalnu sliku i tumb sliku
                var path  = string.Format("{0}\\{1}", pathStringProductsId, imgName);
                var path1 = string.Format("{0}\\{1}", pathStringProductsTumb, imgName);
                //Sacuvati orginalnu sliku
                file.SaveAs(path);
                //Napraviti i sacuvati tumb
                WebImage img = new WebImage(file.InputStream);
                img.Resize(200, 200);
                img.Save(path1);
            }

            #endregion

            //redirectovati
            return(RedirectToAction("EditProduct"));
        }
Exemplo n.º 14
0
        public ActionResult AddProducts(ProductsVM model, HttpPostedFileBase file)
        {
            //proveriti stanje modela
            if (!ModelState.IsValid)
            {
                //Zbog slect liste morace da se popuni svaki put pre nego sto se vrati view
                using (ShoppingCartDB db = new ShoppingCartDB())
                {
                    model.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");
                    return(View(model));
                }
            }
            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                //proveriti da li je Name product-a unikatno
                if (db.Products.Any(x => x.Name == model.Name))
                {
                    model.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");
                    ModelState.AddModelError("", "That product name already exists!!!");
                    return(View(model));
                }
            }

            //Deklarisati product id
            int id;

            //Inicijalizovati i sacuvati ProductsDTO
            using (ShoppingCartDB db = new ShoppingCartDB())
            {
                ProductsDTO product = new ProductsDTO();
                product.Name        = model.Name;
                product.Slug        = model.Name.Replace(" ", "-").ToLower();
                product.Description = model.Description;
                product.Price       = model.Price;
                product.CategoryId  = model.CategoryId;

                //Pronaci ime koje je izbrano iz Category
                CategoriesDTO category = db.Categories.FirstOrDefault(x => x.Id == model.CategoryId);
                product.CategoryName = category.Name;

                db.Products.Add(product);
                db.SaveChanges();
                //Uzeti ubaceni Id
                id = product.Id;
            }

            //Postaviti TempData poruku(postavljamo sad u slucaju da korisnik pokusa da ubaci text file ili neku drugu vrstu file-a da obavestimo da je dodato sve osim slike )
            TempData["SM"] = "You have added a new product!";

            #region Upload slike
            //napraviti direktorijume za cuvanje slika
            var rootDirectory = new DirectoryInfo(string.Format("{0}Images\\Uploads", Server.MapPath(@"\")));
            //putanja za products folder
            var pathStringProducts = Path.Combine(rootDirectory.ToString(), "Products");
            //putanja za produt id folder
            var pathStringProductsId = Path.Combine(rootDirectory.ToString(), "Products\\" + id.ToString());
            //putanja za product thumbnail folder
            var pathStringProductsTumb = Path.Combine(rootDirectory.ToString(), "Products\\" + id.ToString() + "\\Thumbs");
            //putanja za Galeriju folder
            var pathStringProductsGallery = Path.Combine(rootDirectory.ToString(), "Products\\" + id.ToString() + "\\Gallery");
            //putanja za galery thumbove folder
            var pathStringProductsGalleryThumbs = Path.Combine(rootDirectory.ToString(), "Products\\" + id.ToString() + "\\Gallery\\Thumbs");

            //ukoliko ne posto je stvoriti ih(stvorice se samo ukoliko se prvi put dodaje slika)
            if (!Directory.Exists(pathStringProducts))
            {
                Directory.CreateDirectory(pathStringProducts);
            }
            if (!Directory.Exists(pathStringProductsId))
            {
                Directory.CreateDirectory(pathStringProductsId);
            }
            if (!Directory.Exists(pathStringProductsTumb))
            {
                Directory.CreateDirectory(pathStringProductsTumb);
            }
            if (!Directory.Exists(pathStringProductsGallery))
            {
                Directory.CreateDirectory(pathStringProductsGallery);
            }
            if (!Directory.Exists(pathStringProductsGalleryThumbs))
            {
                Directory.CreateDirectory(pathStringProductsGalleryThumbs);
            }

            //proveriti da li je file uplodovan

            if (file != null && file.ContentLength > 0)
            {
                //uzeti file extension
                string extension = file.ContentType.ToLower();
                //verifikovati extenziju
                if (extension != "image/jpg" && extension != "image/jpeg" && extension != "image/pjpeg" && extension != "image/gif" && extension != "image/x-png" && extension != "image/png")
                {
                    using (ShoppingCartDB db = new ShoppingCartDB())
                    {
                        model.Categories = new SelectList(db.Categories.ToList(), "Id", "Name");
                        ModelState.AddModelError("", "That format is not supported,the image was not uploaded!!!");
                        return(View(model));
                    }
                }
                //inicijalizovati ime slike
                string imgName = file.FileName;
                //Sacuvati ime slike u DTO
                using (ShoppingCartDB db = new ShoppingCartDB())
                {
                    ProductsDTO dto = db.Products.Find(id);
                    dto.ImageName = imgName;

                    db.SaveChanges();
                }
                //postaviit putanje za Orginalnu sliku i tumb sliku
                var path  = string.Format("{0}\\{1}", pathStringProductsId, imgName);
                var path1 = string.Format("{0}\\{1}", pathStringProductsTumb, imgName);
                //Sacuvati orginalnu sliku
                file.SaveAs(path);
                //Napraviti i sacuvati tumb
                WebImage img = new WebImage(file.InputStream);
                img.Resize(200, 200);
                img.Save(path1);
            }
            #endregion

            //Redirekt
            return(RedirectToAction("AddProducts"));
        }