private void DisplayResultsOfRating(FilmRating rating, string filmFan, List <Film> films, List <Screening> screenings)
        {
            // Display summary for this rating.
            int highRatedFilmCount = films.Count;
            int plannedFilmCount   = films.Where(f => HasAttendedScreening(f, filmFan)).Count();

            _builder.Append($"{LogTimeString()}  {plannedFilmCount} out of {highRatedFilmCount} films with rating {rating} planned for {filmFan}.");

            // Display films with this rating that weren't planned.
            if (highRatedFilmCount - plannedFilmCount > 0)
            {
                _builder.AppendLine();
                _builder.AppendLine($"Films with rating {rating} that could not be planned for {filmFan}:");
                var unplannedFilms = films.Where(f => !HasAttendedScreening(f, filmFan));
                _builder.AppendJoin(Environment.NewLine, unplannedFilms);
            }
            _builder.AppendLine();

            // Display the considered screenings in order.
            _builder.AppendLine();
            if (screenings.Count > 0)
            {
                _builder.AppendLine($"Considered screenings of films rated {rating} in order:");
                _builder.AppendLine();
                _builder.AppendJoin(Environment.NewLine, screenings.Select(s => s.ToConsideredScreeningString(filmFan)));
                _builder.AppendLine();
            }
            else
            {
                _builder.AppendLine($"No screenings of films rated {rating} could be considered.");
            }
            _builder.AppendLine();
        }
Beispiel #2
0
        public decimal TimeWeightedMeanRating()
        {
            TimeSpan time          = TimeSpan.Zero;
            decimal  ratingMinutes = 0M;
            decimal  minutesSum    = 0M;
            bool     fullyRated    = true;

            foreach (var screenedFilm in ScreenedFilms)
            {
                Film       film   = ViewController.GetFilmById(screenedFilm.ScreenedFilmId);
                FilmRating rating = film.MaxRating;
                if (rating.IsUnrated)
                {
                    fullyRated = false;
                    break;
                }
                decimal decimalRating = decimal.Parse(rating.Value);
                decimal minutes       = (decimal)film.Duration.TotalMinutes;
                ratingMinutes += decimalRating * minutes;
                minutesSum    += minutes;
            }
            if (fullyRated && ScreenedFilms.Count > 0)
            {
                decimal meanRating = ratingMinutes / minutesSum;
                return(meanRating);
            }
            return(decimal.Zero);
        }
        public FilmFanFilmRating(string filmFanFilmRatingText)
        {
            string[] fields = filmFanFilmRatingText.Split(';');
            string   filmId = fields[0];

            FilmFan = fields[1];
            string rating = fields[2];

            FilmId = Int32.Parse(filmId);
            Rating = new FilmRating(rating);
        }
Beispiel #4
0
 public bool IsGreaterOrEqual(FilmRating otherRating)
 {
     return(CompareTo(otherRating) >= 0);
 }
Beispiel #5
0
 public bool Equals(FilmRating otherRating)
 {
     return(CompareTo(otherRating) == 0);
 }
 public FilmFanFilmRating(int filmId, string filmFan, FilmRating rating)
 {
     FilmId  = filmId;
     FilmFan = filmFan;
     Rating  = rating;
 }