public IPageViewModel GetReportViewModel(List <IDaySummaryViewModel> days, Period period, DateTime startDate, DateTime endDate) { var daymodels = _modelProvider.GetDaySummaries(days.Where(d => d != null).Select(d => _modelProvider.GetDaySummary(d.Date, d.TimeAvailable, d.TimeSpent, d.Tasks.Select(t => t.Task).ToList())), startDate, endDate); switch (period) { case Period.Week: return(new ReportsViewModel <IWeekReport>(_reportProvider.GetWeekSummary(daymodels, startDate, endDate), Period.Week)); case Period.Month: return(new ReportsViewModel <IMonthReport>(_reportProvider.GetMonthSummary(daymodels, startDate, endDate), Period.Month)); case Period.Quater: return(new ReportsViewModel <IQuaterReport>(_reportProvider.GetQuaterSummary(daymodels, startDate, endDate), Period.Quater)); case Period.HalfYear: return(new ReportsViewModel <IHalfYearReport>(_reportProvider.GetHalfYearSummary(daymodels, startDate, endDate), Period.Quater)); case Period.Year: return(new ReportsViewModel <IYearReport>(_reportProvider.GetYearSummary(daymodels, startDate, endDate), Period.Quater)); default: return(null); } }