Пример #1
0
        public ActionResult CreateCategory([Bind(Exclude = "Shop")] CategoryViewModel model, int shop, HttpPostedFileBase image)
        {
            var userId = User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                var category = Mapper.Map <Category>(model);
                using (var db = new UwtContext())
                {
                    var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                    if (myShop == null)
                    {
                        return(HttpNotFound());
                    }
                    category.Shop  = myShop;
                    category.Image = image.AddUploadedImage(Server, db.Users.FirstOrDefault(u => u.Id == userId));
                    db.Categories.Add(category);
                    db.SaveChanges();
                    return(RedirectToAction("Categories", "Merchant", new { shop = myShop.Id }));
                }
            }
            using (var db = new UwtContext())
            {
                var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                if (myShop == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.ShopName = myShop.Name;
                ViewBag.ShopId   = myShop.Id;
            }
            return(View(model));
        }
Пример #2
0
        public ActionResult EditCategory([Bind(Exclude = "Shop")] CategoryViewModel model, int shop, HttpPostedFileBase image)
        {
            var userId = User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                using (var db = new UwtContext()) {
                    var myShop   = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                    var category = db.Categories.IncludeAll().Filter(userId, shop).FirstOrDefault(c => c.Id == model.Id);
                    if (myShop == null || category == null)
                    {
                        return(HttpNotFound());
                    }
                    category.Name = model.Name;
                    if (image != null && image.ContentLength > 0)
                    {
                        category.Image = image.AddUploadedImage(Server, db.Users.FirstOrDefault(u => u.Id == userId));
                    }
                    db.SaveChanges();
                    return(RedirectToAction("EditCategory", "Merchant", new { shop = myShop.Id, model.Id }));
                }
            }
            using (var db = new UwtContext()) {
                var myShop   = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                var category = db.Categories.IncludeAll().Filter(userId, shop).FirstOrDefault(c => c.Id == model.Id);
                if (myShop == null || category == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.ShopName = myShop.Name;
                ViewBag.ShopId   = myShop.Id;
                ViewBag.Products = category.Products.Select(Mapper.Map <ProductViewModel>).ToList();
            }
            return(View(model));
        }
Пример #3
0
        public ActionResult CreateShop(ShopViewModel model)
        {
            string userId = User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                var shop = Mapper.Map <Shop>(model);
                using (var db = new UwtContext())
                {
                    shop.Owner       = db.Users.FirstOrDefault(u => u.Id == userId);
                    shop.DateCreated = DateTime.UtcNow;
                    shop.PageStyle   = db.PageStyles.Filter(userId).FirstOrDefault(p => p.Id == model.PageStyle);
                    shop.PageLayout  = db.PageLayouts.FirstOrDefault(p => p.Id == model.PageLayout);
                    db.Shops.Add(shop);
                    db.SaveChanges();
                }
                return(RedirectToAction("MyShops"));
            }
            using (var db = new UwtContext()) {
                var pageStyles  = db.PageStyles.Filter(userId).ToList();
                var pageLayouts = db.PageLayouts.ToList();
                ViewBag.PageStyles = pageStyles.Select(i => new SelectListItem {
                    Text = i.Name, Value = i.Id.ToString()
                });
                ViewBag.PageLayouts = pageLayouts.Select(i => new SelectListItem {
                    Text = i.Name, Value = i.Id.ToString()
                });
            }
            return(View(model));
        }
