public async Task <IEnumerable <ProjectDetailInformationDto> > Handle(ProjectsDetailInformationQuery request, CancellationToken cancellationToken) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var projects = await _context.Projects .Include(p => p.Author) .Include(p => p.Team) .ThenInclude(t => t.Members) .Include(p => p.Tasks) .ToListAsync(); var result = new List <ProjectDetailInformationDto>(); foreach (var project in projects) { var dto = new ProjectDetailInformationDto() { Project = _mapper.Map <ProjectDto>(project), LongestTask = _mapper.Map <TaskDto>(project.Tasks.OrderByDescending(t => t.Description.Length).FirstOrDefault()), ShortestTask = _mapper.Map <TaskDto>(project.Tasks.OrderBy(t => t.Name.Length).FirstOrDefault()), TeamCount = (project.Description.Length > 20 || project.Tasks.Count() < 3) ? project.Team.Members.Count() : 0 }; result.Add(dto); } return(result); }
public Task <IActionResult> GetProjectsDetailInfortmation(ProjectsDetailInformationQuery query) => ExecuteQuery(query);