Exemple #1
0
 public static ExcelRecord ToExcelRecord(this Project value, int level) =>
 new ExcelRecord
 {
     Id          = value.Id,
     Name        = value.Name.IndentValue(level),
     Description = value.Code,
     State       = value.State.ToString(),
     StartDate   = value.StartDate,
     FinishDate  = value.FinishDate
 };
        private void WriteProjectToCollection(
            Project project,
            int level,
            List <ExcelRecord> records, //collection of data records that will be writed to file
            List <int> projectsIndexes, //indexes of rows with projects to mark them bold later
            Expression <Func <ProjectTask, bool> > taskSearch)
        {
            projectsIndexes.Add(records.Count);
            records.Add(project.ToExcelRecord(level));

            //add project tasks that fit search condition
            records.AddRange(project.Tasks.AsQueryable()
                             .Where(taskSearch)
                             .Select(x => x.ToExcelRecord(level + 1)));

            //add subprojects that contain specified tasks
            foreach (var subProject in project.Projects.Where(x => x.AllTasks.AsQueryable().Any(taskSearch)))
            {
                WriteProjectToCollection(subProject, level + 1, records, projectsIndexes, taskSearch);
            }
        }