コード例 #1
0
        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);
        }