public async Task <ProcessoAudienciaViewModel> ListarAudienciasParaDistribuicao(int IdEscritorio, Guid guid, AtribuicaoFilter searchFilter) { var processos = await _processoRepositorio.ListarComAudiencias(IdEscritorio); var audiencias = new List <Audiencia>(); var comarcas = processos.Where(x => x.IdGrupoForo != null).Select(x => x.IdGrupoForo.Value).Distinct().ToList(); foreach (var processo in processos) { foreach (var audiencia in processo.Audiencias) { audiencias.Add(audiencia); } } var varasAudiencias = audiencias.Where(c => c.IdForo != null).Select(v => (int)v.IdForo); //lista profissionais(funcionarios) var li = await _profissionalService.ListarProfissionais(guid); var liFuncionarios = _mapper.Map <List <Domain.ViewModels.FuncionarioViewModel> >(li); //add construtor var procAud = new ProcessoAudienciaViewModel { Hierarquia = new List <HierarquiaAudiencia>() }; foreach (var audiencia in audiencias) { var executor = liFuncionarios.FirstOrDefault(x => x.Id == audiencia.IdExecutor); if (executor != null) { audiencia.Executor = new Domain.ViewModels.Agenda.Executor { Id = executor.Id, Cargo = executor.Cargo, Ativo = executor.Ativo, Atividades = executor.Atividades, Deletable = executor.Deletable, Nome = executor.Nome }; } else { audiencia.Executor = new Domain.ViewModels.Agenda.Executor(); } } ////filtros de audiencias //audiencias = ApplyAudienciasFilters(searchFilter, audiencias); foreach (var id in comarcas) { var comarca = await _hierarquiaService.Obtem(guid, id, null); var liAud = new List <Audiencia>(); foreach (var foro in comarca.Grupos) { var varas = comarca.Grupos.Where(x => x.Itens.Count > 0).Select(c => c.Itens); var varasComarcas = new List <Foro>(); foreach (var vara in foro.Itens) { var audiencias2 = audiencias.Where(x => x.IdForo == vara.Id).ToList(); if (audiencias2.Count > 0) { vara.Audiencias = new List <Audiencia>(audiencias2.OrderBy(x => x.DataAtividade)); } } } var HA = new HierarquiaAudiencia() { Comarca = comarca }; procAud.Hierarquia.Add(HA); } return(procAud); }