public async Task <PaginatedList <InformacaoCursoVM> > ParseInformacaoCursoVM(UsuarioADE usuario, int?idInstituicao, int?pageNumber)
        {
            _cursoServices      = new ServicoCurso(ref unitOfWork);
            _servicoInstituicao = new ServicoInstituicao(ref unitOfWork);
            _servicoDocumento   = new ServicoDocumento(ref unitOfWork);
            List <Curso> ListaCursos = await _cursoServices.Filtrar(x => x.IdInstituicao == idInstituicao);

            List <InformacaoCursoVM> model = new List <InformacaoCursoVM>();

            foreach (Curso curso in ListaCursos)
            {
                curso.Instituicao = await _servicoInstituicao.BuscarPorId(curso.IdInstituicao);

                int QuantidadeAlunosCurso = await CountUsuarioByCurso(curso.Identificador);

                int QuantidadeDocumentosCurso = await _servicoDocumento.CountByCurso(curso.Identificador);

                InformacaoCursoVM InfoCurso = new InformacaoCursoVM(curso, QuantidadeAlunosCurso, QuantidadeDocumentosCurso);
                if (curso.Identificador == usuario.IdCurso)
                {
                    InfoCurso.CursoDoUsuario = true;
                }
                model.Add(InfoCurso);
            }

            PaginatedList <InformacaoCursoVM> lista = PaginatedList <InformacaoCursoVM> .Create(model.AsQueryable(), pageNumber ?? 1, pageSize);

            return(lista);
        }
        public async Task <PaginatedList <InformacaoCursoVM> > ParseInformacaoCursoVM(UsuarioADE usuario, int?idInstituicao, int?pageNumber, UnitOfWork unitOfWork)
        {
            try
            {
                unitOfWork          = unitOfWork ?? new UnitOfWork(context);
                _servicoCurso       = new ServicoCurso(ref unitOfWork);
                _servicoInstituicao = new ServicoInstituicao(ref unitOfWork);
                _servicoDocumento   = new ServicoDocumento(ref unitOfWork);

                List <Curso> ListaCursos = await _servicoCurso.Filtrar(x => x.IdInstituicao == idInstituicao);

                List <InformacaoCursoVM> model = new List <InformacaoCursoVM>();
                foreach (Curso curso in ListaCursos)
                {
                    curso.Instituicao = await _servicoInstituicao.BuscarPorId(curso.IdInstituicao);

                    int QuantidadeAlunosCurso = await CountUsuarioByCurso(curso.Identificador);

                    int QuantidadeDocumentosCurso = await _servicoDocumento.CountByCurso(curso.Identificador);

                    InformacaoCursoVM InfoCurso = new InformacaoCursoVM(curso, QuantidadeAlunosCurso, QuantidadeDocumentosCurso);
                    if (curso.Identificador == usuario.IdCurso)
                    {
                        InfoCurso.CursoDoUsuario = true;
                    }
                    model.Add(InfoCurso);
                }

                PaginatedList <InformacaoCursoVM> lista = PaginatedList <InformacaoCursoVM> .Create(model.AsQueryable(), pageNumber ?? 1, 10);

                return(lista);
            }
            catch (System.Exception ex)
            {
                await LogError(ex.Message, ex.Source, Dominio.Models.Enums.EnumTipoLog.ErroInterno);

                return(null);
            }
        }
        public async Task <IActionResult> ObterResultadoPesquisaCurso(string NomeCurso)
        {
            UsuarioADE usuario = await ObterUsuarioLogado();

            _cursoServices    = new ServicoCurso(ref unitOfWork);
            _servicoDocumento = new ServicoDocumento(ref unitOfWork);
            ServicoInstituicao _servicoInstituicao  = new ServicoInstituicao(ref unitOfWork);
            Instituicao        instituicaoDoUsuario = await _servicoInstituicao.BuscarPorId(usuario.IdInstituicao);

            try
            {
                List <Curso> ListaCursos = await _cursoServices.Filtrar(x => x.NomeCurso.Contains(NomeCurso));

                List <InformacaoCursoVM> model = new List <InformacaoCursoVM>();
                foreach (Curso curso in ListaCursos)
                {
                    int quantidadeDocumentos = 0;
                    int quantidadeAlunos     = 0;

                    try
                    {
                        quantidadeDocumentos = await _servicoDocumento.CountByCurso(curso.Identificador);
                    }
                    catch (Exception ex)
                    {
                        await LogError($"Erro ao obter contagem de documentos para o curso {curso.ToString()} : {ex.Message}", ex.Source, Dominio.Models.Enums.EnumTipoLog.ErroInterno);
                    }

                    try
                    {
                        quantidadeAlunos = await CountUsuarioByCurso(curso.Identificador);
                    }
                    catch (Exception ex)
                    {
                        await LogError($"Erro ao obter contagem de usuários para o curso {curso.ToString()} : {ex.Message}", ex.Source, Dominio.Models.Enums.EnumTipoLog.ErroInterno);
                    }
                    curso.Instituicao = await _servicoInstituicao.BuscarPorId(curso.IdInstituicao);

                    InformacaoCursoVM InfoCurso = new InformacaoCursoVM(curso, quantidadeAlunos, quantidadeDocumentos);
                    if (curso.Identificador == usuario.IdCurso)
                    {
                        InfoCurso.CursoDoUsuario = true;
                    }
                    model.Add(InfoCurso);
                }
                if (ListaCursos.Count > 0)
                {
                    PaginatedList <InformacaoCursoVM> lista = PaginatedList <InformacaoCursoVM> .Create(model.AsQueryable(), 1, pageSize);

                    return(PartialView("_SelecaoCurso_CursoOption", lista));
                }
                else
                {
                    throw new Exception($"O resultado da pesquisa por curso está vazio : {NomeCurso}");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("Falha", $"Ocorreu um erro ao buscar cursos compatíveis com a pesquisa : {NomeCurso}");
                await LogError(ex.Message, "ObterResultadoPesquisaCurso", Dominio.Models.Enums.EnumTipoLog.ErroInterno);

                return(Json("{\"Erro\": \"Pesquisa não retornou nenhum curso\"}"));
            }
        }
Example #4
0
 public async Task <IViewComponentResult> InvokeAsync(InformacaoCursoVM curso)
 {
     return(View(curso));
 }