public ActionResult PublicoAlvo([FromHeader] string ibge, [FromRoute] ParamsRouteIndicador3 model, [FromQuery] ParamsQueryIndicador3 modelquery) { try { ibge = _config.GetConnectionString(Connection.GetConnection(ibge)); if (modelquery.pagesize == null) { modelquery.pagesize = 20; } string sqlSelect = string.Empty; string sqlFiltros = string.Empty; string filtro_valido = string.Empty; // Filtros sqlFiltros = buildSQLFiltros(modelquery); #region Filtro por validação de Sistema e ESUS if (modelquery.sistema == 1) //válido { filtro_valido = $@"WHERE TAB.ATENDIDO = 1"; } else if (modelquery.sistema == 2) //inválido { filtro_valido = $@"WHERE TAB.ATENDIDO = 0"; } if (modelquery.valido == 1) //válido { filtro_valido += !string.IsNullOrWhiteSpace(filtro_valido) ? $@" AND TAB.ATENDIDO_VALIDO = 1" : $@" WHERE TAB.ATENDIDO_VALIDO = 1"; } else if (modelquery.valido == 2) //inválido { filtro_valido += !string.IsNullOrWhiteSpace(filtro_valido) ? $@" AND TAB.ATENDIDO_VALIDO = 0" : $@"WHERE TAB.ATENDIDO_VALIDO = 0"; } #endregion // Qtde. de registros var countRegistros = _repository.CountPublicoAlvo(ibge, sqlFiltros, filtro_valido); Response.Headers.Add("X-Total-Count", countRegistros.ToString()); // Select + paginação modelquery.page = modelquery.page * modelquery.pagesize; sqlSelect = $@" SELECT FIRST {modelquery.pagesize} SKIP {modelquery.page} "; var itens = _repository.PublicoAlvo(ibge, sqlSelect, sqlFiltros, filtro_valido); return(Ok(itens)); } catch (Exception ex) { var response = TrataErro.GetResponse(ex.Message, true); return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } }
public ActionResult Indicador3([FromHeader] string ibge, [FromRoute] ParamsRouteIndicador3 model, [FromQuery] ParamsQueryIndicador3 modelquery) { try { ibge = _config.GetConnectionString(Connection.GetConnection(ibge)); string sqlSelectTipo = string.Empty; string sqlFiltros = string.Empty; string sqlAgrupamento = string.Empty; // Campos do Select sqlSelectTipo = " SELECT "; if (model.desdobramento == "unidade_saude") { sqlSelectTipo += $@" COALESCE(ES.ID,-1) CODIGO_UNIDADE, COALESCE(ES.NOME_FANTASIA,'SEM UNIDADE DE SAÚDE') UNIDADE_SAUDE, "; } else if (model.desdobramento == "equipe") { sqlSelectTipo += $@" COALESCE(EQ.ID,-1) CODIGO_EQUIPE, COALESCE(EQ.DSC_AREA || ' - ' || EQ.COD_INE, 'SEM EQUIPE') EQUIPE, "; } else if (model.desdobramento == "agente_saude") { sqlSelectTipo += $@" COALESCE(ME.CSI_CODMED,-1) CODIGO_AGENTE, COALESCE(ME.CSI_NOMMED,'SEM AGENTE DE SAÚDE') AGENTE, "; } // Filtros sqlFiltros = buildSQLFiltros(modelquery); // Agrupamentos if (model.desdobramento == "unidade_saude") { sqlAgrupamento = $@" GROUP BY ES.ID, ES.NOME_FANTASIA ORDER BY ES.NOME_FANTASIA "; } else if (model.desdobramento == "equipe") { sqlAgrupamento = $@" GROUP BY EQ.ID, EQ.NOME_REFERENCIA, EQ.DSC_AREA, EQ.COD_INE ORDER BY EQ.NOME_REFERENCIA "; } else if (model.desdobramento == "agente_saude") { sqlAgrupamento = $@" GROUP BY ME.CSI_CODMED, ME.CSI_NOMMED "; } var registros = _repository.Indicador3(ibge, sqlSelectTipo, sqlFiltros, sqlAgrupamento); if (model.desdobramento == "total") { var total = new Indicador3TotalViewModel() { porcentagem = Helper.CalculaPorcentagem( registros.FirstOrDefault().qtde_gestantes, registros.FirstOrDefault().qtde_metas ), porcentagem_valida = Helper.CalculaPorcentagem( registros.FirstOrDefault().qtde_gestantes, registros.FirstOrDefault().qtde_metas_validas ), qtde_gestantes = registros.FirstOrDefault().qtde_gestantes, qtde_metas = registros.FirstOrDefault().qtde_metas, qtde_metas_validas = registros.FirstOrDefault().qtde_metas_validas, }; return(Ok(total)); } else if (model.desdobramento == "unidade_saude") { var unidades = new List <Indicador3UnidadeSaudeViewModel>(); foreach (var item in registros) { var unidade = new Indicador3UnidadeSaudeViewModel() { codigo_unidade = item.codigo_unidade, porcentagem = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas), porcentagem_valida = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas_validas), qtde_gestantes = item.qtde_gestantes, qtde_metas = item.qtde_metas, qtde_metas_validas = item.qtde_metas_validas, unidade = item.unidade_saude }; unidades.Add(unidade); } return(Ok(unidades)); } else if (model.desdobramento == "equipe") { var equipes = new List <Indicador3EquipeViewModel>(); foreach (var item in registros) { var equipe = new Indicador3EquipeViewModel() { codigo_equipe = item.codigo_equipe, equipe = item.equipe, porcentagem = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas), porcentagem_valida = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas_validas), qtde_gestantes = item.qtde_gestantes, qtde_metas = item.qtde_metas, qtde_metas_validas = item.qtde_metas_validas }; equipes.Add(equipe); } return(Ok(equipes)); } else if (model.desdobramento == "agente_saude") { var agentes = new List <Indicador3AgenteSaudeViewModel>(); foreach (var item in registros) { var agente = new Indicador3AgenteSaudeViewModel() { porcentagem = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas), porcentagem_valida = Helper.CalculaPorcentagem(item.qtde_gestantes, item.qtde_metas_validas), agente = item.agente, codigo_agente = item.codigo_agente, qtde_gestantes = item.qtde_gestantes, qtde_metas = item.qtde_metas, qtde_metas_validas = item.qtde_metas_validas }; agentes.Add(agente); } return(Ok(agentes)); } return(Ok()); } catch (Exception ex) { var response = TrataErro.GetResponse(ex.Message, true); return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } }