R/mod_configuracoes.R

Defines functions mod_configuracoes_server mod_configuracoes_ui

#' configuracoes UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd 
#'
#' @importFrom shiny NS tagList 

load("R/sysdata.rda")

# caminho <- "C:\\Users\\leand\\OneDrive - FGV\\BD\\"
# caminho <- "D:\\BD\\"
# 
# canal_caged <- RSQLite::dbConnect(RSQLite::SQLite(), dbname = paste0(caminho, "CAGED.sqlite"))
# 
# tabela_referencias_caged <- data.frame(referencia = RSQLite::dbListTables(canal_caged))
# tabela_referencias_caged$ref <- as.numeric(substr(tabela_referencias_caged$referencia, 7, 12))
# tabela_referencias_caged <- tabela_referencias_caged[order(tabela_referencias_caged$ref),]
# tabela_referencias_caged$ref <- as.character(tabela_referencias_caged$ref)
# 
# # lista_meses_bases_caged <- c(Dados:::Referencias$Caged)
# lista_meses_bases_caged <- c(tabela_referencias_caged$ref)
# 
# lista_anos_bases_rais <- c(Dados:::Referencias$Rais)

# lista_meses_bases_caged <- c(201901, 201902, 201903, 201904, 201905, 201906, 201907, 201908, 201909, 201910, 201911, 201912)
# 
# lista_anos_bases_rais <- c(2018, 2017, 2016, 2015)

mod_configuracoes_ui <- function(id){
  ns <- NS(id)
  
  
  library(shinyWidgets)
  library(DT)
  library(RSQLite)
  library(DBI)
  
  
  
  tabItem(tabName = "configuracoes", align = "center",
          
          fluidRow(
            
            column(12,
                   
                   boxPlus(
                     title = "Configurações",
                     closable = FALSE, 
                     width = NULL,
                     status = NULL,
                     solidHeader = TRUE, 
                     collapsible = FALSE,
                     enable_dropdown = FALSE,
                     
                     fluidRow(column(12,
                                     
                                     uiOutput(ns("slider_tempo_CAGED"))
                                     
                     )),
                     
                     fluidRow(column(6,
                                     box(width = 12,
                                         solidHeader = TRUE,
                                         collapsible = FALSE,
                                         collapsed = TRUE,
                                         title = "CBO",
                                         fluidRow(column(6,
                                                         pickerInput(ns("grande_grupo"), label = "Grande Grupo:", choices = ""),
                                                         pickerInput(ns("subgrupo_principal"), "Subgrupo Principal:", choices = ""),
                                                         pickerInput(ns("subgrupo"), "Subgrupo:", choices = ""),
                                                         pickerInput(ns("familia"), "Família:", choices = ""),
                                                         pickerInput(ns("ocupacao"), "Ocupação:", choices = ""),
                                                         actionBttn(ns("add_cbo"), "Adicionar", color = "primary", style = "bordered", icon = icon("plus"), size = "sm")
                                         ))
                                     )),
                              column(6,
                                     
                                     box(width = 12,
                                         solidHeader = TRUE,
                                         collapsible = FALSE,
                                         collapsed = FALSE,
                                         title = "CBOs Selecionadas",
                                         actionBttn(ns("limpar_cbo"), "Limpar", color = "primary", style = "bordered", icon = icon("eraser"), size = "sm"),
                                         actionBttn(ns("excluir_cbo"), "Excluir", color = "primary", style = "bordered", icon = icon("trash-alt"), size = "sm"),
                                         DT::dataTableOutput(ns("cbos_selecionadas"))
                                     )
                                     
                                     )
                     ),
                     
                     fluidRow(column(6,
                                     
                                     box(width = 12,
                                         solidHeader = TRUE,
                                         collapsible = FALSE,
                                         collapsed = TRUE,
                                         title = "CNAES",
                                         fluidRow(column(6,
                                                         pickerInput(ns("secao"), "Seção:", choices = ""),
                                                         pickerInput(ns("divisao"), "Divisão:", choices = ""),
                                                         pickerInput(ns("grupo"), "Grupo:", choices = ""),
                                                         pickerInput(ns("classe"), "Classe:", choices = ""),
                                                         actionBttn(ns("add_cnae"), "Adicionar", color = "primary", style = "bordered", icon = icon("plus"), size = "sm")
                                         ))
                                     )
                                     
                                     ),
                              column(6,
                                     box(width = 12,
                                         solidHeader = TRUE,
                                         collapsible = FALSE,
                                         collapsed = FALSE,
                                         title = "CNAEs Selecionadas",
                                         actionBttn(ns("limpar_cnae"), "Limpar", color = "primary", style = "bordered", icon = icon("eraser"), size = "sm"),
                                         actionBttn(ns("excluir_cnae"), "Excluir", color = "primary", style = "bordered", icon = icon("trash-alt"), size = "sm"),
                                         DT::dataTableOutput(ns("cnaes_selecionadas"))
                                     ))
                     ),
                     
                     fluidRow(
                       
                       column(12, align = "left",
                              
                              fluidRow(
                                
                                # column(3,
                                #        
                                #        box(width = 12,
                                #            solidHeader = TRUE,
                                #            collapsible = TRUE,
                                #            collapsed = TRUE,
                                #            title = "Outros",
                                #            
                                #            checkboxGroupInput(ns("corte_salario_minimo"), label = NULL, choices = c("Corte pelo salário mínimo")),
                                #            textInput(ns("salario_minimo"), label = h6("Valor do salário mínimo:"), value = 998),
                                #            checkboxGroupInput(ns("corte_teto"), label = NULL, choices = c("Corte pelo teto")),
                                #            textInput(ns("ndp"), label = h6("Número de vezes do desvio padrão:"), value = 5)
                                #            
                                #        )
                                #        
                                #        ),
                                # 
                                # column(width = 5),
                                
                                column(width = 4,
                                       box(width = 12, align = "left",
                                           solidHeader = TRUE,
                                           collapsible = TRUE,
                                           collapsed = FALSE,
                                           title = "Região/UF/Municipio",
                                           pickerInput(ns("regiao_caged"), "Região", choices = ""), 
                                           pickerInput(ns("uf_caged"), "UF", choices = ""),
                                           pickerInput(ns("municipio_caged"), "Município", choices = "", multiple = FALSE, options = pickerOptions(
                                             actionsBox = TRUE,
                                             title = "Selecione um Municipio",
                                             liveSearch = TRUE,
                                             dropupAuto = FALSE
                                           )),
                                           actionBttn(ns("add_mun"), "Adicionar", color = "primary", style = "bordered", icon = icon("plus"), size = "sm"),
                                           box(width = 12,
                                               solidHeader = TRUE,
                                               collapsible = TRUE,
                                               collapsed = FALSE,
                                               title = "Municípios Selecionados",
                                               actionBttn(ns("limpar_municipio"), "Limpar", color = "primary", style = "bordered", icon = icon("eraser"), size = "sm"),
                                               actionBttn(ns("excluir_municipio"), "Excluir", color = "primary", style = "bordered", icon = icon("trash-alt"), size = "sm"),
                                               DT::dataTableOutput(ns("municipios_selecionados"))
                                           )
                                       ))
                              )
                              
                              
                              
                              )
                       
                     ),
                     
                     fluidRow(
                       column(4),
                       column(4, actionBttn(ns("filtro_primario"), "Filtrar", color = "primary", icon = icon("filter"), style = "stretch", size = "sm")),
                       column(4)
                     )
                     
                   )
                   
            )
          )
  )
}

