public async Task <Portable.Models.UwtContext> GetAppContext(string email = "", string password = "") { // Sign the user in and return null if that isn't possible var signInManager = Request.GetOwinContext().Get <UwtSignInManager>(); var blocked = new LoginViewModel { Email = email, Password = password }.IsBlocked(); if (blocked || await signInManager.PasswordSignInAsync(email, password, false, false) != SignInStatus.Success) { return(new Portable.Models.UwtContext()); } var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var context = new Portable.Models.UwtContext { Shops = db.Shops.IncludeAll().Filter(userId).ToList().Select(Mapper.Map <Portable.Models.Shop>).ToArray() }; context.Shops.ForEach(s => s.Categories.ForEach(c => c.Products.ForEach(p => { p.NumberSold = db.Invoices.ProductsSold(p.Id); p.Messages = db.Messages.Filter(userId, p.Id).ActiveMessages().Count(); p.DailySails = db.GetDailySales(p.Id, 10); }))); return(context); } }
public ActionResult ditProduct(int shop, int id) { var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var myShop = db.Shops.Filter(userId).FirstOrDefault(s => s.Id == shop); var product = db.Products.IncludeAll().Filter(userId, shop).FirstOrDefault(c => c.Id == id); if (myShop == null || product == null) { return(HttpNotFound()); } ViewBag.ShopName = myShop.Name; ViewBag.ShopId = myShop.Id; var model = Mapper.Map <ProductViewModel>(product); model.NumberSold = db.Invoices.ProductsSold(product.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)); } }
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)); }