public decimal ComputeAlbumAverage(Int32 Artist) { AvgAlbumRating rating = new AvgAlbumRating(); Album artist = db.Albums.Find(Artist); List <AlbumReview> reviewList = new List <AlbumReview>(); reviewList = db.AlbumReviews.ToList(); List <AlbumReview> selectedReviewList = new List <AlbumReview>(); selectedReviewList = db.AlbumReviews.Where(a => a.Album.AlbumTitle.Contains(artist.AlbumTitle)).ToList(); decimal sum = new decimal(); decimal count = new decimal(); foreach (AlbumReview a in selectedReviewList) { sum += a.Rating; count += 1; } if (count == 0) { return(0); } return(sum / count); }
// GET: Albums public ActionResult Index(String SearchString, string error) { if (error == null) { ViewBag.Error = ""; } else { ViewBag.Error = error; } List <Album> SelectedAlbums = new List <Album>(); List <Album> TotalAlbums = new List <Album>(); TotalAlbums = db.Albums.ToList(); foreach (Album item in TotalAlbums) { if (item.DiscountPrice != 0) { item.DisplayPrice = item.DiscountPrice; } else { item.DisplayPrice = item.AlbumPrice; } db.Albums.Find(item.AlbumID).DisplayPrice = item.DisplayPrice; } db.SaveChanges(); if (SearchString == null || SearchString == "") { SelectedAlbums = db.Albums.ToList(); ViewBag.SelectedAlbumCount = "Displaying " + SelectedAlbums.Count() + " of " + TotalAlbums.Count() + " Records"; } else { SelectedAlbums = db.Albums.Where(a => a.AlbumTitle.Contains(SearchString)).ToList(); ViewBag.SelectedAlbumCount = "Displaying " + SelectedAlbums.Count() + " of " + TotalAlbums.Count() + " Records"; } SelectedAlbums = SelectedAlbums.OrderBy(a => a.AlbumTitle).ToList(); List <AvgAlbumRating> ratingList = new List <AvgAlbumRating>(); foreach (Album a in SelectedAlbums) { AvgAlbumRating dude = new AvgAlbumRating(); dude.Album = a; dude.AvgRating = ComputeAverage(a.AlbumID); ratingList.Add(dude); } return(View(ratingList)); }
// GET: Albums/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Album album = db.Albums.Find(id); if (album == null) { return(HttpNotFound()); } AvgAlbumRating albumRating = new AvgAlbumRating(); albumRating.Album = album; albumRating.AvgRating = ComputeAverage(album.AlbumID); return(View(albumRating)); }
// GET: OrderDetails/Details/5 public ActionResult ShoppingCart(string UserName, string error) { if (error == null) { ViewBag.Error = ""; } else { ViewBag.Error = error; } if (UserName == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } OrderDetail orderDetail = new OrderDetail(); List <OrderDetail> listDetails = new List <OrderDetail>(); listDetails = db.OrderDetails.Where(a => a.User.UserName.Contains(UserName)).ToList(); foreach (OrderDetail item in listDetails) { if (!item.IsConfirmed) { orderDetail = item; } } foreach (Discount item in orderDetail.Discounts) { if (item.Song == null && item.Album == null) { db.OrderDetails.Find(orderDetail.OrderDetailID).Discounts.Remove(item); db.SaveChanges(); orderDetail = db.OrderDetails.Find(orderDetail.OrderDetailID); } } ShoppingCartViewModel shoppingCart = new ShoppingCartViewModel(); shoppingCart.OrderDetail = orderDetail; shoppingCart.SubTotal = CalcSubTotal(shoppingCart, false); shoppingCart.Tax = CalcTax(shoppingCart); shoppingCart.Total = (shoppingCart.Tax + shoppingCart.SubTotal); foreach (Discount item in shoppingCart.OrderDetail.Discounts) { if (item.Album != null) { AvgAlbumRating album = new AvgAlbumRating(); album.Album = item.Album; album.AvgRating = ComputeAlbumAverage(album.Album.AlbumID); album.SavingsAmount = album.Album.AlbumPrice - album.Album.DisplayPrice; shoppingCart.avgAlbumRatings.Add(album); } else { AvgSongRating song = new AvgSongRating(); song.Song = item.Song; song.AvgRating = ComputeSongAverage(song.Song.SongID); song.SavingsAmount = song.Song.SongPrice - song.Song.DisplayPrice; shoppingCart.avgSongRatings.Add(song); } } return(View(shoppingCart)); }
public ActionResult SearchResults(String AlbumSearchString, String ArtistSearchString, int[] SelectedGenres, String AvRating, RatingFilter SelectedRatingFilter, SortBy SelectedSortBy, SortOrder SelectedSortOrder) { var query = from a in db.Albums select a; //code for textbox if (AlbumSearchString == null || AlbumSearchString == "") { query = query.Where(a => a.AlbumTitle != null); } else { query = query.Where(a => a.AlbumTitle.Contains(AlbumSearchString)); } //code for artist textbox if (ArtistSearchString == null || ArtistSearchString == "") { query = from a in query from ar in a.AlbumArtists where ar.ArtistName != null select a; } else { query = from a in query from ar in a.AlbumArtists where ar.ArtistName.Contains(ArtistSearchString) select a; } //code for genre filter List <Album> DisplayAlbums = new List <Album>(); if (SelectedGenres != null) { foreach (int i in SelectedGenres) { List <Album> AlbumsFound = query.Where(a => a.AlbumGenres.Any(g => g.GenreID == i)).ToList(); foreach (Album a in AlbumsFound) { DisplayAlbums.Add(a); } } } else { List <Album> AlbumsFound = query.Where(a => a.AlbumGenres.Any()).ToList(); foreach (Album a in AlbumsFound) { DisplayAlbums.Add(a); } } var TotalAlbums = db.Albums.ToList(); DisplayAlbums = DisplayAlbums.OrderBy(a => a.AlbumTitle).ToList(); if (SelectedSortBy == SortBy.Album && SelectedSortOrder == SortOrder.Ascending) { DisplayAlbums = DisplayAlbums.Distinct().OrderBy(a => a.AlbumTitle).ToList(); } if (SelectedSortBy == SortBy.Album && SelectedSortOrder == SortOrder.Descending) { DisplayAlbums = DisplayAlbums.Distinct().OrderByDescending(a => a.AlbumTitle).ToList(); } if (SelectedSortBy == SortBy.Artist && SelectedSortOrder == SortOrder.Ascending) { DisplayAlbums = (from a in DisplayAlbums from ar in a.AlbumArtists.Distinct() orderby ar.ArtistName select a).ToList(); DisplayAlbums = DisplayAlbums.Distinct().ToList(); } else if (SelectedSortBy == SortBy.Artist && SelectedSortOrder == SortOrder.Descending) { DisplayAlbums = (from a in DisplayAlbums from ar in a.AlbumArtists.Distinct() orderby ar.ArtistName descending select a).ToList(); DisplayAlbums = DisplayAlbums.Distinct().ToList(); } List <AvgAlbumRating> ratingList = new List <AvgAlbumRating>(); foreach (Album a in DisplayAlbums) { AvgAlbumRating dude = new AvgAlbumRating(); dude.Album = a; dude.AvgRating = ComputeAverage(a.AlbumID); ratingList.Add(dude); } if (SelectedSortBy == SortBy.Rating) { if (SelectedSortOrder == SortOrder.Ascending) { ratingList = ratingList.Distinct().OrderBy(a => a.AvgRating).ToList(); } else { ratingList = ratingList.Distinct().OrderByDescending(a => a.AvgRating).ToList(); } } //TODO: code for Rating Filter for Album if (AvRating != null && AvRating != "") { Decimal decAvgRating; try { decAvgRating = Convert.ToDecimal(AvRating); } catch { ViewBag.Message = AvRating + " is not a valid rating; please enter a decimal from 1.0 to 5.0"; ViewBag.AllGenres = GetAllGenres(); return(View("DetailedSearch")); } try { if (decAvgRating < 1.0m || decAvgRating > 5.0m) { throw new ArgumentException(); } } catch (ArgumentException) { ViewBag.Message = AvRating + " is not a valid rating; please enter a decimal from 1.0 to 5.0"; ViewBag.AllGenres = GetAllGenres(); return(View("DetailedSearch")); } if (SelectedRatingFilter == RatingFilter.Greater) { foreach (AvgAlbumRating item in ratingList.ToList()) { if (item.AvgRating < decAvgRating) { ratingList.Remove(item); } } } else { foreach (AvgAlbumRating item in ratingList.ToList()) { if (item.AvgRating > decAvgRating) { ratingList.Remove(item); } } } } ViewBag.SelectedAlbumCount = "Displaying " + ratingList.Count() + " of " + TotalAlbums.Count() + " Records"; return(View("Index", ratingList)); }