public decimal ComputeAverage(Int32 Song) { AvgSongRating rating = new AvgSongRating(); Song song = db.Songs.Find(Song); List <SongReview> reviewList = new List <SongReview>(); reviewList = db.SongReviews.ToList(); List <SongReview> selectedReviewList = new List <SongReview>(); selectedReviewList = db.SongReviews.Where(a => a.Song.SongTitle.Contains(song.SongTitle)).ToList(); decimal sum = new decimal(); decimal count = new decimal(); foreach (SongReview a in selectedReviewList) { sum += a.Rating; count += 1; } if (count == 0) { return(0); } return(sum / count); }
// GET: Songs public ActionResult Index(String SearchString, string error) { if (error == null) { ViewBag.Error = ""; } else { ViewBag.Error = error; } List <Song> SelectedSongs = new List <Song>(); List <Song> TotalSongs = new List <Song>(); TotalSongs = db.Songs.ToList(); foreach (Song item in TotalSongs) { if (item.DiscountPrice != 0) { item.DisplayPrice = item.DiscountPrice; } else { item.DisplayPrice = item.SongPrice; } db.Songs.Find(item.SongID).DisplayPrice = item.DisplayPrice; } db.SaveChanges(); if (SearchString == null || SearchString == "") { SelectedSongs = db.Songs.ToList(); ViewBag.SelectedSongCount = "Displaying " + SelectedSongs.Count() + " of " + TotalSongs.Count() + " Records"; } else { SelectedSongs = db.Songs.Where(a => a.SongTitle.Contains(SearchString)).ToList(); ViewBag.SelectedSongCount = "Displaying " + SelectedSongs.Count() + " of " + TotalSongs.Count() + " Records"; } SelectedSongs = SelectedSongs.OrderBy(a => a.SongTitle).ToList(); List <AvgSongRating> ratingList = new List <AvgSongRating>(); foreach (Song a in SelectedSongs) { AvgSongRating dude = new AvgSongRating(); dude.Song = a; dude.AvgRating = ComputeAverage(a.SongID); ratingList.Add(dude); } return(View(ratingList)); }
// GET: Songs/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Song song = db.Songs.Find(id); if (song == null) { return(HttpNotFound()); } AvgSongRating songRating = new AvgSongRating(); songRating.Song = song; songRating.AvgRating = ComputeAverage(song.SongID); return(View(songRating)); }
public ActionResult SearchResults(String SongSearchString, String AlbumSearchString, String ArtistSearchString, int[] SelectedGenres, String AvRating, RatingFilter SelectedRatingFilter, SortBy SelectedSortBy, SortOrder SelectedSortOrder) { var query = from s in db.Songs select s; //code for song textbox if (SongSearchString == null || SongSearchString == "") { query = query.Where(s => s.SongTitle != null); } else { query = query.Where(s => s.SongTitle.Contains(SongSearchString)); } //code for Album textbox if (AlbumSearchString == null || AlbumSearchString == "") { query = from s in query from al in s.SongAlbums where al.AlbumTitle != null select s; } else { query = from s in query from al in s.SongAlbums where al.AlbumTitle.Contains(AlbumSearchString) select s; } //code for artist textbox if (ArtistSearchString == null || ArtistSearchString == "") { query = from s in query from ar in s.SongArtists where ar.ArtistName != null select s; } else { query = from s in query from ar in s.SongArtists where ar.ArtistName.Contains(ArtistSearchString) select s; } List <Song> DisplaySongs = new List <Song>(); //code for genre filter if (SelectedGenres != null) { foreach (int i in SelectedGenres) { List <Song> SongsFound = query.Where(a => a.SongGenres.Any(g => g.GenreID == i)).ToList(); foreach (Song a in SongsFound) { DisplaySongs.Add(a); } } } else { List <Song> SongsFound = query.Where(a => a.SongGenres.Any()).ToList(); foreach (Song a in SongsFound) { DisplaySongs.Add(a); } } var TotalSongs = db.Songs.ToList(); DisplaySongs = DisplaySongs.OrderBy(a => a.SongTitle).ToList(); if (SelectedSortBy == SortBy.Song && SelectedSortOrder == SortOrder.Ascending) { DisplaySongs = DisplaySongs.OrderBy(a => a.SongTitle).ToList(); } if (SelectedSortBy == SortBy.Song && SelectedSortOrder == SortOrder.Descending) { DisplaySongs = DisplaySongs.OrderByDescending(a => a.SongTitle).ToList(); } if (SelectedSortBy == SortBy.Album && SelectedSortOrder == SortOrder.Ascending) { DisplaySongs = (from a in DisplaySongs from al in a.SongAlbums.Distinct() orderby al.AlbumTitle select a).ToList(); DisplaySongs = DisplaySongs.Distinct().ToList(); } if (SelectedSortBy == SortBy.Album && SelectedSortOrder == SortOrder.Descending) { DisplaySongs = (from a in DisplaySongs from al in a.SongAlbums.Distinct() orderby al.AlbumTitle descending select a).ToList(); DisplaySongs = DisplaySongs.Distinct().ToList(); } if (SelectedSortBy == SortBy.Artist && SelectedSortOrder == SortOrder.Ascending) { DisplaySongs = (from a in DisplaySongs from ar in a.SongArtists.Distinct() orderby ar.ArtistName select a).ToList(); DisplaySongs = DisplaySongs.Distinct().ToList(); } if (SelectedSortBy == SortBy.Artist && SelectedSortOrder == SortOrder.Descending) { DisplaySongs = (from a in DisplaySongs from ar in a.SongArtists.Distinct() orderby ar.ArtistName descending select a).ToList(); DisplaySongs = DisplaySongs.Distinct().ToList(); } List <AvgSongRating> ratingList = new List <AvgSongRating>(); foreach (Song a in DisplaySongs) { AvgSongRating dude = new AvgSongRating(); dude.Song = a; dude.AvgRating = ComputeAverage(a.SongID); ratingList.Add(dude); } if (SelectedSortBy == SortBy.Rating) { if (SelectedSortOrder == SortOrder.Ascending) { ratingList = ratingList.OrderBy(a => a.AvgRating).ToList(); } else { ratingList = ratingList.OrderByDescending(a => a.AvgRating).ToList(); } } //TODO: code for Rating Filter for Song 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 (AvgSongRating item in ratingList.ToList()) { if (item.AvgRating < decAvgRating) { ratingList.Remove(item); } } } else { foreach (AvgSongRating item in ratingList.ToList()) { if (item.AvgRating > decAvgRating) { ratingList.Remove(item); } } } } ViewBag.SelectedSongCount = "Displaying " + DisplaySongs.Count() + " of " + TotalSongs.Count() + " Records"; return(View("Index", ratingList)); }
// 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)); }