#' configuracoes Server Function
#'
#' @noRd 
mod_configuracoes_server <- function(input, output, session, caged, rais, origem){
  ns <- session$ns
  
  caged <- caged
  rais <- rais
  
  seletor_base <- reactive({
    
    p <- origem$origem()
    
    return(p)
    
  })
  
  observe({
    
    if(seletor_base() == TRUE){
      
      canal_caged <- caged
      
      tabela_referencias_caged <- data.frame(referencia = RSQLite::dbListTables(canal_caged))
      tabela_referencias_caged$ref <- as.numeric(substr(tabela_referencias_caged$referencia, 7, 12))
      tabela_referencias_caged <- tabela_referencias_caged[order(tabela_referencias_caged$ref),]
      tabela_referencias_caged$ref <- as.character(tabela_referencias_caged$ref)
      
      # lista_meses_bases_caged <- c(Dados:::Referencias$Caged)
      lista_meses_bases_caged <- c(tabela_referencias_caged$ref)
      
      output$slider_tempo_CAGED <- renderUI({
        
        box(width = 12,
            solidHeader = TRUE,
            collapsible = FALSE,
            collapsed = TRUE,
            title = "Período de Tempo",
            fluidRow(column(12,
                            sliderTextInput(
                              ns("periodo_tempo"),
                              label = NULL, 
                              choices = lista_meses_bases_caged,
                              selected = lista_meses_bases_caged[c(length(lista_meses_bases_caged)-11, length(lista_meses_bases_caged))]
                            )
            ))
        )
        
      })
      
      
    }else{
      
      output$slider_tempo_CAGED <- renderUI({
        
        canal_rais <- rais
        tabela_referencias_rais <- data.frame(referencia = RSQLite::dbListTables(canal_rais))
        tabela_referencias_rais$ref <- as.numeric(substr(tabela_referencias_rais$referencia, 6, 9))
        tabela_referencias_rais <- tabela_referencias_rais[order(tabela_referencias_rais$ref),]
        tabela_referencias_rais$ref <- as.character(tabela_referencias_rais$ref)
        
        lista_anos_bases_rais <- c(tabela_referencias_rais$ref)
        
        box(width = 12,
            solidHeader = TRUE,
            collapsible = FALSE,
            collapsed = TRUE,
            title = "Período de Tempo",
            fluidRow(column(12,
                            sliderTextInput(
                              ns("periodo_tempo"),
                              label = NULL, 
                              choices = lista_anos_bases_rais,
                              selected = lista_anos_bases_rais[c(length(lista_anos_bases_rais)-1, length(lista_anos_bases_rais))]
                            )
            ))
        )
        
      })
      
    }
    
  })
  
  # setwd("C:\\Users\\luqui\\Documents\\projeto-master\\projeto-master")
  # setwd("C:\\Users\\leand\\Desktop\\Sistema genérico MDO\\Nova pasta\\projeto-master\\projeto-master")
  
  limpar_dados <- function(){
    rm(list = ls(all.names = TRUE))
    gc()
  }
  
  info <- as.data.frame(Sys.info())
  
  info$coluna <- rownames(info)
  
  info <- subset(info, coluna == "user")
  
  memory.limit(1000000000)
  
  # caged <- RSQLite::dbConnect(RSQLite::SQLite(), dbname = "\\\\RDPDC1VPR0033\\IBRE-DNIT-Sata\\BD\\CAGED.sqlite")
  # canal <- RSQLite::dbConnect(SQLite(), dbname = "\\\\RDPDC1VPR0033\\IBRE-DNIT-Sata\\BD\\banco_de_dados.sqlite")
  
  # canal <- bd
  
  session$onSessionEnded(function(session){
    
    # dbDisconnect(canal)
    dbDisconnect(caged)
    dbDisconnect(rais)
    
    if(file.exists(paste0("dados_", as.character(info[1, 1])))){file.remove(paste0("dados_", as.character(info[1, 1])))}
    # if(file.exists(paste0("contagem"))){file.remove(paste0("contagem"))}
    
    # if(file.exists(paste0("cbo_", as.character(info[1, 1])))){file.remove(paste0("cbo_", as.character(info[1, 1])))}
    
    # if(file.exists(paste0("cnae_", as.character(info[1, 1])))){file.remove(paste0("cnae_", as.character(info[1, 1])))}
    
    # if(file.exists(paste0("municipio_", as.character(info[1, 1])))){file.remove(paste0("municipio_", as.character(info[1, 1])))}
    
    # if(file.exists(paste0("municipio_1_", as.character(info[1, 1])))){file.remove(paste0("municipio_1_", as.character(info[1, 1])))}
    
    if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){file.remove(paste0("caged_filtrado_", as.character(info[1, 1])))}
    if(file.exists(paste0("caged_filtrado2_", as.character(info[1, 1])))){file.remove(paste0("caged_filtrado2_", as.character(info[1, 1])))}
    if(file.exists(paste0("caged_filtrado_UF_", as.character(info[1, 1])))){file.remove(paste0("caged_filtrado_UF_", as.character(info[1, 1])))}
    if(file.exists(paste0("caged_filtrado_UF_ref_", as.character(info[1, 1])))){file.remove(paste0("caged_filtrado_UF_ref_", as.character(info[1, 1])))}
    if(file.exists(paste0("caged_filtrado_municipio_", as.character(info[1, 1])))){file.remove(paste0("caged_filtrado_municipio_", as.character(info[1, 1])))}
    if(file.exists(paste0("caged_filtrado_municipio_ref_", as.character(info[1, 1])))){file.remove(paste0("caged_filtrado_municipio_ref_", as.character(info[1, 1])))}
    
    if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){file.remove(paste0("rais_filtrado_", as.character(info[1, 1])))}
    if(file.exists(paste0("rais_filtrado2_", as.character(info[1, 1])))){file.remove(paste0("rais_filtrado2_", as.character(info[1, 1])))}
    if(file.exists(paste0("rais_filtrado_UF_", as.character(info[1, 1])))){file.remove(paste0("rais_filtrado_UF_", as.character(info[1, 1])))}
    if(file.exists(paste0("rais_filtrado_UF_ref_", as.character(info[1, 1])))){file.remove(paste0("rais_filtrado_UF_ref_", as.character(info[1, 1])))}
    if(file.exists(paste0("rais_filtrado_municipio_", as.character(info[1, 1])))){file.remove(paste0("rais_filtrado_municipio_", as.character(info[1, 1])))}
    if(file.exists(paste0("rais_filtrado_municipio_ref_", as.character(info[1, 1])))){file.remove(paste0("rais_filtrado_municipio_ref_", as.character(info[1, 1])))}
    
  })
  
  # municipio <- data.frame("Código" = c(""),
  #                         "Município" = c(""), stringsAsFactors = FALSE)
  
  # saveRDS(municipio, file = paste0("municipio_1_", as.character(info[1, 1])))
  
  # saveRDS(DadosUser, file = paste0("dados_", as.character(info[1, 1])))
  dados_user <- Dados::DadosUser
  saveRDS(dados_user, file = paste0("dados_", as.character(info[1,1])))
  
  carrega_municipios_selecionados <- function(){
    
    output$municipios_selecionados <- DT::renderDataTable(datatable(
      
      municipio <- readRDS(file = paste0("dados_", as.character(info[1,1])))$Caged$`Município_1`
      # municipio <- as.data.frame(municipio$`Município_1`)
      
      # municipio
      
      , options = list(pageLength = 8, dom= 'ftp'), colnames = c("Código", "Município"),
      rownames = FALSE  
    ))
    
  }
  
  carrega_municipios_selecionados()
  
  # sqlOutput_regiao <- paste('SELECT DISTINCT nome_grande_regiao FROM municipios_caged')
  # sqlOutput_regiao <- as.data.frame(RSQLite::dbGetQuery(canal, sqlOutput_regiao))
  
  sqlOutput_regiao <- Dados::ListaMunicipios %>% as.data.frame() %>% dplyr::select(nome_grande_regiao) %>% unique()
  
  if (nrow(sqlOutput_regiao>0)) {
    
    reg <- c(sqlOutput_regiao, "TODAS")
    
    updatePickerInput(session, "regiao_caged", choices = reg, selected = "TODAS")
    
  }
  
  observe({
    
    if (input$regiao_caged != "TODAS") {
      
      # sqlOutput_uf <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT sigla_uf FROM municipios_caged WHERE nome_grande_regiao = '" ,input$regiao_caged,"' ")) %>% as.data.frame()
      
      sqlOutput_uf <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(nome_grande_regiao == input$regiao_caged) %>% dplyr::select(sigla_uf) %>% unique()
      
      reg <- c(sqlOutput_uf, "TODAS")
      
      updatePickerInput(session, "uf_caged", choices = reg, selected = "TODAS")
    }
    
  })
  
  observe({
    
    if (input$uf_caged != "TODAS" & input$regiao_caged != "TODAS") {
      
      # sqlOutput_municipio <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT nome_municipio FROM municipios_caged WHERE sigla_uf = '" ,input$uf_caged,"' ")) %>% as.data.frame()
      
      sqlOutput_municipio <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(sigla_uf == input$uf_caged) %>% dplyr::select(nome_municipio) %>% unique()
      
      muni <- c(sqlOutput_municipio)
      
      updatePickerInput(session, "municipio_caged", choices = muni)
      
    }else{
      
      muni <- c("")
      
      updatePickerInput(session, "municipio_caged", choices = muni)
      
    }
    
  })
  
  observeEvent(input$add_mun, {
    
    if(input$municipio_caged == ""){
      
      if(input$uf_caged == "TODAS"){
        
        if(input$regiao_caged == "TODAS"){
          
          
          
        }else{
          
          # sqlOutput_regiao <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_grande_regiao, nome_grande_regiao FROM municipios_caged WHERE nome_grande_regiao = '" ,input$regiao_caged,"' ")) %>% as.data.frame()
          
          sqlOutput_regiao <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(nome_grande_regiao == input$regiao_caged) %>% dplyr::select(codigo_grande_regiao, nome_grande_regiao) %>% unique()
          
          dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
          municipio <- dados_geral$Caged$Município_1
          
          names(sqlOutput_regiao)[1] <- "Código"
          names(sqlOutput_regiao)[2] <- "Município"
          
          municipio <- rbind(municipio, sqlOutput_regiao)
          
          municipio <- municipio %>% unique()
          dados_geral$Caged$Município_1 <- municipio
          dados_geral$Rais$Município_1 <- municipio
          saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
          carrega_municipios_selecionados()
          
        }
        
      }else{
        
        # sqlOutput_uf <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_uf, sigla_uf FROM municipios_caged WHERE sigla_uf = '" ,input$uf_caged,"' ")) %>% as.data.frame()
        
        sqlOutput_uf <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(sigla_uf == input$uf_caged) %>% dplyr::select(codigo_uf, sigla_uf) %>% unique()
        
        dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        municipio <- dados_geral$Caged$Município_1
        
        names(sqlOutput_uf)[1] <- "Código"
        names(sqlOutput_uf)[2] <- "Município"
        
        municipio <- rbind(municipio, sqlOutput_uf)
        
        municipio <- municipio %>% unique()
        dados_geral$Caged$Município_1 <- municipio
        dados_geral$Rais$Município_1 <- municipio
        saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
        carrega_municipios_selecionados()
        
      }
      
    }else{
      
      # sqlOutput_mun <- RSQLite::dbGetQuery(canal, paste0('SELECT DISTINCT codigo_municipio, nome_municipio FROM municipios_caged WHERE nome_municipio = "' , input$municipio_caged, '" AND sigla_uf = "', input$uf_caged, '"')) %>% as.data.frame()
      
      sqlOutput_mun <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(nome_municipio == input$municipio_caged & sigla_uf == input$uf_caged) %>% dplyr::select(codigo_municipio, nome_municipio) %>% unique()
      
      dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
      municipio <- dados_geral$Caged$Município_1
      
      names(sqlOutput_mun)[1] <- "Código"
      names(sqlOutput_mun)[2] <- "Município"
      
      municipio <- rbind(municipio, sqlOutput_mun)
      
      municipio <- municipio %>% unique()
      dados_geral$Caged$Município_1 <- municipio
      dados_geral$Rais$Município_1 <- municipio
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      carrega_municipios_selecionados()
      
    }
    
  })
  
  observeEvent(input$limpar_municipio, {
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    
    municipio <- data.frame("Código" = c(""),
                            "Município" = c(""), stringsAsFactors = FALSE)
    
    
    
    dados_geral$Caged$Município_1 <- municipio
    dados_geral$Rais$Município_1 <- municipio
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    carrega_municipios_selecionados()
    
  })
  
  # sqlOutput_cbo_grande_grupo <- as.data.frame(RSQLite::dbGetQuery(canal, paste('SELECT DISTINCT codigo_grande_grupo, descricao_grande_grupo FROM cbo_caged')))
  
  sqlOutput_cbo_grande_grupo <- Dados::ListaCbos %>% as.data.frame() %>% dplyr::select(codigo_grande_grupo, descricao_grande_grupo) %>% unique()
  
  if (nrow(sqlOutput_cbo_grande_grupo>0)) {
    
    reg <- "list("
    
    for (xx in 1:nrow(sqlOutput_cbo_grande_grupo)) {
      
      reg <- paste0(reg, "'", sqlOutput_cbo_grande_grupo[xx, 1], " - ", sqlOutput_cbo_grande_grupo[xx, 2], "' = ", sqlOutput_cbo_grande_grupo[xx, 1], ",")
      
    }
    
    reg <- substr(reg, 1, nchar(reg)-1)
    reg <- paste0(reg, ", 'TODAS' = -1)")
    # reg <- c(sqlOutput_cbo_grande_grupo, "TODAS")
    
    lista_grande_grupo <- eval(parse(text = reg))
    
    updatePickerInput(session, "grande_grupo", choices = lista_grande_grupo, selected = lista_grande_grupo[[length(lista_grande_grupo)]])
    
  }
  
  # sqlOutput_cnae_secao <- as.data.frame(RSQLite::dbGetQuery(canal, paste('SELECT DISTINCT secao_cnae FROM cnaes_caged')))
  
  sqlOutput_cnae_secao <- Dados::ListaCnaes %>% as.data.frame() %>% dplyr::select(secao_cnae) %>% unique()
  
  if (nrow(sqlOutput_cnae_secao>0)) {
    
    reg <- "list("
    
    for (xx in 1:nrow(sqlOutput_cnae_secao)) {
      
      reg <- paste0(reg, "'Seção ", sqlOutput_cnae_secao[xx, 1], "' = '", sqlOutput_cnae_secao[xx, 1], "',")
      
    }
    
    reg <- substr(reg, 1, nchar(reg)-1)
    reg <- paste0(reg, ", 'TODAS' = -1)")
    
    lista_cnae_secao <- eval(parse(text = reg))
    
    updatePickerInput(session, "secao", choices = lista_cnae_secao, selected = lista_cnae_secao[[length(lista_cnae_secao)]])
    
  }
  
  
  
  # cbo <- data.frame("Código" = c(""),
  #                  "Descrição" = c(""), stringsAsFactors = FALSE)
  # 
  # saveRDS(cbo, file = paste0("cbo_", as.character(info[1, 1])))
  # 
  # cnae <- data.frame("Código" = c(""),
  #                   "Descrição" = c(""), stringsAsFactors = FALSE)
  # 
  # saveRDS(cnae, file = paste0("cnae_", as.character(info[1, 1])))
  
  carrega_cbos_selecionadas <- function(){
    
    output$cbos_selecionadas <- DT::renderDataTable(datatable(
      
      cbo <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Caged$CBO.2002.Ocupação
      
      , options = list(pageLength = 8, dom= 'ftp'), colnames = c("Código", "Descrição"),
      rownames = FALSE  
    ))
    
  }
  
  carrega_cbos_selecionadas()
  
  carrega_cnaes_selecionadas <- function(){
    
    output$cnaes_selecionadas <- DT::renderDataTable(datatable(
      
      cnae <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Caged$CNAE.2.0.Classe
      
      , options = list(pageLength = 8, dom= 'ftp'), colnames = c("Código", "Descrição"),
      rownames = FALSE  
    ))
    
  }
  
  carrega_cnaes_selecionadas()
  
  observe({
    
    if(input$grande_grupo != -1) {
      
      # sqlOutput_subgrupo_principal <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_subgrupo_principal, descricao_subgrupo_principal FROM cbo_caged WHERE codigo_grande_grupo = '" ,input$grande_grupo,"' ")) %>% as.data.frame()
      
      sqlOutput_subgrupo_principal <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_grande_grupo == input$grande_grupo) %>% dplyr::select(codigo_subgrupo_principal, descricao_subgrupo_principal) %>% unique()
      
      if(nrow(sqlOutput_subgrupo_principal) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_subgrupo_principal)) {
          
          reg <- paste0(reg, "'", sqlOutput_subgrupo_principal[xx, 1], " - ", sqlOutput_subgrupo_principal[xx, 2], "' = ", sqlOutput_subgrupo_principal[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_subgrupo_principal <- eval(parse(text = reg))
        
        updatePickerInput(session, "subgrupo_principal", choices = lista_subgrupo_principal, selected = lista_subgrupo_principal[[length(lista_subgrupo_principal)]])
        
      }
      else{

        lista_subgrupo_principal <- list("TODAS" = -1)

        updatePickerInput(session, "subgrupo_principal", choices = lista_subgrupo_principal, selected = lista_subgrupo_principal[[length(lista_subgrupo_principal)]])
        
      }
      
      
    }
    else{
      
      lista_subgrupo_principal <- list("TODAS" = -1)
      
      updatePickerInput(session, "subgrupo_principal", choices = lista_subgrupo_principal, selected = lista_subgrupo_principal[[length(lista_subgrupo_principal)]])
      
    }
    
  })
  
  observe({
    
    if(input$subgrupo_principal != -1) {
      
      # sqlOutput_subgrupo <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_subgrupo, descricao_subgrupo FROM cbo_caged WHERE codigo_subgrupo_principal = '" ,input$subgrupo_principal,"' ")) %>% as.data.frame()
      
      sqlOutput_subgrupo <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_subgrupo_principal == input$subgrupo_principal) %>% dplyr::select(codigo_subgrupo, descricao_subgrupo) %>% unique()
      
      if(nrow(sqlOutput_subgrupo) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_subgrupo)) {
          
          reg <- paste0(reg, "'", sqlOutput_subgrupo[xx, 1], " - ", sqlOutput_subgrupo[xx, 2], "' = ", sqlOutput_subgrupo[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_subgrupo <- eval(parse(text = reg))
        
        updatePickerInput(session, "subgrupo", choices = lista_subgrupo, selected = lista_subgrupo[[length(lista_subgrupo)]])
        
      }
      else{
        
        lista_subgrupo <- list("TODAS" = -1)
        
        updatePickerInput(session, "subgrupo", choices = lista_subgrupo, selected = lista_subgrupo[[length(lista_subgrupo)]])
        
      }
      
      
    }
    else{
      
      lista_subgrupo <- list("TODAS" = -1)
      
      updatePickerInput(session, "subgrupo", choices = lista_subgrupo, selected = lista_subgrupo[[length(lista_subgrupo)]])
      
    }
    
  })
  
  observe({
    
    if(input$subgrupo != -1) {
      
      # sqlOutput_familia <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_familia, descricao_familia FROM cbo_caged WHERE codigo_subgrupo = '" ,input$subgrupo,"' ")) %>% as.data.frame()
      
      sqlOutput_familia <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_subgrupo == input$subgrupo) %>% dplyr::select(codigo_familia, descricao_familia) %>% unique()
      
      if(nrow(sqlOutput_familia) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_familia)) {
          
          reg <- paste0(reg, "'", sqlOutput_familia[xx, 1], " - ", sqlOutput_familia[xx, 2], "' = ", sqlOutput_familia[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_familia <- eval(parse(text = reg))
        
        updatePickerInput(session, "familia", choices = lista_familia, selected = lista_familia[[length(lista_familia)]])
        
      }
      else{
        
        lista_familia <- list("TODAS" = -1)
        
        updatePickerInput(session, "familia", choices = lista_familia, selected = lista_familia[[length(lista_familia)]])
        
      }
      
      
    }
    else{
      
      lista_familia <- list("TODAS" = -1)
      
      updatePickerInput(session, "familia", choices = lista_familia, selected = lista_familia[[length(lista_familia)]])
      
    }
    
  })
  
  observe({
    
    if(input$familia != -1) {
      
      # sqlOutput_ocupacao <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_ocupacao, descricao_ocupacao FROM cbo_caged WHERE codigo_familia = '" ,input$familia,"' ")) %>% as.data.frame()
      
      sqlOutput_ocupacao <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_familia == input$familia) %>% dplyr::select(codigo_ocupacao, descricao_ocupacao) %>% unique()
      
      if(nrow(sqlOutput_ocupacao) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_ocupacao)) {
          
          reg <- paste0(reg, "'", sqlOutput_ocupacao[xx, 1], " - ", sqlOutput_ocupacao[xx, 2], "' = ", sqlOutput_ocupacao[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_ocupacao <- eval(parse(text = reg))
        
        updatePickerInput(session, "ocupacao", choices = lista_ocupacao, selected = lista_ocupacao[[length(lista_ocupacao)]])
        
      }
      else{
        
        lista_ocupacao <- list("TODAS" = -1)
        
        updatePickerInput(session, "ocupacao", choices = lista_ocupacao, selected = lista_ocupacao[[length(lista_ocupacao)]])
        
      }
      
      
    }
    else{
      
      lista_ocupacao <- list("TODAS" = -1)
      
      updatePickerInput(session, "ocupacao", choices = lista_ocupacao, selected = lista_ocupacao[[length(lista_ocupacao)]])
      
    }
    
  })
  
  observeEvent(input$add_cbo, {
    
    if(input$ocupacao == -1){
      
      if(input$familia == -1){
        
        if(input$subgrupo == -1){
          
          if(input$subgrupo_principal == -1){
            
            if(input$grande_grupo == -1){
              
              
              
            }else{
              
              # descricao_grande_grupo <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_grande_grupo FROM cbo_caged WHERE codigo_grande_grupo = '" ,input$grande_grupo,"' ")) %>% as.data.frame()
              
              descricao_grande_grupo <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_grande_grupo == input$grande_grupo) %>% dplyr::select(descricao_grande_grupo) %>% unique()
              
              dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
              cbo <- dados_geral$Caged$CBO.2002.Ocupação
              
              nova_cbo <- data.frame("Código" = c(input$grande_grupo),
                                     "Descrição" = c(descricao_grande_grupo[1,1]))
              cbo <- rbind(cbo, nova_cbo) %>% unique()
              dados_geral$Caged$CBO.2002.Ocupação <- cbo
              dados_geral$Rais$CBO.2002.Ocupação <- cbo
              saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
              carrega_cbos_selecionadas()
              
            }
            
          }else{
            
            # descricao_subgrupo_principal <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_subgrupo_principal FROM cbo_caged WHERE codigo_subgrupo_principal = '" ,input$subgrupo_principal,"' ")) %>% as.data.frame()
            
            descricao_subgrupo_principal <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_subgrupo_principal == input$subgrupo_principal) %>% dplyr::select(descricao_subgrupo_principal) %>% unique()
            
            dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
            cbo <- dados_geral$Caged$CBO.2002.Ocupação
            
            nova_cbo <- data.frame("Código" = c(input$subgrupo_principal),
                                   "Descrição" = c(descricao_subgrupo_principal[1,1]))
            cbo <- rbind(cbo, nova_cbo) %>% unique()
            dados_geral$Caged$CBO.2002.Ocupação <- cbo
            dados_geral$Rais$CBO.2002.Ocupação <- cbo
            saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
            carrega_cbos_selecionadas()
            
          }
          
        }else{
          
          # descricao_subgrupo <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_subgrupo FROM cbo_caged WHERE codigo_subgrupo = '" ,input$subgrupo,"' ")) %>% as.data.frame()
          
          descricao_subgrupo <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_subgrupo == input$subgrupo) %>% dplyr::select(descricao_subgrupo) %>% unique()
          
          dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
          cbo <- dados_geral$Caged$CBO.2002.Ocupação
          
          nova_cbo <- data.frame("Código" = c(input$subgrupo),
                                 "Descrição" = c(descricao_subgrupo[1,1]))
          cbo <- rbind(cbo, nova_cbo) %>% unique()
          dados_geral$Caged$CBO.2002.Ocupação <- cbo
          dados_geral$Rais$CBO.2002.Ocupação <- cbo
          saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
          carrega_cbos_selecionadas()
          
        }
        
      }else{
        
        # descricao_familia <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_familia FROM cbo_caged WHERE codigo_familia = '" ,input$familia,"' ")) %>% as.data.frame()
        
        descricao_familia <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_familia == input$familia) %>% dplyr::select(descricao_familia) %>% unique()
        
        dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        cbo <- dados_geral$Caged$CBO.2002.Ocupação
        
        nova_cbo <- data.frame("Código" = c(input$familia),
                               "Descrição" = c(descricao_familia[1,1]))
        cbo <- rbind(cbo, nova_cbo) %>% unique()
        dados_geral$Caged$CBO.2002.Ocupação <- cbo
        dados_geral$Rais$CBO.2002.Ocupação <- cbo
        saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
        carrega_cbos_selecionadas()
        
      }
      
    }else{
      
      # descricao_ocupacao <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_ocupacao FROM cbo_caged WHERE codigo_ocupacao = '" ,input$ocupacao,"' ")) %>% as.data.frame()
      
      descricao_ocupacao <- Dados::ListaCbos %>% as.data.frame() %>% subset(codigo_ocupacao == input$ocupacao) %>% dplyr::select(descricao_ocupacao) %>% unique()
      
      dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
      cbo <- dados_geral$Caged$CBO.2002.Ocupação
      
      nova_cbo <- data.frame("Código" = c(input$ocupacao),
                             "Descrição" = c(descricao_ocupacao[1,1]))
      cbo <- rbind(cbo, nova_cbo) %>% unique()
      dados_geral$Caged$CBO.2002.Ocupação <- cbo
      dados_geral$Rais$CBO.2002.Ocupação <- cbo
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      carrega_cbos_selecionadas()
      
    }
    
  })
  
  observeEvent(input$limpar_cbo, {
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    
    cbo <- data.frame("Código" = c(""),
                      "Descrição" = c(""), stringsAsFactors = FALSE)
    
    
    dados_geral$Caged$CBO.2002.Ocupação <- cbo
    dados_geral$Rais$CBO.2002.Ocupação <- cbo
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    carrega_cbos_selecionadas()
    
  })
  
  observeEvent(input$add_cnae, {
    
    if(input$classe == -1){
      
      if(input$grupo == -1){
        
        if(input$divisao == -1){
          
          if(input$secao == -1){
            
          }else{
            
            # divisoes_da_secao <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT divisao_cnae, descricao_divisao FROM cnaes_caged WHERE secao_cnae = '" ,input$secao,"' ")) %>% as.data.frame()
            
            divisoes_da_secao <- Dados::ListaCnaes %>% as.data.frame() %>% subset(secao_cnae == input$secao) %>% dplyr::select(divisao_cnae, descricao_divisao) %>% unique()
            
            dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
            cnae <- dados_geral$Caged$CNAE.2.0.Classe
            
            names(divisoes_da_secao)[1] <- "Código"
            names(divisoes_da_secao)[2] <- "Descrição"
            
            cnae <- rbind(cnae, divisoes_da_secao) %>% unique()
            
            dados_geral$Caged$CNAE.2.0.Classe <- cnae
            dados_geral$Rais$CNAE.2.0.Classe <- cnae
            saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
            carrega_cnaes_selecionadas()
            
          }
          
        }else{
          
          # descricao_divisao <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_divisao FROM cnaes_caged WHERE divisao_cnae = '" ,input$divisao,"' ")) %>% as.data.frame()
          
          descricao_divisao <- Dados::ListaCnaes %>% as.data.frame() %>% subset(divisao_cnae == input$divisao) %>% dplyr::select(descricao_divisao) %>% unique()
          
          dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
          cnae <- dados_geral$Caged$CNAE.2.0.Classe
          
          nova_cnae <- data.frame("Código" = c(input$divisao),
                                  "Descrição" = c(descricao_divisao[1,1]))
          
          cnae <- rbind(cnae, nova_cnae) %>% unique()
          
          dados_geral$Caged$CNAE.2.0.Classe <- cnae
          dados_geral$Rais$CNAE.2.0.Classe <- cnae
          saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
          carrega_cnaes_selecionadas()
          
        }
        
      }else{
        
        # descricao_grupo <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_grupo FROM cnaes_caged WHERE grupo_cnae = '" ,input$grupo,"' ")) %>% as.data.frame()
        
        descricao_grupo <- Dados::ListaCnaes %>% as.data.frame() %>% subset(grupo_cnae == input$grupo) %>% dplyr::select(descricao_grupo) %>% unique()
        
        dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        cnae <- dados_geral$Caged$CNAE.2.0.Classe
        
        nova_cnae <- data.frame("Código" = c(input$grupo),
                                "Descrição" = c(descricao_grupo[1,1]))
        
        cnae <- rbind(cnae, nova_cnae) %>% unique()
        
        dados_geral$Caged$CNAE.2.0.Classe <- cnae
        dados_geral$Rais$CNAE.2.0.Classe <- cnae
        saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
        carrega_cnaes_selecionadas()
        
      }
      
    }else{
      
      # descricao_classe <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT descricao_cnae FROM cnaes_caged WHERE classe_cnae = '" ,input$classe,"' ")) %>% as.data.frame()
      
      descricao_classe <- Dados::ListaCnaes %>% as.data.frame() %>% subset(classe_cnae == input$classe) %>% dplyr::select(descricao_cnae) %>% unique()
      
      dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
      cnae <- dados_geral$Caged$CNAE.2.0.Classe
      
      nova_cnae <- data.frame("Código" = c(input$classe),
                              "Descrição" = c(descricao_classe[1,1]))
      
      cnae <- rbind(cnae, nova_cnae) %>% unique()
      
      dados_geral$Caged$CNAE.2.0.Classe <- cnae
      dados_geral$Rais$CNAE.2.0.Classe <- cnae
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      carrega_cnaes_selecionadas()
      
    }
    
  })
  
  
  observeEvent(input$limpar_cnae, {
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    
    cnae <- data.frame("Código" = c(""),
                      "Descrição" = c(""), stringsAsFactors = FALSE)
    
    dados_geral$Caged$CNAE.2.0.Classe <- cnae
    dados_geral$Rais$CNAE.2.0.Classe <- cnae
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    carrega_cnaes_selecionadas()
    
  })
  
  
  # Carrega seção CNAE
  
  observe({
    
    if(input$secao != -1) {
      
      # sqlOutput_divisao_cnae <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT divisao_cnae, descricao_divisao FROM cnaes_caged WHERE secao_cnae = '" ,input$secao,"' ")) %>% as.data.frame()
      
      sqlOutput_divisao_cnae <- Dados::ListaCnaes %>% as.data.frame() %>% subset(secao_cnae == input$secao) %>% dplyr::select(divisao_cnae, descricao_divisao) %>% unique()
      
      if(nrow(sqlOutput_divisao_cnae) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_divisao_cnae)) {
          
          reg <- paste0(reg, "'", sqlOutput_divisao_cnae[xx, 1], " - ", sqlOutput_divisao_cnae[xx, 2], "' = ", sqlOutput_divisao_cnae[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_divisao_cnae <- eval(parse(text = reg))
        
        updatePickerInput(session, "divisao", choices = lista_divisao_cnae, selected = lista_divisao_cnae[[length(lista_divisao_cnae)]])
        
      }
      else{
        
        lista_divisao_cnae <- list("TODAS" = -1)
        
        updatePickerInput(session, "divisao", choices = lista_divisao_cnae, selected = lista_divisao_cnae[[length(lista_divisao_cnae)]])
        
      }
      
      
    }
    else{
      
      lista_divisao_cnae <- list("TODAS" = -1)
      
      updatePickerInput(session, "divisao", choices = lista_divisao_cnae, selected = lista_divisao_cnae[[length(lista_divisao_cnae)]])
      
    }
    
  })
  
  observe({
    
    if(input$divisao != -1) {
      
      # sqlOutput_grupo_cnae <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT grupo_cnae, descricao_grupo FROM cnaes_caged WHERE divisao_cnae = '" ,input$divisao,"' ")) %>% as.data.frame()
      
      sqlOutput_grupo_cnae <- Dados::ListaCnaes %>% as.data.frame() %>% subset(divisao_cnae == input$divisao) %>% dplyr::select(grupo_cnae, descricao_grupo) %>% unique()
      
      if(nrow(sqlOutput_grupo_cnae) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_grupo_cnae)) {
          
          reg <- paste0(reg, "'", sqlOutput_grupo_cnae[xx, 1], " - ", sqlOutput_grupo_cnae[xx, 2], "' = ", sqlOutput_grupo_cnae[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_grupo_cnae <- eval(parse(text = reg))
        
        updatePickerInput(session, "grupo", choices = lista_grupo_cnae, selected = lista_grupo_cnae[[length(lista_grupo_cnae)]])
        
      }
      else{
        
        lista_grupo_cnae <- list("TODAS" = -1)
        
        updatePickerInput(session, "grupo", choices = lista_grupo_cnae, selected = lista_grupo_cnae[[length(lista_grupo_cnae)]])
        
      }
      
      
    }
    else{
      
      lista_grupo_cnae <- list("TODAS" = -1)
      
      updatePickerInput(session, "grupo", choices = lista_grupo_cnae, selected = lista_grupo_cnae[[length(lista_grupo_cnae)]])
      
    }
    
  })
  
  observe({
    
    if(input$grupo != -1) {
      
      # sqlOutput_classe_cnae <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT classe_cnae, descricao_cnae FROM cnaes_caged WHERE grupo_cnae = '" ,input$grupo,"' ")) %>% as.data.frame()
      
      sqlOutput_classe_cnae <- Dados::ListaCnaes %>% as.data.frame() %>% subset(grupo_cnae == input$grupo) %>% dplyr::select(classe_cnae, descricao_cnae) %>% unique()
      
      if(nrow(sqlOutput_classe_cnae) > 0) {
        
        reg <- "list("
        
        for (xx in 1:nrow(sqlOutput_classe_cnae)) {
          
          reg <- paste0(reg, "'", sqlOutput_classe_cnae[xx, 1], " - ", sqlOutput_classe_cnae[xx, 2], "' = ", sqlOutput_classe_cnae[xx, 1], ",")
          
        }
        
        reg <- substr(reg, 1, nchar(reg)-1)
        reg <- paste0(reg, ", 'TODAS' = -1)")
        
        lista_classe_cnae <- eval(parse(text = reg))
        
        updatePickerInput(session, "classe", choices = lista_classe_cnae, selected = lista_classe_cnae[[length(lista_classe_cnae)]])
        
      }
      else{
        
        lista_classe_cnae <- list("TODAS" = -1)
        
        updatePickerInput(session, "classe", choices = lista_classe_cnae, selected = lista_classe_cnae[[length(lista_classe_cnae)]])
        
      }
      
      
    }
    else{
      
      lista_classe_cnae <- list("TODAS" = -1)
      
      updatePickerInput(session, "classe", choices = lista_classe_cnae, selected = lista_classe_cnae[[length(lista_classe_cnae)]])
      
    }
    
  })
  
  # Evento que filtra os dados iniciais do CAGED ou RAIS pelo tempo, CBO e CNAE
  observeEvent(input$filtro_primario, {
    
    memory.limit(1000000000)
    
    # showModal(tags$div(id="carregando",modalDialog(
    #   fluidRow(
    # 
    #     column(width = 12, align = "center",
    # 
    #            progressBar(id = "pb4", value = 0, display_pct = TRUE, striped = TRUE)
    # 
    #     )
    # 
    #   ),
    #   footer=NULL)))
    
    shinybusy::show_modal_spinner()
    
    inicio_calculo <- Sys.time()
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    dados_geral$Caged$Competência.Declarada[1] <- input$periodo_tempo[1]
    dados_geral$Rais$Competência.Declarada[1] <- input$periodo_tempo[1]
    dados_geral$Caged$Competência.Declarada[2] <- input$periodo_tempo[2]
    dados_geral$Rais$Competência.Declarada[2] <- input$periodo_tempo[2]
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    
    if(seletor_base() == TRUE){
      
      # Verifica as CBOs adicionadas na tabela para fazer parte da seleção no banco de dados
      cbos_selecionadas_filtro <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Caged$CBO.2002.Ocupação
      cbos_selecionadas_filtro <- subset(cbos_selecionadas_filtro, `Código` != "")
      
      if(nrow(cbos_selecionadas_filtro) == 0){
        
        texto_cbo <- ""
        
      }else{
        
        texto_cbo <- " AND ("
        
        for(xx in 1:nrow(cbos_selecionadas_filtro)) {
          
          texto_cbo <- paste0(texto_cbo, "SUBSTR(`CBO.2002.Ocupação`, 1, ", nchar(as.character(cbos_selecionadas_filtro$Código[xx])), ") = '", cbos_selecionadas_filtro$Código[xx], "' OR ")
          
        }
        
        texto_cbo <- substr(texto_cbo, 1, nchar(texto_cbo)-4)
        texto_cbo <- paste0(texto_cbo, ")")
        
      }
      
      # Verifica as CNAEs adicionadas na tabela para fazer parte da seleção no banco de dados
      cnaes_selecionadas_filtro <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Caged$CNAE.2.0.Classe
      cnaes_selecionadas_filtro <- subset(cnaes_selecionadas_filtro, `Código` != "")
      
      if(nrow(cnaes_selecionadas_filtro) == 0){
        
        texto_cnae <- ""
        
      }else{
        
        texto_cnae <- " AND ("
        
        for(xx in 1:nrow(cnaes_selecionadas_filtro)) {
          
          texto_cnae <- paste0(texto_cnae, "SUBSTR(`CNAE.2.0.Classe`, 1, ", nchar(as.character(cnaes_selecionadas_filtro$Código[xx])), ") = '", cnaes_selecionadas_filtro$Código[xx], "' OR ")
          
        }
        
        texto_cnae <- substr(texto_cnae, 1, nchar(texto_cnae)-4)
        texto_cnae <- paste0(texto_cnae, ")")
        
      }
      
      # Verifica os Municipios adicionadas na tabela para fazer parte da seleção no banco de dados
      municipio <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Caged$Município_1
      municipio <- municipio[-1,]
      
      if(nrow(municipio) == 0){
        
        texto_municipio <- ""
        
      }else{
        
        texto_municipio <- " AND ("
        
        for(xx in 1:nrow(municipio)) {
          
          if(nchar(as.character(municipio$Código[xx])) == 7){
            
            texto_municipio <- paste0(texto_municipio, "SUBSTR(`Município`, 1, 6) = '", substr(municipio$Código[xx], 1, 6), "' OR ")
            
          }else{
            
            texto_municipio <- paste0(texto_municipio, "SUBSTR(`Município`, 1, ", nchar(as.character(municipio$Código[xx])), ") = '", municipio$Código[xx], "' OR ")
            
          }
          
        }
        
        texto_municipio <- substr(texto_municipio, 1, nchar(texto_municipio)-4)
        texto_municipio <- paste0(texto_municipio, ")")
        
      }
      
      # caged <- RSQLite::dbConnect(SQLite(), dbname = paste0("c:\\BD", "\\", "CAGED.sqlite"))
      
      ListaReferencias <- data.frame(tabela = RSQLite::dbListTables(caged))
      ListaReferencias$referencia <- as.numeric(substr(ListaReferencias$tabela, 7, 12))
      ListaReferencias <- ListaReferencias[order(ListaReferencias$referencia),]
      ListaReferencias <- subset(ListaReferencias, ListaReferencias$referencia >= input$periodo_tempo[1] & ListaReferencias$referencia <= input$periodo_tempo[2])
      
      TextoBuscaCaged <- ""
      
      for (xxx in 1:nrow(ListaReferencias)) {
        
        TextoBuscaCaged <- paste0(TextoBuscaCaged, "SELECT * FROM caged_", as.character(ListaReferencias$referencia[xxx]), " WHERE 1 = 1", texto_cbo, texto_cnae, texto_municipio, " UNION ALL ")
        
      }
      
      TextoBuscaCaged <- substr(TextoBuscaCaged, 1, nchar(TextoBuscaCaged) - 11)
      
      print(TextoBuscaCaged)
      
      # Realiza a seleção no banco de dados em função do período selecionado, CBOs e CNAEs
      # base_dados <- RSQLite::dbGetQuery(caged, paste0("SELECT * FROM caged WHERE `Competência.Declarada` BETWEEN ", input$periodo_tempo[1], " AND ", input$periodo_tempo[2], texto_cbo, texto_cnae, texto_municipio)) %>% as.data.frame()
      base_dados <- RSQLite::dbGetQuery(caged, paste0(TextoBuscaCaged)) %>% as.data.frame()
      # contagem <- RSQLite::dbGetQuery(caged, paste0("SELECT Total.`Competência.Declarada`, Total.AmostrasTotal, Entrada.AmostrasEntrada FROM (SELECT `Competência.Declarada`, COUNT(`Competência.Declarada`) AS AmostrasEntrada FROM caged WHERE `Admitidos.Desligados` = 1", texto_cbo, texto_cnae, texto_municipio, " GROUP BY `Competência.Declarada`) AS Entrada LEFT JOIN (SELECT `Competência.Declarada`, COUNT(`Competência.Declarada`) AS AmostrasTotal FROM caged WHERE 1 = 1", texto_cbo, texto_cnae, texto_municipio, " GROUP BY `Competência.Declarada`) AS Total ON Total.`Competência.Declarada` = Entrada.`Competência.Declarada`")) %>% as.data.frame()
      # contagem$AmostrasSaida <- contagem$AmostrasTotal - contagem$AmostrasEntrada
      # contagem$AmostrasSaldo <- contagem$AmostrasEntrada - contagem$AmostrasSaida
      
      # contagem <- base_dados %>% 
      #   dplyr::group_by(Competência.Declarada) %>% 
      #   dplyr::mutate(AmostrasTotal = length(Salário.Mensal),
      #                 AmostrasEntrada = length(Salário.Mensal[Admitidos.Desligados == 1]),
      #                 AmostrasSaida = length(Salário.Mensal[Admitidos.Desligados == 2])) %>% 
      #   dplyr::ungroup() %>% 
      #   dplyr::select(Competência.Declarada, AmostrasTotal, AmostrasEntrada, AmostrasSaida)
      # 
      # contagem$AmostrasSaldo <- contagem$AmostrasEntrada - contagem$AmostrasSaida
      
      # saveRDS(contagem, file = "contagem")
      
      # base_dados <- base_dados %>% 
      #   dplyr::mutate(media_salario = mean(Salário.Mensal),
      #                 sd_salario = sd(Salário.Mensal))
      # 
      # if(is.null(input$corte_salario_minimo)){
      #   
      #   
      # }else if(input$corte_salario_minimo == "Corte pelo salário mínimo"){
      #   
      #   if(input$salario_minimo != ""){
      #     
      #     base_dados <- base_dados %>% subset(Salário.Mensal >= as.numeric(input$salario_minimo))
      #     
      #   }
      #   
      # }
      # 
      # if(is.null(input$corte_teto)){
      #   
      #   
      # }else if(input$corte_teto == "Corte pelo teto"){
      #   
      #   if(input$ndp != ""){
      #     
      #     base_dados <- base_dados %>% subset(Salário.Mensal <= as.numeric(input$ndp) * sd_salario + media_salario)
      #     
      #   }
      #   
      # }
      
      
      # Cria colunas calculadas com os dados gerais
      base_dados <- base_dados %>% 
        dplyr::mutate(media_salario = mean(Salário.Mensal, na.rm = TRUE),
                      sd_salario = sd(Salário.Mensal, na.rm = TRUE),
                      n_amostras = length(Salário.Mensal),
                      n_entrada = length(Salário.Mensal[Admitidos.Desligados == 1]),
                      n_saida = length(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_salario_entrada = mean(Salário.Mensal[Admitidos.Desligados == 1], na.rm = TRUE),
                      media_salario_saida = mean(Salário.Mensal[Admitidos.Desligados == 2], na.rm = TRUE),
                      media_permanencia = mean(Tempo.Emprego, na.rm = TRUE))
      
      # Cria colunas calculadas baseada na referência e Município
      base_dados <- base_dados %>% 
        dplyr::group_by(Competência.Declarada, Município) %>% 
        dplyr::mutate(media_salario_municipio_ref = mean(Salário.Mensal, na.rm = TRUE),
                      sd_salario_municipio_ref = sd(Salário.Mensal, na.rm = TRUE),
                      n_amostras_municipio_ref = length(Salário.Mensal),
                      n_entrada_municipio_ref = length(Salário.Mensal[Admitidos.Desligados == 1]),
                      n_saida_municipio_ref = length(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_salario_entrada_municipio_ref = mean(Salário.Mensal[Admitidos.Desligados == 1], na.rm = TRUE),
                      media_salario_saida_municipio_ref = mean(Salário.Mensal[Admitidos.Desligados == 2], na.rm = TRUE),
                      media_permanencia_municipio_ref = mean(Tempo.Emprego, na.rm = TRUE)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada no Município
      base_dados <- base_dados %>% 
        dplyr::group_by(Município) %>% 
        dplyr::mutate(media_salario_municipio = mean(Salário.Mensal, na.rm = TRUE),
                      sd_salario_municipio = sd(Salário.Mensal, na.rm = TRUE),
                      n_amostras_municipio = length(Salário.Mensal),
                      n_entrada_municipio = length(Salário.Mensal[Admitidos.Desligados == 1]),
                      n_saida_municipio = length(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_salario_entrada_municipio = mean(Salário.Mensal[Admitidos.Desligados == 1], na.rm = TRUE),
                      media_salario_saida_municipio = mean(Salário.Mensal[Admitidos.Desligados == 2], na.rm = TRUE),
                      media_permanencia_municipio = mean(Tempo.Emprego, na.rm = TRUE)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada na referência e UF
      base_dados <- base_dados %>% 
        dplyr::group_by(Competência.Declarada, UF) %>% 
        dplyr::mutate(media_salario_uf_ref = mean(Salário.Mensal, na.rm = TRUE),
                      sd_salario_uf_ref = sd(Salário.Mensal, na.rm = TRUE),
                      n_amostras_uf_ref = length(Salário.Mensal),
                      n_entrada_uf_ref = length(Salário.Mensal[Admitidos.Desligados == 1]),
                      n_saida_uf_ref = length(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_salario_entrada_uf_ref = mean(Salário.Mensal[Admitidos.Desligados == 1], na.rm = TRUE),
                      media_salario_saida_uf_ref = mean(Salário.Mensal[Admitidos.Desligados == 2], na.rm = TRUE),
                      media_permanencia_uf_ref = mean(Tempo.Emprego, na.rm = TRUE)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada na UF
      base_dados <- base_dados %>% 
        dplyr::group_by(UF) %>% 
        dplyr::mutate(media_salario_uf = mean(Salário.Mensal, na.rm = TRUE),
                      sd_salario_uf = sd(Salário.Mensal, na.rm = TRUE),
                      n_amostras_uf = length(Salário.Mensal),
                      n_entrada_uf = length(Salário.Mensal[Admitidos.Desligados == 1]),
                      n_saida_uf = length(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_salario_entrada_uf = mean(Salário.Mensal[Admitidos.Desligados == 1], na.rm = TRUE),
                      media_salario_saida_uf = mean(Salário.Mensal[Admitidos.Desligados == 2], na.rm = TRUE),
                      media_permanencia_uf = mean(Tempo.Emprego, na.rm = TRUE)) %>% 
        dplyr::ungroup()
      
      # Salva os dados filtrados
      saveRDS(base_dados, file = paste0("caged_filtrado_", as.character(info[1, 1])))
      saveRDS(base_dados, file = paste0("caged_filtrado2_", as.character(info[1, 1])))
      
      dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
      dados_geral$Caged$Salário.Mensal <- c(min(base_dados$Salário.Mensal),max(base_dados$Salário.Mensal))
      dados_geral$Caged$Salário.MensalMinMax <- c(min(base_dados$Salário.Mensal),max(base_dados$Salário.Mensal))
      dados_geral$Caged$Idade <- c(min(base_dados$Idade),max(base_dados$Idade))
      dados_geral$Caged$IdadeMinMax <- c(min(base_dados$Idade),max(base_dados$Idade))
      dados_geral$Caged$Qtd.Hora.Contrat <- c(min(base_dados$Qtd.Hora.Contrat),max(base_dados$Qtd.Hora.Contrat))
      dados_geral$Caged$Qtd.Hora.ContratMinMax <- c(min(base_dados$Qtd.Hora.Contrat),max(base_dados$Qtd.Hora.Contrat))
      
      dados_geral$Caged$SalarioMed <- mean(base_dados$Salário.Mensal, na.rm = TRUE)
      dados_geral$Caged$SalarioMin <- min(base_dados$Salário.Mensal, na.rm = TRUE)
      dados_geral$Caged$SalarioMax <- max(base_dados$Salário.Mensal, na.rm = TRUE)
      dados_geral$Caged$SalarioSd <- sd(base_dados$Salário.Mensal, na.rm = TRUE)
      dados_geral$Caged$Salario1q <- as.numeric(quantile(base_dados$Salário.Mensal, probs = 0.25, type = 2, na.rm = TRUE))
      dados_geral$Caged$Salario2q <- as.numeric(quantile(base_dados$Salário.Mensal, probs = 0.50, type = 2, na.rm = TRUE))
      dados_geral$Caged$Salario3q <- as.numeric(quantile(base_dados$Salário.Mensal, probs = 0.75, type = 2, na.rm = TRUE))
      dados_geral$Caged$Salario4q <- as.numeric(quantile(base_dados$Salário.Mensal, probs = 1.00, type = 2, na.rm = TRUE))
      dados_geral$Caged$AmostrasTotal <- nrow(base_dados)
      dados_geral$Caged$AmostrasEntrada <- length(base_dados$Salário.Mensal[base_dados$Admitidos.Desligados == 1])
      dados_geral$Caged$AmostrasSaida <- length(base_dados$Salário.Mensal[base_dados$Admitidos.Desligados == 2])
      dados_geral$Caged$AmostrasHomens <- length(base_dados$Salário.Mensal[base_dados$Sexo == 1])
      dados_geral$Caged$AmostrasMulheres <- length(base_dados$Salário.Mensal[base_dados$Sexo == 2])
      dados_geral$Caged$AmostrasHomensFertil <- length(base_dados$Salário.Mensal[base_dados$Sexo == 1 & base_dados$Idade > 15 & base_dados$Idade < 50])
      dados_geral$Caged$AmostrasMulheresFertil <- length(base_dados$Salário.Mensal[base_dados$Sexo == 2 & base_dados$Idade > 15 & base_dados$Idade < 50])
      dados_geral$Caged$PermanenciaMed <- mean(base_dados$Tempo.Emprego[base_dados$Admitidos.Desligados == 2], na.rm = TRUE)
      dados_geral$Caged$PermanenciaMin <- min(base_dados$Tempo.Emprego[base_dados$Admitidos.Desligados == 2], na.rm = TRUE)
      dados_geral$Caged$PermanenciaMax <- max(base_dados$Tempo.Emprego[base_dados$Admitidos.Desligados == 2], na.rm = TRUE)
      
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      
      base_dados$media_salario_entrada_uf_ref <- ifelse(is.nan(base_dados$media_salario_entrada_uf_ref), 0, base_dados$media_salario_entrada_uf_ref)
      base_dados$media_salario_saida_uf_ref <- ifelse(is.nan(base_dados$media_salario_saida_uf_ref), 0, base_dados$media_salario_saida_uf_ref)
      base_dados$media_salario_entrada_municipio_ref <- ifelse(is.nan(base_dados$media_salario_entrada_municipio_ref), 0, base_dados$media_salario_entrada_municipio_ref)
      base_dados$media_salario_saida_municipio_ref <- ifelse(is.nan(base_dados$media_salario_saida_municipio_ref), 0, base_dados$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"
      base_dados <- dplyr::right_join(UFS, base_dados, 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))
      base_dados <- dplyr::right_join(MUNI, base_dados, by = "Município")
      
      base_dados_UF_ref <-  dplyr::select(base_dados, `Competência.Declarada`, `sigla_uf`, `UF`, media_salario_uf_ref:media_permanencia_uf_ref) %>% unique()
      base_dados_UF_ref <- base_dados_UF_ref[order(base_dados_UF_ref$Competência.Declarada, base_dados_UF_ref$UF), ]
      base_dados_UF_ref <-  dplyr::select(base_dados_UF_ref, `Competência.Declarada`, `sigla_uf`, media_salario_uf_ref:media_permanencia_uf_ref) %>% unique()
      
      base_dados_UF <-  dplyr::select(base_dados, `sigla_uf`, `UF`, media_salario_uf:media_permanencia_uf) %>% unique()
      base_dados_UF <- base_dados_UF[order(base_dados_UF$UF), ]
      base_dados_UF <-  dplyr::select(base_dados_UF, `sigla_uf`, media_salario_uf:media_permanencia_uf) %>% unique()
      
      base_dados_municipio_ref <-  dplyr::select(base_dados, `Competência.Declarada`, `sigla_uf`, `Município`, `nome_municipio`, media_salario_municipio_ref:media_permanencia_municipio_ref) %>% unique()
      base_dados_municipio_ref <- base_dados_municipio_ref[order(base_dados_municipio_ref$Competência.Declarada, base_dados_municipio_ref$Município), ]
      
      base_dados_municipio <-  dplyr::select(base_dados, `sigla_uf`, `Município`, `nome_municipio`, media_salario_municipio:media_permanencia_municipio) %>% unique()
      base_dados_municipio <- base_dados_municipio[order(base_dados_municipio$Município), ]
      
      # Salva a base para gerar Relatorio por UF e referência
      saveRDS(base_dados_UF_ref, file = paste0("caged_filtrado_UF_ref_", as.character(info[1, 1])))
      
      # Salva a base para gerar Relatorio por UF
      saveRDS(base_dados_UF, file = paste0("caged_filtrado_UF_", as.character(info[1, 1])))
      
      # Salva a base para gerar Relatorio por Municipio e referência
      saveRDS(base_dados_municipio_ref, file = paste0("caged_filtrado_municipio_ref_", as.character(info[1, 1])))
      
      # Salva a base para gerar Relatorio por Municipio
      saveRDS(base_dados_municipio, file = paste0("caged_filtrado_municipio_", as.character(info[1, 1])))
      
      
    }else{
      
      # Verifica as CBOs adicionadas na tabela para fazer parte da seleção no banco de dados
      cbos_selecionadas_filtro <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Rais$CBO.2002.Ocupação
      cbos_selecionadas_filtro <- subset(cbos_selecionadas_filtro, `Código` != "")
      
      if(nrow(cbos_selecionadas_filtro) == 0){
        
        texto_cbo <- ""
        
      }else{
        
        texto_cbo <- " AND ("
        
        for(xx in 1:nrow(cbos_selecionadas_filtro)) {
          
          texto_cbo <- paste0(texto_cbo, "SUBSTR(`CBO.Ocupação.2002`, 1, ", nchar(as.character(cbos_selecionadas_filtro$Código[xx])), ") = '", cbos_selecionadas_filtro$Código[xx], "' OR ")
          
        }
        
        texto_cbo <- substr(texto_cbo, 1, nchar(texto_cbo)-4)
        texto_cbo <- paste0(texto_cbo, ")")
        
      }
      
      # Verifica as CNAEs adicionadas na tabela para fazer parte da seleção no banco de dados
      cnaes_selecionadas_filtro <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Rais$CNAE.2.0.Classe
      cnaes_selecionadas_filtro <- subset(cnaes_selecionadas_filtro, `Código` != "")
      
      if(nrow(cnaes_selecionadas_filtro) == 0){
        
        texto_cnae <- ""
        
      }else{
        
        texto_cnae <- " AND ("
        
        for(xx in 1:nrow(cnaes_selecionadas_filtro)) {
          
          texto_cnae <- paste0(texto_cnae, "SUBSTR(`CNAE.2.0.Classe`, 1, ", nchar(as.character(cnaes_selecionadas_filtro$Código[xx])), ") = '", cnaes_selecionadas_filtro$Código[xx], "' OR ")
          
        }
        
        texto_cnae <- substr(texto_cnae, 1, nchar(texto_cnae)-4)
        texto_cnae <- paste0(texto_cnae, ")")
        
      }
      
      # Verifica os Municipios adicionadas na tabela para fazer parte da seleção no banco de dados
      municipio <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Rais$Município_1
      municipio <- subset(municipio, `Código` != "")
      
      if(nrow(municipio) == 0){
        
        texto_municipio <- ""
        
      }else{
        
        texto_municipio <- " AND ("
        
        for(xx in 1:nrow(municipio)) {
          
          if(nchar(as.character(municipio$Código[xx])) == 7){
            
            texto_municipio <- paste0(texto_municipio, "SUBSTR(`Município`, 1, 6) = '", substr(municipio$Código[xx], 1, 6), "' OR ")
            
          }else{
            
            texto_municipio <- paste0(texto_municipio, "SUBSTR(`Município`, 1, ", nchar(as.character(municipio$Código[xx])), ") = '", municipio$Código[xx], "' OR ")
            
          }
          
        }
        
        texto_municipio <- substr(texto_municipio, 1, nchar(texto_municipio)-4)
        texto_municipio <- paste0(texto_municipio, ")")
        
      }
      
      # rais <- RSQLite::dbConnect(SQLite(), dbname = paste0("c:\\BD", "\\", "RAIS.sqlite"))
      
      ListaReferencias <- data.frame(tabela = RSQLite::dbListTables(rais))
      ListaReferencias$referencia <- as.numeric(substr(ListaReferencias$tabela, 6, 9))
      ListaReferencias <- ListaReferencias[order(ListaReferencias$referencia),]
      ListaReferencias <- subset(ListaReferencias, ListaReferencias$referencia >= input$periodo_tempo[1] & ListaReferencias$referencia <= input$periodo_tempo[2])
      
      TextoBuscaRais <- ""
      
      for (xxx in 1:nrow(ListaReferencias)) {
        
        TextoBuscaRais <- paste0(TextoBuscaRais, "SELECT * FROM rais_", as.character(ListaReferencias$referencia[xxx]), " WHERE 1 = 1", texto_cbo, texto_cnae, texto_municipio, " UNION ALL ")
        
      }
      
      TextoBuscaRais <- substr(TextoBuscaRais, 1, nchar(TextoBuscaRais) - 11)
      print(TextoBuscaRais)
      # Realiza a seleção no banco de dados em função do período selecionado, CBOs e CNAEs
      # base_dados <- RSQLite::dbGetQuery(rais, paste0("SELECT * FROM rais WHERE `ano` BETWEEN ", input$periodo_tempo[1], " AND ", input$periodo_tempo[2], texto_cbo, texto_cnae, texto_municipio)) %>% as.data.frame()
      base_dados <- RSQLite::dbGetQuery(rais, paste0(TextoBuscaRais)) %>% as.data.frame()
      
      base_dados$UF <- as.numeric(substr(base_dados$Município, 1, 2))
      
      # Cria colunas calculadas com os dados gerais
      base_dados <- base_dados %>% 
        dplyr::mutate(media_salario = mean(Vl.Remun.Média.Nom),
                      sd_salario = sd(Vl.Remun.Média.Nom),
                      n_amostras = length(Vl.Remun.Média.Nom),
                      n_entrada = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      n_saida = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_salario_entrada = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      media_salario_saida = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_permanencia = mean(Tempo.Emprego))
      
      # Cria colunas calculadas baseada na referência e Município
      base_dados <- base_dados %>% 
        dplyr::group_by(ano, Município) %>% 
        dplyr::mutate(media_salario_municipio_ref = mean(Vl.Remun.Média.Nom),
                      sd_salario_municipio_ref = sd(Vl.Remun.Média.Nom),
                      n_amostras_municipio_ref = length(Vl.Remun.Média.Nom),
                      n_entrada_municipio_ref = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      n_saida_municipio_ref = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_salario_entrada_municipio_ref = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      media_salario_saida_municipio_ref = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_permanencia_municipio_ref = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada no Município
      base_dados <- base_dados %>% 
        dplyr::group_by(Município) %>% 
        dplyr::mutate(media_salario_municipio = mean(Vl.Remun.Média.Nom),
                      sd_salario_municipio = sd(Vl.Remun.Média.Nom),
                      n_amostras_municipio = length(Vl.Remun.Média.Nom),
                      n_entrada_municipio = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      n_saida_municipio = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_salario_entrada_municipio = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      media_salario_saida_municipio = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_permanencia_municipio = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada na referência e UF
      base_dados <- base_dados %>% 
        dplyr::group_by(ano, UF) %>% 
        dplyr::mutate(media_salario_uf_ref = mean(Vl.Remun.Média.Nom),
                      sd_salario_uf_ref = sd(Vl.Remun.Média.Nom),
                      n_amostras_uf_ref = length(Vl.Remun.Média.Nom),
                      n_entrada_uf_ref = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      n_saida_uf_ref = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_salario_entrada_uf_ref = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      media_salario_saida_uf_ref = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_permanencia_uf_ref = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada na UF
      base_dados <- base_dados %>% 
        dplyr::group_by(UF) %>% 
        dplyr::mutate(media_salario_uf = mean(Vl.Remun.Média.Nom),
                      sd_salario_uf = sd(Vl.Remun.Média.Nom),
                      n_amostras_uf = length(Vl.Remun.Média.Nom),
                      n_entrada_uf = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      n_saida_uf = length(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_salario_entrada_uf = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 1]),
                      media_salario_saida_uf = mean(Vl.Remun.Média.Nom[Vínculo.Ativo.31.12 == 0]),
                      media_permanencia_uf = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      # Salva os dados filtrados
      saveRDS(base_dados, file = paste0("rais_filtrado_", as.character(info[1, 1])))
      saveRDS(base_dados, file = paste0("rais_filtrado2_", as.character(info[1, 1])))
      
      dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
      dados_geral$Rais$VL.Remun.Méd.Nom <- c(min(base_dados$Vl.Remun.Média.Nom),max(base_dados$Vl.Remun.Média.Nom))
      dados_geral$Rais$VL.Remun.Méd.NomMinMax <- c(min(base_dados$Vl.Remun.Média.Nom),max(base_dados$Vl.Remun.Média.Nom))
      dados_geral$Rais$Idade <- c(min(base_dados$Idade),max(base_dados$Idade))
      dados_geral$Rais$IdadeMinMax <- c(min(base_dados$Idade),max(base_dados$Idade))
      dados_geral$Rais$Qtd.Hora.Contr <- c(min(base_dados$Qtd.Hora.Contr),max(base_dados$Qtd.Hora.Contr))
      dados_geral$Rais$Qtd.Hora.ContrMinMax <- c(min(base_dados$Qtd.Hora.Contr),max(base_dados$Qtd.Hora.Contr))
      
      dados_geral$Rais$RemuneracaoMed <- mean(base_dados$Vl.Remun.Média.Nom)
      dados_geral$Rais$RemuneracaoMin <- min(base_dados$Vl.Remun.Média.Nom)
      dados_geral$Rais$RemuneracaoMax <- max(base_dados$Vl.Remun.Média.Nom)
      dados_geral$Rais$RemuneracaoSd <- sd(base_dados$Vl.Remun.Média.Nom)
      dados_geral$Rais$Remuneracao1q <- as.numeric(quantile(base_dados$Vl.Remun.Média.Nom, probs = 0.25, type = 2))
      dados_geral$Rais$Remuneracao2q <- as.numeric(quantile(base_dados$Vl.Remun.Média.Nom, probs = 0.50, type = 2))
      dados_geral$Rais$Remuneracao3q <- as.numeric(quantile(base_dados$Vl.Remun.Média.Nom, probs = 0.75, type = 2))
      dados_geral$Rais$Remuneracao4q <- as.numeric(quantile(base_dados$Vl.Remun.Média.Nom, probs = 1.00, type = 2))
      dados_geral$Rais$RegistrosTotal <- nrow(base_dados)
      dados_geral$Rais$RegistrosEntrada <- length(base_dados$Vl.Remun.Média.Nom[base_dados$Vínculo.Ativo.31.12 == 1])
      dados_geral$Rais$RegistrosSaida <- length(base_dados$Vl.Remun.Média.Nom[base_dados$Vínculo.Ativo.31.12 == 0])
      dados_geral$Rais$RegistrosHomens <- length(base_dados$Vl.Remun.Média.Nom[base_dados$Sexo.Trabalhador == 1])
      dados_geral$Rais$RegistrosMulheres <- length(base_dados$Vl.Remun.Média.Nom[base_dados$Sexo.Trabalhador == 2])
      dados_geral$Rais$RegistrosHomensFertil <- length(base_dados$Vl.Remun.Média.Nom[base_dados$Sexo.Trabalhador == 1 & base_dados$Idade > 15 & base_dados$Idade < 50])
      dados_geral$Rais$RegistrosMulheresFertil <- length(base_dados$Vl.Remun.Média.Nom[base_dados$Sexo.Trabalhador == 2 & base_dados$Idade > 15 & base_dados$Idade < 50])
      dados_geral$Rais$PermanenciaMed <- mean(base_dados$Tempo.Emprego[base_dados$Vínculo.Ativo.31.12 == 1])
      dados_geral$Rais$PermanenciaMin <- min(base_dados$Tempo.Emprego[base_dados$Vínculo.Ativo.31.12 == 1])
      dados_geral$Rais$PermanenciaMax <- max(base_dados$Tempo.Emprego[base_dados$Vínculo.Ativo.31.12 == 1])
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      
      base_dados$media_salario_entrada_uf_ref <- ifelse(is.nan(base_dados$media_salario_entrada_uf_ref), 0, base_dados$media_salario_entrada_uf_ref)
      base_dados$media_salario_saida_uf_ref <- ifelse(is.nan(base_dados$media_salario_saida_uf_ref), 0, base_dados$media_salario_saida_uf_ref)
      base_dados$media_salario_entrada_municipio_ref <- ifelse(is.nan(base_dados$media_salario_entrada_municipio_ref), 0, base_dados$media_salario_entrada_municipio_ref)
      base_dados$media_salario_saida_municipio_ref <- ifelse(is.nan(base_dados$media_salario_saida_municipio_ref), 0, base_dados$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"
      base_dados <- dplyr::right_join(UFS, base_dados, 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))
      base_dados <- dplyr::right_join(MUNI, base_dados, by = "Município")
      
      base_dados_UF_ref <-  dplyr::select(base_dados, `ano`, `sigla_uf`, `UF`, media_salario_uf_ref:media_permanencia_uf_ref) %>% unique()
      base_dados_UF_ref <- base_dados_UF_ref[order(base_dados_UF_ref$ano, base_dados_UF_ref$UF), ]
      base_dados_UF_ref <-  dplyr::select(base_dados_UF_ref, `ano`, `sigla_uf`, media_salario_uf_ref:media_permanencia_uf_ref) %>% unique()
      
      base_dados_UF <-  dplyr::select(base_dados, `sigla_uf`, `UF`, media_salario_uf:media_permanencia_uf) %>% unique()
      base_dados_UF <- base_dados_UF[order(base_dados_UF$UF), ]
      base_dados_UF <-  dplyr::select(base_dados_UF, `sigla_uf`, media_salario_uf:media_permanencia_uf) %>% unique()
      
      base_dados_municipio_ref <-  dplyr::select(base_dados, `ano`, `sigla_uf`, `Município`, `nome_municipio`, media_salario_municipio_ref:media_permanencia_municipio_ref) %>% unique()
      base_dados_municipio_ref <- base_dados_municipio_ref[order(base_dados_municipio_ref$ano, base_dados_municipio_ref$Município), ]
      
      base_dados_municipio <-  dplyr::select(base_dados, `sigla_uf`, `Município`, `nome_municipio`, media_salario_municipio:media_permanencia_municipio) %>% unique()
      base_dados_municipio <- base_dados_municipio[order(base_dados_municipio$Município), ]
      
      # Salva a base para gerar Relatorio por UF e referência
      saveRDS(base_dados_UF_ref, file = paste0("rais_filtrado_UF_ref_", as.character(info[1, 1])))
      
      # Salva a base para gerar Relatorio por UF
      saveRDS(base_dados_UF, file = paste0("rais_filtrado_UF_", as.character(info[1, 1])))
      
      # Salva a base para gerar Relatorio por Municipio e referência
      saveRDS(base_dados_municipio_ref, file = paste0("rais_filtrado_municipio_ref_", as.character(info[1, 1])))
      
      # Salva a base para gerar Relatorio por Municipio
      saveRDS(base_dados_municipio, file = paste0("rais_filtrado_municipio_", as.character(info[1, 1])))
      
    }
    
    fim_calculo <- Sys.time()
    
    # removeModal()
    
    shinybusy::remove_modal_spinner()
    
    sendSweetAlert(session, title = HTML(paste0("Dados gerados com sucesso!<br>", inicio_calculo, "<br>", fim_calculo)))
    
    limpar_dados()
    
  })
  
  
  
  #Selecionar Região/UF 
  
  
  
  

}

## To be copied in the UI
# mod_configuracoes_ui("configuracoes_ui_1")

## To be copied in the server
# callModule(mod_configuracoes_server, "configuracoes_ui_1")
leandro-vento/projeto documentation built on April 10, 2021, 6:43 p.m.