using System.Collections.Generic;
public string Title { get; private set; }
public MovieType Type { get; set; }
public Movie(string title, MovieType type)
public Movie Movie { get; private set; }
public int DaysRented { get; private set; }
public Rental(Movie movie, int daysRented)
public string Name { get; private set; }
private readonly IList<Rental> _rentals;
public Customer(string name)
_rentals = new List<Rental>();
public void AddRental(Rental rental)
this._rentals.Add(rental);
public string GetStatement()
int frequentRenterPoints = 0;
var result = new StringBuilder();
result.AppendFormat("Учет аренды для {0}", Name);
foreach (var rental in _rentals)
switch (rental.Movie.Type)
if (rental.DaysRented > 2)
thisAmount += (rental.DaysRented - 2) * 1.5;
case MovieType.NewRelease:
thisAmount += rental.DaysRented * 3;
case MovieType.ForChildren:
if (rental.DaysRented > 3)
thisAmount += (rental.DaysRented - 3) * 1.5;
if (rental.Movie.Type == MovieType.NewRelease && rental.DaysRented > 1)
result.AppendFormat(" {0} {1:C}", rental.Movie.Title, thisAmount);
totalAmount += thisAmount;
result.AppendFormat("Сумма задолженности составляет {0:C}", totalAmount);
result.AppendFormat("Вы заработали {0} очков за активность.", frequentRenterPoints);
return result.ToString();
public static void Main()
var customer = new Customer("Вася Пупкин");
customer.AddRental(new Rental(new Movie("Inception", MovieType.Regular), 2));
Console.Write(customer.GetStatement());