public IActionResult Announce(AnnounceViewModel model) { var date = DateTime.Now; if (ModelState.IsValid) { string uniqueFileName = null; if (model.ImageFile != null) { uniqueFileName = Utils.FileProcess.UploadFile(model.ImageFile, hostingEnvironment); } var article = new Article { Name = model.Name, Category = model.getCategory(), Price = model.Price, Description = model.Description, SellerUserName = User.Identity.Name, ImageFilePath = uniqueFileName, }; context.Articles.Add(article); context.SaveChanges(); var announcement = new Announcement { Title = model.Title, Date = date, ArticleId = article.Id, }; context.Announcements.Add(announcement); context.SaveChanges(); return(RedirectToAction("Announcements")); } return(View(model)); }
public IActionResult Announcements(double?maxPrice, double?minPrice, string searchText = "", string category = "", int page = 1, string seller = "", string state = "All") { var announcements = from announcement in context.Announcements join article in context.Articles on announcement.ArticleId equals article.Id select new AnnounceViewModel { Id = announcement.Id, ArticleId = article.Id, Title = announcement.Title, SellerUserName = article.SellerUserName, Date = announcement.Date, Name = article.Name, Category = article.Category.ToString(), Price = article.Price, Description = article.Description, Sold = article.Sold, Owner = article.Owner, }; // Filter by category if (!string.IsNullOrEmpty(category) && category.ToLower() != "all") { announcements = announcements.Where(e => e.getCategory() == AnnounceViewModel.getCategory(category)); } // Filter by price if (minPrice != null) { announcements = announcements.Where(e => e.Price >= minPrice); } if (maxPrice != null) { announcements = announcements.Where(e => e.Price <= maxPrice); } // Filter by text if (!string.IsNullOrEmpty(searchText)) { announcements = announcements.Where(e => e.Description.Contains(searchText, StringComparison.CurrentCultureIgnoreCase) || e.Title.Contains(searchText, StringComparison.CurrentCultureIgnoreCase) || e.SellerUserName.Contains(searchText, StringComparison.CurrentCultureIgnoreCase) ); } if (!string.IsNullOrEmpty(seller)) { announcements = announcements.Where(e => e.SellerUserName.Equals(seller)); } if (!User.IsInRole("Admin")) { announcements = announcements.Where(e => !e.Sold); } else { if (state.ToLower() == "free") { announcements = announcements.Where(e => !e.Sold); } else if (state.ToLower() == "sold") { announcements = announcements.Where(e => e.Sold); } } int amount = announcements.Count(); announcements = announcements.OrderByDescending(e => e.Date).Skip(4 * (page - 1)).Take(4); return(View(new AnnouncementsViewModel { Announcements = announcements, Page = page, SearchText = searchText, MinPrice = minPrice, MaxPrice = maxPrice, Category = category, TotalPages = (int)Math.Ceiling((decimal)amount / 4), Seller = seller, State = state })); }
public IActionResult Auctions(double?minPrice, double?maxPrice, string searchText = "", string aCategory = "All", string state = "", int page = 1) { var auctions = from article in context.Articles join auction in context.Auctions on article.Id equals auction.ArticleId select new { auction.Id, article.Name, article.Category, auction.Title, auction.Details, auction.SellerUserName, auction.CurrentPrice, auction.Begin, auction.End, auction.ArticleId }; if (minPrice != null) { auctions = auctions.Where(e => minPrice <= e.CurrentPrice); } if (maxPrice != null) { auctions = auctions.Where(e => e.CurrentPrice <= maxPrice); } if (!string.IsNullOrEmpty(searchText)) { auctions = auctions .Where(e => e.Title.Contains(searchText, StringComparison.CurrentCultureIgnoreCase) || e.Details.Contains(searchText, StringComparison.CurrentCultureIgnoreCase) || e.Name.Contains(searchText, StringComparison.CurrentCultureIgnoreCase) || e.Category.ToString().Contains(searchText, StringComparison.CurrentCultureIgnoreCase) || e.SellerUserName.ToString().Contains(searchText, StringComparison.CurrentCultureIgnoreCase) ); } if (!string.IsNullOrEmpty(aCategory) && aCategory.ToLower() != "all") { auctions = auctions.Where(e => AnnounceViewModel.getCategory(aCategory) == e.Category); } if (!string.IsNullOrEmpty(state) && state.ToLower() != "all") { DateTime now = DateTime.Now; if (state.ToLower() == "closed") { auctions = auctions.Where(e => e.End.CompareTo(now) == -1); } if (state.ToLower() == "coming") { auctions = auctions.Where(e => e.Begin.CompareTo(now) == 1); } if (state.ToLower() == "running") { auctions = auctions.Where(e => e.Begin.CompareTo(now) <= 0 && e.End.CompareTo(now) >= 0); } } int amount = auctions.Count(); auctions = auctions.OrderByDescending(e => e.Begin).Skip(4 * (page - 1)).Take(4); List <Auction> listAuctions = new List <Auction>(); foreach (var auction in auctions) { listAuctions.Add(new Auction { Id = auction.Id, ArticleId = auction.ArticleId, Title = auction.Title, Details = auction.Details, SellerUserName = auction.SellerUserName, CurrentPrice = auction.CurrentPrice, Begin = auction.Begin, End = auction.End }); } return(View(new AuctionsViewModel { Auctions = listAuctions, Page = page, SearchText = searchText, MinPrice = minPrice, MaxPrice = maxPrice, ACategory = aCategory, State = state, TotalPages = (int)Math.Ceiling((decimal)amount / 4) })); }