public List <ProductSellerViewModel> GetCategoriesForProudctsInStock() { var j = from s in _context.Products.ToList() // outer sequence join st in _context.Categories.ToList() //inner sequence on s.ProductId equals st.CategoryId // key selector select new ProductSellerViewModel { // result selector s1 = s.ProductName, s2 = st.CategoryName, ProductId = s.ProductId, CategoryId = st.CategoryId }; var c = _context.Categories.Include(c => c.Products).AsNoTracking().ToList().Distinct(); var p = c.SelectMany(c => c.Products).ToList(); Dictionary <string, List <Product> > dictionary = new Dictionary <string, List <Product> >(); Dictionary <int, Category> dictionary2 = new Dictionary <int, Category>(); //foreach (var item in c) //{ // dictionary2.Add(item.CategoryId, item.); //} ProductSellerViewModel productSellerViewModel = new ProductSellerViewModel(); productSellerViewModel.Products = p.Where(p => p.Quantity > 0).ToList(); productSellerViewModel.Categories = c.ToList(); productSellerViewModel.dictionary = dictionary; productSellerViewModel.dictionary2 = dictionary2; return(j.ToList()); }
public async Task <IActionResult> Create() { var claimsIdentity = (ClaimsIdentity)this.User.Identity; var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier); var seller = await _db.Seller.Where(s => s.Id == claim.Value).FirstAsync(); ProductSellerViewModel ps = new ProductSellerViewModel() { Products = await _db.Product.ToListAsync(), ProductSale = new ProductSale(), ErrorMessage = "" }; ps.ProductSale.Seller = seller; ps.ProductSale.SellerId = claim.Value; return(View(ps)); }
public async Task <IActionResult> Create(ProductSellerViewModel model) { var claimsIdentity = (ClaimsIdentity)this.User.Identity; var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier); if (ModelState.IsValid) { var product = await _db.Product.Where(s => s.Id == model.ProductSale.ProductId).FirstAsync(); ProductSale productFromDB = await _db.ProductSale.Where(p => p.ProductId == model.ProductSale.ProductId && p.SellerId == claim.Value).FirstOrDefaultAsync(); if (productFromDB != null) { ProductSellerViewModel newModel = new ProductSellerViewModel() { Products = await _db.Product.ToListAsync(), ProductSale = model.ProductSale, ErrorMessage = "You are already selling this product. If you want to change its properties you can access its Details button" }; return(View(newModel)); } model.ProductSale.Product = product; _db.ProductSale.Add(model.ProductSale); await _db.SaveChangesAsync(); // Work on the image saving string webRootPath = _hostingEnvironment.WebRootPath; var files = HttpContext.Request.Form.Files; var prodFromDB = await _db.ProductSale.FindAsync(model.ProductSale.Id); if (files.Count > 0) { //files have been uploaded var uploads = Path.Combine(webRootPath, "images"); var extension = Path.GetExtension(files[0].FileName); using (var filesStream = new FileStream(Path.Combine(uploads, prodFromDB.Id + extension), FileMode.Create)){ files[0].CopyTo(filesStream); } prodFromDB.Image = @"/images/" + prodFromDB.Id + extension; } else { // no file was uploaded, so use default var uploads = Path.Combine(webRootPath, @"images/" + SD.DefaultProductImage); System.IO.File.Copy(uploads, webRootPath + @"/images/" + prodFromDB.Id + ".png"); prodFromDB.Image = @"/images/" + prodFromDB.Id + ".png"; } await _db.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ProductSellerViewModel ps = new ProductSellerViewModel() { Products = await _db.Product.ToListAsync(), ProductSale = model.ProductSale }; return(View(ps)); }