using System; using moviestore.core.infrastructure.extensions; using trainingprep.collections; namespace moviestore.core.domain { public class Movie { public virtual int id { get; set; } public virtual string title { get; set; } public virtual ProductionStudio production_studio { get; set; } public virtual Genre genre { get; set; } public virtual int rating { get; set; } public virtual DateTime date_published { get; set; } public static ISpecification is_published_by(ProductionStudio studio) { return Where.has(x => x.production_studio).equal_to(studio); } public static ISpecification is_not_published_by(ProductionStudio studio) { return Where.has(x => x.production_studio).not_equal_to(studio); } public static ISpecification published_after(int year) { return Where.has_a(x => x.date_published.Year).greater_than(year); } public static ISpecification published_before(int year) { return Where.has_a(x => x.date_published.Year).less_than(year); } public static ISpecification is_of_genre(Genre genre) { return Where.has(x => x.genre).equal_to(genre); } } }