public async Task <ActionResult> PesquisarAtivosPorFiltrosComPaginacaoAsync([FromQuery] AtivoFiltroDto ativoFiltroDto) { if (!ModelState.IsValid) { return(CustomResponse(ModelState)); } AtivoPaginacaoViewDto ativoPaginacaoViewDto = await _ativoService.PesquisarAtivosPorFiltrosPaginacaoAsync(ativoFiltroDto); if (ativoPaginacaoViewDto.listaAtivoTabelaViewDto == null || ativoPaginacaoViewDto.listaAtivoTabelaViewDto.Count == 0 || ativoPaginacaoViewDto.listaAtivoTabelaViewDto.Contains(null)) { return(NotFound(new { success = true, status = 404, mensagem = "Nenhum ativo foi encontrado!", })); } return(CustomResponse(ativoPaginacaoViewDto)); }
public async Task <AtivoPaginacaoViewDto> PesquisarAtivosPorFiltrosPaginacaoAsync(AtivoFiltroDto ativoFiltroDto) { try { AtivoPaginacaoViewDto ativoResultPaginacaoDto = new AtivoPaginacaoViewDto(); ativoFiltroDto.RegistroInicial = ativoFiltroDto.RegistroInicial <= 1 ? 0 : ativoFiltroDto.RegistroInicial - 1; string query = @"SELECT SQL_CALC_FOUND_ROWS DISTINCT ati.Id, ati.Inc_Ativo, ati.Nome, ati.Criticidade, ati.Status_Ativo, ati.Setor_Id, CONCAT(seto.Inc_Setor, ' - ', seto.Nome) as 'Descricao_Setor' FROM Ativo AS ati"; query = query + $" INNER JOIN setor AS seto ON ati.Setor_Id = seto.Id"; query = query + " WHERE 1 = 1"; if (!string.IsNullOrEmpty(ativoFiltroDto.IncAtivo)) { query = query + $" AND ati.Inc_Ativo = {int.Parse(ativoFiltroDto.IncAtivo)}"; } if (!string.IsNullOrEmpty(ativoFiltroDto.Nome)) { query = query + $" AND ati.Nome LIKE '%{ativoFiltroDto.Nome}%'"; } if (!string.IsNullOrEmpty(ativoFiltroDto.DataHoraCadastroInicio) && !string.IsNullOrEmpty(ativoFiltroDto.DataHoraCadastroFim)) { query = query + $" AND ati.Data_Hora_Cadastro >= '{ativoFiltroDto.DataHoraCadastroInicio}'"; query = query + $" AND ati.Data_Hora_Cadastro <= '{ativoFiltroDto.DataHoraCadastroFim}'"; } if (!string.IsNullOrEmpty(ativoFiltroDto.DataHoraUltimaAtualizacaoInicio) && !string.IsNullOrEmpty(ativoFiltroDto.DataHoraUltimaAtualizacaoFim)) { query = query + $" AND ati.Data_Hora_Ultima_Atualizacao >= '{ativoFiltroDto.DataHoraUltimaAtualizacaoInicio}'"; query = query + $" AND ati.Data_Hora_Ultima_Atualizacao <= '{ativoFiltroDto.DataHoraUltimaAtualizacaoFim}'"; } if (!string.IsNullOrEmpty(ativoFiltroDto.CriticidadeAtivo)) { query = query + $" AND ati.Criticidade = {int.Parse(ativoFiltroDto.CriticidadeAtivo)}"; } if (!string.IsNullOrEmpty(ativoFiltroDto.StatusAtivo)) { query = query + $" AND ati.Status_Ativo = {int.Parse(ativoFiltroDto.StatusAtivo)}"; } if (!string.IsNullOrEmpty(ativoFiltroDto.SetorId)) { query = query + $" AND ati.Setor_Id = '{ativoFiltroDto.SetorId}'"; } query = query + " ORDER BY ati.Nome"; // LIMIT RegistroInicial,QtdRegistroPorPagina; query = query + $" LIMIT {ativoFiltroDto.RegistroInicial},{ativoFiltroDto.QtdRegistroPorPagina}"; string queryTotalRegitrosEncontrados = "SELECT FOUND_ROWS() AS totalRegistros"; var connection = _context.Database.GetDbConnection(); using (var command = connection.CreateCommand()) { await connection.OpenAsync(); command.CommandText = query; using (var dataReader = await command.ExecuteReaderAsync()) { if (dataReader.HasRows) { while (dataReader.Read()) { // Registros.: AtivoResult AtivoTabelaViewDto ativoTabelaViewDto = new AtivoTabelaViewDto(); ativoTabelaViewDto.Id = Guid.Parse(dataReader["Id"].ToString()); ativoTabelaViewDto.IncAtivo = int.Parse(dataReader["Inc_Ativo"].ToString()); ativoTabelaViewDto.Nome = dataReader["Nome"].ToString(); ativoTabelaViewDto.DescricaoAtivo = dataReader["Inc_Ativo"].ToString() + " - " + dataReader["Nome"].ToString(); ativoTabelaViewDto.CriticidadeAtivo = ativoTabelaViewDto.descricaoCriticidadeAtivoEnum(dataReader["Criticidade"].ToString()); ativoTabelaViewDto.StatusAtivo = ativoTabelaViewDto.descricaoStatusAtivoEnum(dataReader["Status_Ativo"].ToString()); ativoTabelaViewDto.SetorId = Guid.Parse(dataReader["Setor_Id"].ToString()); ativoTabelaViewDto.DescricaoSetor = dataReader["Descricao_Setor"].ToString(); ativoResultPaginacaoDto.listaAtivoTabelaViewDto.Add(ativoTabelaViewDto); } } } command.CommandText = queryTotalRegitrosEncontrados; using (var dataReader = command.ExecuteReader()) { if (dataReader.HasRows) { while (dataReader.Read()) { // Total Registros.: TotalRegistros ativoResultPaginacaoDto.TotalRegistros = int.Parse(dataReader["totalRegistros"].ToString());; } } } } ativoResultPaginacaoDto.preencherDadosPaginacao(ativoFiltroDto.QtdRegistroPorPagina, ativoFiltroDto.RegistroInicial); return(ativoResultPaginacaoDto); } catch (Exception ex) { throw ex; } }