Пример #1
0
        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);
        }
Пример #2
0
        // 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));
        }
Пример #3
0
        // 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));
        }
Пример #4
0
        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));
        }
Пример #5
0
        // 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));
        }