Ejemplo n.º 1
0
        public ExcelPackage CreateInProgressReport(DateTime date)
        {
            var projects = _projectRepository.FindBy(p => p.State == ProjectState.InProgress &&
                                                     p.StartDate <= date &&
                                                     p.FinishDate >= date).ToList();

            var tasks = _taskRepository.FindBy(p => p.State == TaskState.InProgress &&
                                               p.StartDate <= date &&
                                               p.FinishDate >= date).ToList();

            foreach (var project in projects)
            {
                var projectTasks = tasks.Where(p => p.ProjectId == project.Id).ToList();
                project.Tasks = projectTasks.ToList();
            }

            // By default EF Core disable lazy loading
            // But when we load projects, it automatically builds hierarchy for us
            // So we need to pass just root projects
            var rootProjects = projects.Where(p => p.ParentId == null);

            return(_reportBuilder.GenerateReport(rootProjects));
        }