R/mod_relatorio.R

Defines functions mod_relatorio_server mod_relatorio_ui

#' name_of_module1 UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd 
#'
#' @importFrom shiny NS tagList 
mod_relatorio_ui <- function(id){
  ns <- NS(id)
    
  
  tabItem(tabName = "relatorio", align = "left",
          
          fluidRow(
            
            boxPlus(
              title = "Resultados", 
              closable = FALSE, 
              width = 3,
              status = NULL,
              solidHeader = TRUE, 
              collapsible = TRUE,
              enable_dropdown = FALSE,
              
              fluidRow(
                
                column(12,
                       
                       pickerInput(ns("relatorio_resultados_tipo_relatorio"), label = "Tipo de Relatório", choices = c("Geral",
                                                                                                                       # "Seção CNAE",
                                                                                                                       "UF x Ref",
                                                                                                                       "Município x Ref",
                                                                                                                       "UF",
                                                                                                                       "Município"))
                       
                )
              ),
              
              fluidRow(
                
                column(12, align = "center",
                       
                       downloadButton(ns("download_relatorio_resultados"), label = NULL)
                       
                )
              )
              
            )
            
          )
          
          
  )
  
}
    
#' name_of_module1 Server Function
#'
#' @noRd 
mod_relatorio_server <- function(input, output, session, caged, rais, origem){
  ns <- session$ns
  
  seletor_base <- reactive({
    
    p <- origem$origem()
    
    return(p)
    
  })
  
  # canal <- bd
  
  info <- Sys.info() %>% as.data.frame()
  
  info$coluna <- rownames(info)
  
  info <- subset(info, coluna == "user")
  
  output$download_relatorio_resultados <- downloadHandler(
    
    filename = function() {
      
      nome_arquivo <- paste0("relatorio_resultados_", input$relatorio_resultados_tipo_relatorio, ".xlsx")
      
    },
    content = function(file) {
      
      if(seletor_base() == TRUE){
        
        if(file.exists(paste0("caged_filtrado2_", as.character(info$.[1])))){
          
          dados_caged <- readRDS(paste0("caged_filtrado2_", as.character(info$.[1])))
          dados_caged$media_salario_entrada_uf_ref <- ifelse(is.nan(dados_caged$media_salario_entrada_uf_ref), 0, dados_caged$media_salario_entrada_uf_ref)
          dados_caged$media_salario_saida_uf_ref <- ifelse(is.nan(dados_caged$media_salario_saida_uf_ref), 0, dados_caged$media_salario_saida_uf_ref)
          dados_caged$media_salario_entrada_municipio_ref <- ifelse(is.nan(dados_caged$media_salario_entrada_municipio_ref), 0, dados_caged$media_salario_entrada_municipio_ref)
          dados_caged$media_salario_saida_municipio_ref <- ifelse(is.nan(dados_caged$media_salario_saida_municipio_ref), 0, dados_caged$media_salario_saida_municipio_ref)
          
          # UFS <- paste('SELECT DISTINCT sigla_uf, codigo_uf FROM municipios_caged')
          # UFS <- as.data.frame(RSQLite::dbGetQuery(canal, UFS))
          UFS <- Dados::ListaMunicipios %>% as.data.frame() %>% dplyr::select(sigla_uf, codigo_uf) %>% unique()
          names(UFS)[2] <- "UF"
          dados_caged <- dplyr::right_join(UFS, dados_caged, by = "UF")
          
          # MUNI <- paste('SELECT DISTINCT nome_municipio, codigo_municipio FROM municipios_caged')
          # MUNI <- as.data.frame(RSQLite::dbGetQuery(canal, MUNI))
          MUNI <- Dados::ListaMunicipios %>% as.data.frame() %>% dplyr::select(nome_municipio, codigo_municipio) %>% unique()
          names(MUNI)[2] <- "Município"
          MUNI$`Município` <- as.numeric(substr(MUNI$`Município`, 1, 6))
          dados_caged <- dplyr::right_join(MUNI, dados_caged, by = "Município")
          
          
          if(input$relatorio_resultados_tipo_relatorio == "Geral"){
            
            dados_caged <- dados_caged
            dados_caged <- dados_caged[order(dados_caged$Competência.Declarada, dados_caged$Município), ]
            
          }else if(input$relatorio_resultados_tipo_relatorio == "UF"){
            
            dados_caged <- readRDS(file = paste0("caged_filtrado_UF_", as.character(info$.[1])))
            
          }else if(input$relatorio_resultados_tipo_relatorio == "Município"){
            
            dados_caged <- readRDS(file = paste0("caged_filtrado_municipio_", as.character(info$.[1])))
            
          }else if(input$relatorio_resultados_tipo_relatorio == "UF x Ref"){
            
            dados_caged <- readRDS(file = paste0("caged_filtrado_UF_ref_", as.character(info$.[1])))
            
          }else if(input$relatorio_resultados_tipo_relatorio == "Município x Ref"){
            
            dados_caged <- readRDS(file = paste0("caged_filtrado_municipio_ref_", as.character(info$.[1])))
            
          }
          
          openxlsx::write.xlsx(dados_caged, file)
          
        }
        
      }else{
        
        if(file.exists(paste0("rais_filtrado2_", as.character(info$.[1])))){
          
          dados_rais <- readRDS(paste0("rais_filtrado2_", as.character(info$.[1])))
          dados_rais$media_salario_entrada_uf_ref <- ifelse(is.nan(dados_rais$media_salario_entrada_uf_ref), 0, dados_rais$media_salario_entrada_uf_ref)
          dados_rais$media_salario_saida_uf_ref <- ifelse(is.nan(dados_rais$media_salario_saida_uf_ref), 0, dados_rais$media_salario_saida_uf_ref)
          dados_rais$media_salario_entrada_municipio_ref <- ifelse(is.nan(dados_rais$media_salario_entrada_municipio_ref), 0, dados_rais$media_salario_entrada_municipio_ref)
          dados_rais$media_salario_saida_municipio_ref <- ifelse(is.nan(dados_rais$media_salario_saida_municipio_ref), 0, dados_rais$media_salario_saida_municipio_ref)
          
          # UFS <- paste('SELECT DISTINCT sigla_uf, codigo_uf FROM municipios_caged')
          # UFS <- as.data.frame(RSQLite::dbGetQuery(canal, UFS))
          UFS <- Dados::ListaMunicipios %>% as.data.frame() %>% dplyr::select(sigla_uf, codigo_uf) %>% unique()
          names(UFS)[2] <- "UF"
          dados_rais <- dplyr::right_join(UFS, dados_rais, by = "UF")
          
          # MUNI <- paste('SELECT DISTINCT nome_municipio, codigo_municipio FROM municipios_caged')
          # MUNI <- as.data.frame(RSQLite::dbGetQuery(canal, MUNI))
          MUNI <- Dados::ListaMunicipios %>% as.data.frame() %>% dplyr::select(nome_municipio, codigo_municipio) %>% unique()
          names(MUNI)[2] <- "Município"
          MUNI$`Município` <- as.numeric(substr(MUNI$`Município`, 1, 6))
          dados_rais <- dplyr::right_join(MUNI, dados_rais, by = "Município")
          
          
          if(input$relatorio_resultados_tipo_relatorio == "Geral"){
            
            dados_rais <- dados_rais
            dados_rais <- dados_rais[order(dados_rais$ano, dados_rais$Município), ]
            
          }else if(input$relatorio_resultados_tipo_relatorio == "UF"){
            
            dados_rais <- readRDS(file = paste0("rais_filtrado_UF_", as.character(info$.[1])))
            
          }else if(input$relatorio_resultados_tipo_relatorio == "Município"){
            
            dados_rais <- readRDS(file = paste0("rais_filtrado_municipio_", as.character(info$.[1])))
            
          }else if(input$relatorio_resultados_tipo_relatorio == "UF x Ref"){
            
            dados_rais <- readRDS(file = paste0("rais_filtrado_UF_ref_", as.character(info$.[1])))
            
          }else if(input$relatorio_resultados_tipo_relatorio == "Município x Ref"){
            
            dados_rais <- readRDS(file = paste0("rais_filtrado_municipio_ref_", as.character(info$.[1])))
            
          }
          
          openxlsx::write.xlsx(dados_rais, file)
          
        }
        
      }
      
      
      
    }
    
  )
  
 
}
    
## To be copied in the UI
# mod_relatorio_ui("relatorio_ui_1")
    
## To be copied in the server
# callModule(mod_relatorio_server, "relatorio_ui_1")
 
leandro-vento/projeto documentation built on April 10, 2021, 6:43 p.m.