Пример #4
0
        public ActionResult EditShop(ShopViewModel model)
        {
            var userId = User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                using (var db = new UwtContext())
                {
                    var shop = db.Shops.IncludeAll().Filter(userId).FirstOrDefault(s => s.Id == model.Id);
                    if (shop == null)
                    {
                        return(HttpNotFound());
                    }

                    var style  = db.PageStyles.Filter(userId).FirstOrDefault(s => s.Id == model.PageStyle);
                    var layout = db.PageLayouts.FirstOrDefault(l => l.Id == model.PageLayout);
                    shop.Update(model, style, layout);
                    db.SaveChanges();
                }
                return(RedirectToAction("EditShop", "Merchant", new { model.Id }));
            }
            using (var db = new UwtContext())
            {
                var pageStyles  = db.PageStyles.Filter(userId).ToList();
                var pageLayouts = db.PageLayouts.ToList();
                ViewBag.PageStyles = pageStyles.Select(i => new SelectListItem {
                    Text = i.Name, Value = i.Id.ToString(), Selected = i.Id == model.PageStyle
                });
                ViewBag.PageLayouts = pageLayouts.Select(i => new SelectListItem {
                    Text = i.Name, Value = i.Id.ToString(), Selected = i.Id == model.PageLayout
                });
                ViewBag.Invoices = db.Invoices.Filter(model.Id).Filter(DateTime.UtcNow.GetMonth(), DateTime.UtcNow).ToList().Select(Mapper.Map <InvoiceViewModel>).ToList();
            }
            return(View(model));
        }
Пример #5
0
        public bool AddToBasket(int product, int shop)
        {
            var userId = User.Identity.GetUserId();

            using (var db = new UwtContext())
            {
                var dbProduct = db.Products.Filter(shop).FirstOrDefault(p => p.Id == product);
                if (dbProduct == null)
                {
                    return(false);
                }
                var basket = db.GetCurrentBasket(userId, shop);
                if (basket.BasketItems.FirstOrDefault(i => i.Product.Id == product) != null)
                {
                    return(false);
                }

                db.BasketItems.Add(new BasketItem()
                {
                    Amount         = 1,
                    Product        = dbProduct,
                    UnitPrice      = dbProduct.DiscountedPrice(),
                    DiscountedFrom = dbProduct.UnitPrice,
                    Basket         = basket
                });
                db.SaveChanges();
                return(true);
            }
        }
Пример #6
0
        public bool SendMessage(int product, string text)
        {
            string userId = User.Identity.GetUserId();

            using (var db = new UwtContext())
            {
                var dbProduct = db.Products.IncludeAll().FirstOrDefault(p => p.Id == product);
                var user      = db.Users.FirstOrDefault(u => u.Id == userId);
                if (dbProduct == null || user == null)
                {
                    return(false);
                }
                var owner = dbProduct.Shop.Owner;
                var msg   = new Message
                {
                    DateSent     = DateTime.UtcNow,
                    DateRecieved = DateTime.MaxValue,
                    Product      = dbProduct,
                    Sender       = user,
                    Reciever     = owner,
                    Text         = "I want this"
                };
                db.Messages.Add(msg);
                db.SaveChanges();
            }
            return(true);
        }
Пример #7
0
        public bool Discounts(ShopDiscountModel model)
        {
            var userId = User.Identity.GetUserId();

            using (var db = new UwtContext()) {
                var result = db.UpdateDiscounts(model, userId);
                db.SaveChanges();
                return(result);
            }
        }
Пример #8
0
        public bool Dismiss()
        {
            string userId = User.Identity.GetUserId();

            using (var db = new UwtContext()) {
                var messages = db.Messages.Where(m => m.Reciever.Id == userId && m.DateRecieved > DateTime.UtcNow).ToList();
                messages.ForEach(m => m.DateRecieved = DateTime.UtcNow);
                db.SaveChanges();
            }
            return(true);
        }
Пример #9
0
 public bool UnblockUser(string email)
 {
     using (var db = new UwtContext())
     {
         var user = db.Users.FirstOrDefault(u => u.Email == email);
         if (user != null && user.IsBlocked())
         {
             user.Unblock();
             db.SaveChanges();
             return(true);
         }
     }
     return(false);
 }
