コード例 #1
0
        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());
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }