private IEnumerable <Billboard> BuildBillboards(GetIntelligentBillboardRequest request, List <MovieInfo> movies) { var startDate = _dateService.Now(); var weekLength = 7; var totalWeeks = request.TimePeriod; for (int week = 0; week < totalWeeks; week++) { var billboard = Billboard.Create(startDate, GetMoviesWithValidReleaseDateAndSize(movies, request.BigRooms, startDate, MovieInfo.BigScreen) .ValueOr(() => new List <MovieInfo>()), GetMoviesWithValidReleaseDateAndSize(movies, request.SmallRooms, startDate, MovieInfo.SmallScreen) .ValueOr(() => new List <MovieInfo>())); movies = movies.Where(m => !billboard.BigScreenMovies.Contains(m) && !billboard.SmallScreenMovies.Contains(m)).ToList(); startDate = startDate.AddDays(weekLength); yield return(billboard); } }
private GetIntelligentBillboardResponse IntelligentBillboardResultSeed() { return(new GetIntelligentBillboardResponse( new List <Billboard> { Billboard.Create(new DateTime(2020, 4, 20), new List <MovieInfo>() { MovieInfo.Create("Title1", "Overview 1", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 20), 800, MovieInfo.SmallScreen), MovieInfo.Create("Title2", "Overview 2", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 20), 700, MovieInfo.SmallScreen) }, new List <MovieInfo>() { MovieInfo.Create("Title3", "Overview 3", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 20), 600, MovieInfo.BigScreen), MovieInfo.Create("Title4", "Overview 4", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 20), 500, MovieInfo.BigScreen) }), Billboard.Create(new DateTime(2020, 4, 27), new List <MovieInfo>() { MovieInfo.Create("Title5", "Overview 5", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 27), 400, MovieInfo.SmallScreen), MovieInfo.Create("Title6", "Overview 6", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 27), 300, MovieInfo.SmallScreen) }, new List <MovieInfo>() { MovieInfo.Create("Title7", "Overview 7", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 27), 200, MovieInfo.BigScreen), MovieInfo.Create("Title8", "Overview 8", new List <string>() { "Action", "Adventure" }, "es", new DateTime(2020, 4, 27), 100, MovieInfo.BigScreen) }) }.SomeNotNull())); }