Пример #10
0
        public ActionResult Index(int shop, string deliveryaddress, string deliveryperson)
        {
            var userId = User.Identity.GetUserId();

            using (var db = new UwtContext()) {
                var basket = db.GetCurrentBasket(userId, shop);
                if (basket != null)
                {
                    basket.DeliveryAddress = deliveryaddress;
                    basket.DeliveryPerson  = deliveryperson;
                    db.SaveChanges();
                }
                return(RedirectToAction("Index", new { shop = shop }));
            }
        }
Пример #11
0
        public int BuyBasket(int shop)
        {
            var userId = User.Identity.GetUserId();

            using (var db = new UwtContext()) {
                var basket = db.GetCurrentBasket(userId, shop);
                if (!basket.ReserveProducts(db))
                {
                    return(0);
                }
                var invoice = new Invoice {
                    Basket = basket, DateCreated = DateTime.UtcNow
                };
                db.Invoices.Add(invoice);
                db.SaveChanges();
                return(invoice.Id);
            }
        }
Пример #12
0
 public ActionResult CreateLayout(PageLayoutViewModel model, HttpPostedFileBase layout)
 {
     if (ModelState.IsValid && layout != null)
     {
         using (var db = new UwtContext())
         {
             var userId     = User.Identity.GetUserId();
             var pageLayout = Mapper.Map <PageLayout>(model);
             pageLayout.DateCreated = DateTime.UtcNow;
             pageLayout.Owner       = db.Users.FirstOrDefault(u => u.Id == userId);
             pageLayout.Layout      = layout.SaveUploadedLayout(Server);
             db.PageLayouts.Add(pageLayout);
             db.SaveChanges();
         }
         return(RedirectToAction("PageLayouts"));
     }
     return(View(model));
 }
Пример #13
0
 public ActionResult EditPageStyle(PageStyleViewModel model, HttpPostedFileBase imglogo, HttpPostedFileBase imgbackground, HttpPostedFileBase imgnav, HttpPostedFileBase imgfooter)
 {
     if (ModelState.IsValid)
     {
         var userId = User.Identity.GetUserId();
         using (var db = new UwtContext())
         {
             var pageStyle = db.PageStyles.IncludeAll().Filter(userId).FirstOrDefault(ps => ps.Id == model.Id);
             if (pageStyle == null)
             {
                 return(HttpNotFound());
             }
             pageStyle.Update(model, imglogo, imgbackground, imgnav, imgfooter, Server);
             db.SaveChanges();
         }
         return(RedirectToAction("EditPageStyle", "Merchant", new { model.Id }));
     }
     return(View(model));
 }
Пример #14
0
 public ActionResult CreatePageStyle(PageStyleViewModel model, HttpPostedFileBase imglogo, HttpPostedFileBase imgbackground, HttpPostedFileBase imgnav, HttpPostedFileBase imgfooter)
 {
     if (ModelState.IsValid)
     {
         var pageStyle = Mapper.Map <PageStyle>(model);
         var userId    = User.Identity.GetUserId();
         using (var db = new UwtContext())
         {
             pageStyle.Logo            = db.AddUploadedImage(imglogo, Server, userId);
             pageStyle.BackgroundImage = db.AddUploadedImage(imgbackground, Server, userId);
             pageStyle.NavImage        = db.AddUploadedImage(imgnav, Server, userId);
             pageStyle.FooterImage     = db.AddUploadedImage(imgfooter, Server, userId);
             pageStyle.Owner           = db.Users.FirstOrDefault(u => u.Id == userId);
             pageStyle.DateCreated     = DateTime.UtcNow;
             db.PageStyles.Add(pageStyle);
             db.SaveChanges();
         }
         return(RedirectToAction("PageStyles"));
     }
     return(View(model));
 }
Пример #15
0
 public ActionResult Index(IndexViewModel model, HttpPostedFileBase image)
 {
     if (ModelState.IsValid)
     {
         var userId = User.Identity.GetUserId();
         using (var db = new UwtContext())
         {
             var user = db.Users.Find(userId);
             user.Name        = model.Name;
             user.Surname     = model.Surname;
             user.Address     = model.Address;
             user.PhoneNumber = model.PhoneNumber;
             if (image != null)
             {
                 db.Images.Add(db.CreateUserImage(image, Server, user));
             }
             db.SaveChanges();
         }
         return(RedirectToAction("Index"));
     }
     return(View(model));
 }
Пример #16
0
        public bool UpdateBasketAmount(int product, int newAmount)
        {
            var userId = User.Identity.GetUserId();

            using (var db = new UwtContext())
            {
                var dbProduct = db.Products.IncludeAll().FirstOrDefault(p => p.Id == product);
                if (dbProduct == null)
                {
                    return(false);
                }

                var basket = db.GetCurrentBasket(userId, dbProduct.Shop.Id);
                var item   = basket.BasketItems.FirstOrDefault(i => i.Product.Id == product);
                if (item == null)
                {
                    return(false);
                }
                item.Amount = newAmount;
                db.SaveChanges();
                return(true);
            }
        }
