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\"}")); } }