Пример #17
0
        public async Task <ActionResult> Register(RegisterViewModel model, HttpPostedFileBase image, bool merchant)
        {
            if (ModelState.IsValid)
            {
                Image profileImage;
                using (var db = new UwtContext())
                {
                    profileImage = db.CreateUserImage(image, Server);
                    db.SaveChanges();
                }
                var user = model.ToUser(profileImage);

                try
                {
                    user.Blocked = DateTime.MaxValue;
                    var result = await UserManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        if (merchant)
                        {
                            await UserManager.AddToRoleAsync(user.Id, Roles.Merchant);
                        }
                        await SignInManager.SignInAsync(user, false, false);

                        return(RedirectToAction("Index", "Home"));
                    }
                    AddErrors(result);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            ViewBag.Merchant = merchant;
            return(View(model));
        }
Пример #18
0
        public ActionResult CreateProduct([Bind(Exclude = "Shop")] ProductViewModel model, int shop, HttpPostedFileBase image)
        {
            var userId = User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                var product = Mapper.Map <Product>(model);
                using (var db = new UwtContext()) {
                    var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                    if (myShop == null)
                    {
                        return(HttpNotFound());
                    }
                    product.Shop       = myShop;
                    product.Image      = image.AddUploadedImage(Server, db.Users.FirstOrDefault(u => u.Id == userId));
                    product.Categories = model.Categories.Select(int.Parse).Select(cid => db.Categories.IncludeAll().Filter(userId, myShop.Id).FirstOrDefault(c => c.Id == cid)).ToList();
                    product.Views      = 0;
                    db.Products.Add(product);
                    db.SaveChanges();
                    return(RedirectToAction("Products", "Merchant", new { shop = myShop.Id }));
                }
            }
            using (var db = new UwtContext()) {
                var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                if (myShop == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.ShopName   = myShop.Name;
                ViewBag.ShopId     = myShop.Id;
                ViewBag.Categories = new MultiSelectList(db.Categories.Filter(userId, myShop.Id).ToList().Select(c => new SelectListItem {
                    Text = c.Name, Value = c.Id.ToString()
                }).ToArray(), "Value", "Text", model.Categories);
            }
            return(View(model));
        }
Пример #19
0
        public ActionResult Initialize()
        {
            using (var db = new UwtContext())
            {
                var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(db));
                var userManager = new UserManager <User>(new UserStore <User>(db));

                if (!db.Roles.Any())
                {
                    roleManager.Create(new IdentityRole {
                        Name = Roles.Admin
                    });
                    roleManager.Create(new IdentityRole {
                        Name = Roles.Merchant
                    });
                    db.SaveChanges();
                }
                if (!db.Images.Any())
                {
                    db.Images.Add(new Image {
                        DateCreated = DateTime.UtcNow,
                        Path        = FilesHelper.DefaultProfileImage
                    });
                    db.SaveChanges();
                }
                if (!db.Users.Any())
                {
                    var defaultProfileImage = db.Images.FirstOrDefault(i => i.Path == FilesHelper.DefaultProfileImage);
                    var user = new User {
                        UserName      = "******",
                        Email         = "*****@*****.**",
                        ProfileImages = new List <Image> {
                            defaultProfileImage
                        },
                        Name        = "AdminsName",
                        Surname     = "AdminsSurname",
                        OwnedImages = new List <Image> {
                            defaultProfileImage
                        },
                        Blocked = DateTime.MaxValue
                    };
                    try
                    {
                        var userResult = userManager.Create(user, "123456");
                        if (userResult.Succeeded)
                        {
                            userManager.AddToRole(user.Id, Roles.Admin);
                            db.SaveChanges();
                        }
                    }
                    catch (DbEntityValidationException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                if (!db.PageLayouts.Any())
                {
                    var defaultLayout = new PageLayout
                    {
                        Name        = "Osnovni predložak",
                        DateCreated = DateTime.UtcNow,
                        Layout      = "DefaultLayout.cshtml",
                        Owner       = db.Users.FirstOrDefault(u => u.UserName == "admin")
                    };
                    db.PageLayouts.Add(defaultLayout);
                    db.SaveChanges();
                }
            }
            return(HttpNotFound());
        }
Пример #20
0
        public ActionResult EditProduct([Bind(Exclude = "Shop")] ProductViewModel model, int shop, HttpPostedFileBase image)
        {
            var userId = User.Identity.GetUserId();

            if (ModelState.IsValid)
            {
                using (var db = new UwtContext()) {
                    var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                    if (myShop == null)
                    {
                        return(HttpNotFound());
                    }

                    var product = db.Products.IncludeAll().Filter(userId, myShop.Id).FirstOrDefault(c => c.Id == model.Id);
                    if (product == null)
                    {
                        return(HttpNotFound());
                    }
                    product.Title       = model.Title;
                    product.Count       = model.Count;
                    product.Description = model.Description;
                    product.Tags        = model.Tags;
                    product.UnitPrice   = model.UnitPrice;
                    if (model.Categories != null)
                    {
                        product.Categories = model.Categories.Select(int.Parse).Select(cid => db.Categories.IncludeAll().Filter(userId, myShop.Id).FirstOrDefault(c => c.Id == cid)).ToList();
                    }
                    if (image != null && image.ContentLength > 0)
                    {
                        product.Image = image.AddUploadedImage(Server, db.Users.FirstOrDefault(u => u.Id == userId));
                    }
                    model.Image = product.Image.Source();
                    db.SaveChanges();

                    if (product.Count > 0)
                    {
                        // Mark messages as read
                        var messages = db.Messages.IncludeAll().Filter(userId, model.Id).ActiveMessages().ToList();
                        messages.ForEach(m => m.DateRecieved = DateTime.UtcNow);
                        db.SaveChanges();
                    }
                    ViewBag.Categories = new MultiSelectList(db.Categories.Filter(userId, myShop.Id).ToList().Select(c => new SelectListItem {
                        Text = c.Name, Value = c.Id.ToString()
                    }).ToArray(), "Value", "Text", model.Categories);
                }
            }
            using (var db = new UwtContext()) {
                var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop);
                if (myShop == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.ShopName   = myShop.Name;
                ViewBag.ShopId     = myShop.Id;
                ViewBag.Categories = new MultiSelectList(db.Categories.Filter(userId, myShop.Id).ToList().Select(c => new SelectListItem {
                    Text = c.Name, Value = c.Id.ToString()
                }).ToArray(), "Value", "Text", model.Categories);
                ViewBag.Sales    = db.GetDailySales(model.Id, 30);
                ViewBag.Messages = db.Messages.Filter(userId, model.Id).ActiveMessages().Count();
            }
            return(View(model));
        }