R/mod_resultados.R

Defines functions mod_resultados_server mod_resultados_ui

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

# Configurações checkbox CAGED

# lista_config_geral_admitidos <- c("Admitido" = 1,
#                                   "Desligado" = 2)

lista_config_geral_admitidos <- c(Dados:::Layout$LayoutCaged$Admitidos.Desligados)

lista_config_geral_raca <- c(Dados:::Layout$LayoutCaged$Raça.Cor)

lista_config_geral_sexo <- c(Dados:::Layout$LayoutCaged$Sexo)

lista_config_geral_escolaridade <- c(Dados:::Layout$LayoutCaged$Grau.Instrução)

lista_config_geral_tipo_movimentacao <- c(Dados:::Layout$LayoutCaged$Tipo.Mov.Desagregado)

lista_config_geral_porte_empresa <- c(Dados:::Layout$LayoutCaged$Faixa.Empr.Início.Jan)

lista_config_geral_indicacao_contrato_parcial <- c("Sim" = 1,
                                                   "Não" = 0)

lista_config_geral_indicacao_contrato_intermitente <- c("Sim" = 1,
                                                        "Não" = 0)

# Configurações checkbox RAIS

lista_vinculo_ativo_rais <-  c(Dados:::Layout$LayoutRais$Vínculo.Ativo.31.12)

lista_motivo_desligamento_rais <- c(Dados:::Layout$LayoutRais$Motivo.Desligamento)

lista_tipo_admissao_rais <- c(Dados:::Layout$LayoutRais$Tipo.Admissão)

lista_tipo_vinculo_rais <- c(Dados:::Layout$LayoutRais$Tipo.Vínculo)

lista_escolaridade_rais <- c(Dados:::Layout$LayoutRais$Escolaridade)

lista_raca_rais <- c(Dados:::Layout$LayoutRais$Raça)

lista_sexo_rais <- c(Dados:::Layout$LayoutRais$Sexo)

lista_tamanho_estabelecimento_rais <- c(Dados:::Layout$LayoutRais$Tamanho.Estabelecimento)

lista_ind_trab_parcial_rais <- c("Sim" = 1,
                                 "Não" = 0)

lista_ind_trab_intermitente_rais <- c("Sim" = 1,
                                      "Não" = 0)
 
mod_resultados_ui <- function(id){
  ns <- NS(id)
  
  tabItem(tabName = "resultados",
          
          fluidRow(
            
            column(12,
                   
                   HTML(paste0("
                        <table>
                          <tr>
                            <td>",
                            # actionBttn(ns("atualizar_dados_caged"), color = "primary", style = "bordered", icon = icon("sync"), size = "sm"),
                            "</td>
                            <td>",
                               
                               "</td>
                            
                            <td></td>
                          </tr>
                        </table>
                        
                        "))
                   
                   
                   
            )
            
          ),
          
          # fluidRow(h3("")),
          
          
          
          fluidRow(
            
            column(12, align="left",
                   
                   boxPlus(
                     title = NULL, 
                     closable = FALSE, 
                     width = NULL,
                     status = NULL,
                     solidHeader = TRUE, 
                     collapsible = FALSE,
                     enable_dropdown = FALSE,
                     
                     fluidRow(column(12,
                                     
                                     boxPlus(
                                       title = "Resumo", 
                                       closable = FALSE, 
                                       width = NULL,
                                       status = NULL,
                                       solidHeader = TRUE, 
                                       collapsible = TRUE,
                                       enable_dropdown = FALSE,
                                       
                                       column(12, align = "left",
                                              
                                              HTML(paste0("
                        
                        <table style='auto'>
                          <tr>
                            <td>
                            
                            <table style='auto'>
                              <tr>
                                <td colspan='7'>", htmlOutput(ns("salario_remuneracao")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:14px;'><b>Méd:</b></font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_medio")), "</td>
                                <td width='5px'></td>
                                <td><font style='font-size:12px;'>1Q:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_1q")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Mín:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_minimo")), "</td>
                                <td width='5px'></td>
                                <td><font style='font-size:12px;'>2Q:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_2q")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Máx:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_maximo")), "</td>
                                <td width='5px'></td>
                                <td><font style='font-size:12px;'>3Q:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_3q")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>sd:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_sd")), "</td>
                                <td width='5px'></td>
                                <td><font style='font-size:12px;'>4Q:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("valor_salario_4q")), "</td>
                              </tr>
                            </table>
                            
                            </td>
                            
                            <td width='10px'></td>
                            <td width='10px'>", plotly::plotlyOutput(ns("salario_boxplot"), width='10', height='10'), "</td>
                            <td width='10px'></td>
                            
                            <td>
                            
                            <table style='auto'>
                              <tr>
                                <td colspan='3'>", htmlOutput(ns("amostras_registros")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:14px;'><b>Total:</b></font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("amostras_total")), "</td>
                              </tr>
                              <tr>
                                <td>", htmlOutput(ns("entrada_ativo")), "</td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("amostras_entrada")), "</td>
                              </tr>
                              <tr>
                                <td>", htmlOutput(ns("saida_inativo")), "</td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("amostras_saida")), "</td>
                              </tr>
                              <tr>
                                <td>&nbsp</td>
                                <td width='5px'>&nbsp</td>
                                <td>&nbsp</td>
                              </tr>
                            </table>
                            
                            </td>
                            
                            <td width='10px'></td>
                            <td width='100px'>", plotly::plotlyOutput(ns("donut_amostras"), width='100', height='100'), "</td>
                            <td width='10px'></td>
                            
                            <td>
                            
                            <table style='auto'>
                              <tr>
                                <td colspan='3'><h4><b>&nbsp</b></h4></td>
                              </tr>
                              <tr>
                                <td><b>&nbsp</b></td>
                                <td width='5px'>&nbsp</td>
                                <td><b>&nbsp</b></td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Homens:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("homens")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Mulheres:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("mulheres")), "</td>
                              </tr>
                              <tr>
                                <td>&nbsp</td>
                                <td width='5px'>&nbsp</td>
                                <td>&nbsp</td>
                              </tr>
                            </table>
                            
                            </td>
                            
                            <td width='10px'></td>
                            <td width='100px'>", plotly::plotlyOutput(ns("donut_homem_mulher"), width='100', height='100'), "</td>
                            <td width='10px'></td>
                            
                            <td>
                            
                            <table style='auto'>
                              <tr>
                                <td colspan='3'><h4><b>&nbsp</b></h4></td>
                              </tr>
                              <tr>
                                <td colspan='3'><font style='font-size:14px;'><b>Idade Fértil</b></font></td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Homens:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("homens_fertil")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Mulheres:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("mulheres_fertil")), "</td>
                              </tr>
                              <tr>
                                <td>&nbsp</td>
                                <td width='5px'>&nbsp</td>
                                <td>&nbsp</td>
                              </tr>
                            </table>
                            
                            </td>
                            
                            <td width='10px'></td>
                            <td width='100px'><center><b>Homem</b></center>", plotly::plotlyOutput(ns("donut_homem_fertil"), width='100', height='100'), "</td>
                            <td width='100px'><center><b>Mulher</b></center>", plotly::plotlyOutput(ns("donut_mulher_fertil"), width='100', height='100'), "</td>
                            <td width='10px'></td>
                            
                            <td>
                            
                            <table style='auto'>
                              <tr>
                                <td colspan='7'><h4><b>Permanência</b></h4></td>
                              </tr>
                              <tr>
                                <td><font style='font-size:14px;'><b>Méd:</b></font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("permanencia_media")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Mín:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("permanencia_minima")), "</td>
                              </tr>
                              <tr>
                                <td><font style='font-size:12px;'>Máx:</font></td>
                                <td width='5px'></td>
                                <td>", htmlOutput(ns("permanencia_maxima")), "</td>
                              </tr>
                              <tr>
                                <td>&nbsp</td>
                                <td width='5px'>&nbsp</td>
                                <td>&nbsp</td>
                              </tr>
                            </table>
                            
                            </td>
                            
                            <td></td>
                            <td></td>
                          </tr>
                        </table>"))
                                              
                                              
                                       )
                                       
                                     )
                                     
                                     
                     )),
                     
                     fluidRow(
                       
                       column(12,
                                     
                                     actionBttn(ns('filtros_1'), 'Filtros', color = 'primary', icon = icon('filter'), style = 'stretch', size = 'sm'),
                                     actionBttn(ns('filtros_2'), 'Filtros', color = 'primary', icon = icon('filter'), style = 'stretch', size = 'sm')
                                     
                                     )
                              ),
                     
                     div(id = ns("filtros"),
                         useShinyjs(),
                         fluidRow(
                           column(12
                                  ,boxPlus(
                                    title = "Parâmetros CAGED",
                                    align = "center",
                                    closable = FALSE, 
                                    width = NULL,
                                    status = NULL,
                                    solidHeader = TRUE, 
                                    collapsible = FALSE,
                                    enable_dropdown = FALSE,
                                    
                                    
                                    fluidRow(column(12,
                                                    sliderInput(
                                                      inputId = ns("salario"),
                                                      label = "Salários",
                                                      min = 0,
                                                      max = 100,
                                                      value = c(2,10),
                                                      step = 0.01
                                                    )
                                    )),
                                    
                                    fluidRow(
                                      column(1,
                                             textInput(ns("salario_inicio"), label = NULL)
                                      ),
                                      column(10),
                                      column(1,
                                             textInput(ns("salario_fim"), label = NULL)
                                      )
                                    ),
                                    
                                    
                                    fluidRow(column(12,
                                                    sliderInput(
                                                      inputId = ns("idade"),
                                                      label = "Idade",
                                                      min = 0,
                                                      max = 100,
                                                      value = c(2,10)
                                                    )
                                    )),
                                    
                                    fluidRow(
                                      column(1,
                                             textInput(ns("idade_inicio"), label = NULL)
                                      ),
                                      column(10),
                                      column(1,
                                             textInput(ns("idade_fim"), label = NULL)
                                      )
                                    ),
                                    
                                    fluidRow(column(12,
                                                    sliderInput(
                                                      inputId = ns("horas"),
                                                      label = "Horas", 
                                                      min = 0,
                                                      max = 100,
                                                      value = c(2,10)
                                                    )
                                    )),
                                    
                                    fluidRow(
                                      column(1,
                                             textInput(ns("horas_inicio"), label = NULL)
                                      ),
                                      column(10),
                                      column(1,
                                             textInput(ns("horas_fim"), label = NULL)
                                      )
                                    ),
                                    
                                    fluidRow(
                                      column(width = 2,
                                             box(width = 12, align = "left",
                                                 # status = "info", 
                                                 solidHeader = TRUE,
                                                 collapsible = TRUE,
                                                 collapsed = FALSE,
                                                 title = "Admitidos",
                                                 actionLink(ns("select_all_config_geral_admitidos"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_admitidos"), 
                                                                    label = "", 
                                                                    choices = lista_config_geral_admitidos,
                                                                    selected = lista_config_geral_admitidos)
                                             ),
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = TRUE,
                                                 collapsed = FALSE,
                                                 title = "Raça",
                                                 actionLink(ns("select_all_config_geral_raca"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_raca"), 
                                                                    label = "", 
                                                                    choices = lista_config_geral_raca,
                                                                    selected = lista_config_geral_raca)
                                                 
                                             ),
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = TRUE,
                                                 collapsed = FALSE,
                                                 title = "Gênero",
                                                 actionLink(ns("select_all_config_geral_sexo"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_sexo"), 
                                                                    label = "", 
                                                                    choices = lista_config_geral_sexo,
                                                                    selected = lista_config_geral_sexo)
                                             )
                                      ),
                                      column(width = 4,
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = TRUE,
                                                 collapsed = FALSE,
                                                 title = "Escolaridade",
                                                 actionLink(ns("select_all_config_geral_escolaridade"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_escolaridade"), 
                                                                    label = "", 
                                                                    choices = lista_config_geral_escolaridade,
                                                                    selected = lista_config_geral_escolaridade)
                                             ),
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = TRUE,
                                                 collapsed = FALSE,
                                                 title = "Tipo de Movimentação",
                                                 actionLink(ns("select_all_config_geral_tipo_movimentacao"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_tipo_movimentacao"), 
                                                                    label = "", 
                                                                    choices = lista_config_geral_tipo_movimentacao,
                                                                    selected = lista_config_geral_tipo_movimentacao)
                                             )),
                                      column(width = 2,
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = TRUE,
                                                 collapsed = FALSE,
                                                 title = "Porte da Empresa",
                                                 actionLink(ns("select_all_config_geral_porte_empresa"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_porte_empresa"), 
                                                                    label = "N Empregados", 
                                                                    choices = lista_config_geral_porte_empresa,
                                                                    selected = lista_config_geral_porte_empresa)
                                             ),
                                             # box(width = 12, align = "left",
                                             #     # status = "info",
                                             #     solidHeader = TRUE,
                                             #     collapsible = TRUE,
                                             #     collapsed = FALSE,
                                             #     title = "Contrato Parcial",
                                             #     actionLink(ns("select_all_config_geral_indicacao_contrato_parcial"), "Todas"),
                                             #     checkboxGroupInput(ns("config_geral_indicacao_contrato_parcial"), 
                                             #                        label = "", 
                                             #                        choices = lista_config_geral_indicacao_contrato_parcial,
                                             #                        selected = "")
                                             # ),
                                             # box(width = 12, align = "left",
                                             #     # status = "info",
                                             #     solidHeader = TRUE,
                                             #     collapsible = TRUE,
                                             #     collapsed = FALSE,
                                             #     title = "Contrato Intermitente",
                                             #     actionLink(ns("select_all_config_geral_indicacao_contrato_intermitente"), "Todas"),
                                             #     checkboxGroupInput(ns("config_geral_indicacao_contrato_intermitente"), 
                                             #                        label = "", 
                                             #                        choices = lista_config_geral_indicacao_contrato_intermitente,
                                             #                        selected = "")
                                             # )
                                      ),
                                      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("gera_resultado"), "Gerar Resultado", color = "primary", icon = icon("calculator"), style = "stretch", size = "sm"))
                                    )
                                    
                                    
                                  )
                           )
                         )
                     ),
                     
                     div(id = ns("filtros_rais"),
                         useShinyjs(),
                         fluidRow(
                           column(12
                                  ,boxPlus(
                                    title = "Parâmetros RAIS",
                                    align = "center",
                                    closable = FALSE, 
                                    width = NULL,
                                    status = NULL,
                                    solidHeader = TRUE, 
                                    collapsible = FALSE,
                                    enable_dropdown = FALSE,
                                    
                                    
                                    fluidRow(column(12,
                                                    sliderInput(
                                                      inputId = ns("salario_rais"),
                                                      label = "Remuneração",
                                                      min = 0,
                                                      max = 100,
                                                      value = c(2,10),
                                                      step = 0.01
                                                    )
                                    )),
                                    
                                    fluidRow(
                                      column(1,
                                             textInput(ns("salario_rais_inicio"), label = NULL)
                                      ),
                                      column(10),
                                      column(1,
                                             textInput(ns("salario_rais_fim"), label = NULL)
                                      )
                                    ),
                                    
                                    
                                    fluidRow(column(12,
                                                    sliderInput(
                                                      inputId = ns("idade_rais"),
                                                      label = "Idade",
                                                      min = 0,
                                                      max = 100,
                                                      value = c(2,10)
                                                    )
                                    )),
                                    
                                    fluidRow(
                                      column(1,
                                             textInput(ns("idade_rais_inicio"), label = NULL)
                                      ),
                                      column(10),
                                      column(1,
                                             textInput(ns("idade_rais_fim"), label = NULL)
                                      )
                                    ),
                                    
                                    fluidRow(column(12,
                                                    sliderInput(
                                                      inputId = ns("horas_rais"),
                                                      label = "Horas", 
                                                      min = 0,
                                                      max = 100,
                                                      value = c(2,10)
                                                    )
                                    )),
                                    
                                    fluidRow(
                                      column(1,
                                             textInput(ns("horas_rais_inicio"), label = NULL)
                                      ),
                                      column(10),
                                      column(1,
                                             textInput(ns("horas_rais_fim"), label = NULL)
                                      )
                                    ),
                                    
                                    fluidRow(
                                      column(width = 2,
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = FALSE,
                                                 collapsed = FALSE,
                                                 title = "Vínculo Ativo",
                                                 actionLink(ns("select_all_vinculo_ativo_rais"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_vinculo_ativo_rais"),
                                                                    label = "",
                                                                    choices = lista_vinculo_ativo_rais,
                                                                    selected = lista_vinculo_ativo_rais)
                                             ),
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = FALSE,
                                                 collapsed = FALSE,
                                                 title = "Raça",
                                                 actionLink(ns("select_all_raca_rais"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_raca_rais"),
                                                                    label = "",
                                                                    choices = lista_raca_rais,
                                                                    selected = lista_raca_rais)
                                                 
                                             ),
                                             box(width = 12, align = "left",
                                                 # status = "info",
                                                 solidHeader = TRUE,
                                                 collapsible = FALSE,
                                                 collapsed = FALSE,
                                                 title = "Gênero",
                                                 actionLink(ns("select_all_genero_rais"), "Todas"),
                                                 checkboxGroupInput(ns("config_geral_genero_rais"),
                                                                    label = "",
                                                                    choices = lista_sexo_rais,
                                                                    selected = lista_sexo_rais)
                                             )
                                             , box(width = 12, align = "left",
                                                   # status = "info",
                                                   solidHeader = TRUE,
                                                   collapsible = FALSE,
                                                   collapsed = FALSE,
                                                   title = "Escolaridade",
                                                   actionLink(ns("select_all_escolaridade_rais"), "Todas"),
                                                   checkboxGroupInput(ns("config_geral_escolaridade_rais"),
                                                                      label = "",
                                                                      choices = lista_escolaridade_rais,
                                                                      selected = lista_escolaridade_rais)
                                             )
                                      ),
                                      column(width = 4
                                             , box(width = 12, align = "left",
                                                   # status = "info",
                                                   solidHeader = TRUE,
                                                   collapsible = FALSE,
                                                   collapsed = FALSE,
                                                   title = "Motivo do desligamento",
                                                   actionLink(ns("select_all_motivo_desligamento_rais"), "Todas"),
                                                   checkboxGroupInput(ns("config_geral_motivo_desligamento_rais"),
                                                                      label = "",
                                                                      choices = lista_motivo_desligamento_rais,
                                                                      selected = lista_motivo_desligamento_rais)
                                             )
                                             
                                      ),
                                      column(width = 2
                                             , box(width = 12, align = "left",
                                                   # status = "info",
                                                   solidHeader = TRUE,
                                                   collapsible = FALSE,
                                                   collapsed = FALSE,
                                                   title = "Tipo de Admissão",
                                                   actionLink(ns("select_all_tipo_admissao_rais"), "Todas"),
                                                   checkboxGroupInput(ns("config_geral_tipo_admissao_rais"),
                                                                      label = "",
                                                                      choices = lista_tipo_admissao_rais,
                                                                      selected = lista_tipo_admissao_rais)
                                             )
                                             , box(width = 12, align = "left",
                                                   # status = "info",
                                                   solidHeader = TRUE,
                                                   collapsible = FALSE,
                                                   collapsed = FALSE,
                                                   title = "Tipo de Vínculo",
                                                   actionLink(ns("select_all_tipo_vinculo_rais"), "Todas"),
                                                   checkboxGroupInput(ns("config_geral_tipo_vinculo_rais"),
                                                                      label = "",
                                                                      choices = lista_tipo_vinculo_rais,
                                                                      selected = lista_tipo_vinculo_rais)
                                             )
                                             , box(width = 12, align = "left",
                                                   # status = "info",
                                                   solidHeader = TRUE,
                                                   collapsible = FALSE,
                                                   collapsed = FALSE,
                                                   title = "Porte da Empresa",
                                                   actionLink(ns("select_all_porte_empresa_rais"), "Todas"),
                                                   checkboxGroupInput(ns("config_geral_porte_empresa_rais"),
                                                                      label = NULL,
                                                                      choices = lista_tamanho_estabelecimento_rais,
                                                                      selected = lista_tamanho_estabelecimento_rais)
                                             )
                                      ),
                                      column(width = 4,
                                             box(width = 12, align = "left",
                                                 solidHeader = TRUE,
                                                 collapsible = FALSE,
                                                 collapsed = FALSE,
                                                 title = "Região/UF/Municipio",
                                                 pickerInput(ns("regiao_rais"), "Região", choices = ""),
                                                 pickerInput(ns("uf_rais"), "UF", choices = ""),
                                                 pickerInput(ns("municipio_rais"), "Município", choices = "", multiple = FALSE, options = pickerOptions(
                                                   actionsBox = TRUE,
                                                   title = "Selecione um Municipio",
                                                   liveSearch = TRUE,
                                                   dropupAuto = FALSE
                                                 )),
                                                 actionBttn(ns("add_mun_rais"), "Adicionar", color = "primary", style = "bordered", icon = icon("plus"), size = "sm"),
                                                 box(width = 12,
                                                     solidHeader = TRUE,
                                                     collapsible = FALSE,
                                                     collapsed = FALSE,
                                                     title = "Municípios Selecionados",
                                                     actionBttn(ns("limpar_municipio_rais"), "Limpar", color = "primary", style = "bordered", icon = icon("eraser"), size = "sm"),
                                                     actionBttn(ns("excluir_municipio_rais"), "Excluir", color = "primary", style = "bordered", icon = icon("trash-alt"), size = "sm"),
                                                     DT::dataTableOutput(ns("municipios_selecionados_rais"))
                                                 )
                                             ))
                                    ),
                                    
                                    fluidRow(
                                      column(4),
                                      column(4, actionBttn(ns("gera_resultado_rais"), "Gerar Resultado", color = "primary", icon = icon("calculator"), style = "stretch", size = "sm"))
                                    )
                                    
                                    
                                  )
                           )
                         )
                     ),
                     
                     
                     # fluidRow(
                     #   
                     #   column(6,
                     #                 
                     #                 
                     #                 boxPlus(
                     #                   title = "Gráficos",
                     #                   closable = FALSE, 
                     #                   width = NULL,
                     #                   status = NULL,
                     #                   solidHeader = TRUE, 
                     #                   collapsible = TRUE,
                     #                   enable_dropdown = FALSE,
                     #                   
                     #                   plotly::plotlyOutput(ns("GrafDemoSexoIdadeSalario"))
                     #                   
                     #                 )),
                     #   
                     #   column(6,
                     #          
                     #          
                     #          boxPlus(
                     #            title = "Gráficos",
                     #            closable = FALSE, 
                     #            width = NULL,
                     #            status = NULL,
                     #            solidHeader = TRUE, 
                     #            collapsible = TRUE,
                     #            enable_dropdown = FALSE,
                     #            
                     #            plotly::plotlyOutput(ns("GrafDemoSexoIdadeSalario_"))
                     #            
                     #          ))
                     #   
                     #   ),
                     
                     
                     fluidRow(column(12,
                                     
                                     
                                     boxPlus(
                                       title = actionBttn(ns("atualizar_dados_caged"), label = "Resultados", color = "primary", style = "bordered", size = "md"),
                                       closable = FALSE, 
                                       width = NULL,
                                       status = NULL,
                                       solidHeader = TRUE, 
                                       collapsible = TRUE,
                                       enable_dropdown = FALSE,
                                       
                                       DT::dataTableOutput(ns("tabela_filtrada_caged"))
                                     )))
                   )
                   
            )
          )
          
  )
  
  
}
    
#' resultados Server Function
#'
#' @noRd 
mod_resultados_server <- function(input, output, session, caged, rais, origem, tab_selecionada){
  ns <- session$ns
  
  seletor_base <- reactive({
    
    p <- origem$origem()
    
    return(p)
    
  })
  
  tab <- reactive({
    
    c <- tab_selecionada$tab_selecionada()
    
    return(c)
    
  })
  
  # canal <- bd
  
  info <-  as.data.frame(Sys.info())
  
  info$coluna <- rownames(info)
  
  info <- subset(info, coluna == "user")
  
  # session$onSessionEnded(function(session){
  #   
  #   dbDisconnect(canal)
  #   
  # })
  
  # municipio <- data.frame("Código" = c(""),
  #                         "Município" = c(""), stringsAsFactors = FALSE)
  # 
  # saveRDS(municipio, file = paste0("municipio_", 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
        
        , options = list(pageLength = 8, dom= 'ftp'), colnames = c("Código", "Município"),
        rownames = FALSE  
      ))
    
  }
  
  carrega_municipios_selecionados()
  
  carrega_municipios_selecionados_rais <- function(){
      
      output$municipios_selecionados_rais <- DT::renderDataTable(datatable(
        
        municipio <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Rais$Município
        
        , options = list(pageLength = 8, dom= 'ftp'), colnames = c("Código", "Município"),
        rownames = FALSE  
      ))
    
  }
  
  carrega_municipios_selecionados_rais()
  
  shinyjs::hide("filtros")
  shinyjs::hide("filtros_rais")
  shinyjs::hide("filtros_2")
  
  # Exibir box com os filtros
  observeEvent(input$filtros_1, {
    
    if(seletor_base() == TRUE){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        shinyjs::show("filtros")
        shinyjs::hide("filtros_rais")
        shinyjs::show("filtros_2")
        shinyjs::hide("filtros_1")
        
        # 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")
          
        }
        
        # dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        # dados_caged2 <- readRDS(paste0("caged_filtrado2_", as.character(info[1, 1])))
        dados_geral <- readRDS(paste0("dados_", as.character(info[1, 1])))
        
        # lista_salarios <- dados_caged$Salário.Mensal %>% unique()
        # lista_idade <- dados_caged$Idade %>% unique()
        # lista_horas <- dados_caged$Qtd.Hora.Contrat %>% unique()
        
        # lista_salarios2 <- dados_caged2$Salário.Mensal %>% unique()
        # lista_idade2 <- dados_caged2$Idade %>% unique()
        # lista_horas2 <- dados_caged2$Qtd.Hora.Contrat %>% unique()
        
        # updateSliderInput(session, "salario", min = min(lista_salarios), max = max(lista_salarios), value = c(min(lista_salarios2), max(lista_salarios2)))
        updateSliderInput(session, "salario", min = dados_geral$Caged$Salário.MensalMinMax[1], max = dados_geral$Caged$Salário.MensalMinMax[2], value = c(dados_geral$Caged$Salário.Mensal[1], dados_geral$Caged$Salário.Mensal[2]))
        # updateSliderInput(session, "idade", min = min(lista_idade), max = max(lista_idade), value = c(min(lista_idade2), max(lista_idade2)))
        updateSliderInput(session, "idade", min = dados_geral$Caged$IdadeMinMax[1], max = dados_geral$Caged$IdadeMinMax[2], value = c(dados_geral$Caged$Idade[1], dados_geral$Caged$Idade[2]))
        # updateSliderInput(session, "horas", min = min(lista_horas), max = max(lista_horas), value = c(min(lista_horas2), max(lista_horas2)))
        updateSliderInput(session, "horas", min = dados_geral$Caged$Qtd.Hora.ContratMinMax[1], max = dados_geral$Caged$Qtd.Hora.ContratMinMax[2], value = c(dados_geral$Caged$Qtd.Hora.Contrat[1], dados_geral$Caged$Qtd.Hora.Contrat[2]))
        
      }
      
      
      
    }else{
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        shinyjs::hide("filtros")
        shinyjs::show("filtros_rais")
        shinyjs::show("filtros_2")
        shinyjs::hide("filtros_1")
        
        # 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_rais", choices = reg, selected = "TODAS")
          
        }
        
        # dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        # dados_rais2 <- readRDS(paste0("rais_filtrado2_", as.character(info[1, 1])))
        # 
        # lista_salarios <- dados_rais$Vl.Remun.Média.Nom %>% unique()
        # lista_idade <- dados_rais$Idade %>% unique()
        # lista_horas <- dados_rais$Qtd.Hora.Contr %>% unique()
        # 
        # lista_salarios2 <- dados_rais2$Vl.Remun.Média.Nom %>% unique()
        # lista_idade2 <- dados_rais2$Idade %>% unique()
        # lista_horas2 <- dados_rais2$Qtd.Hora.Contr %>% unique()
        
        dados_geral <- readRDS(paste0("dados_", as.character(info[1, 1])))

        # updateSliderInput(session, "salario_rais", min = min(lista_salarios), max = max(lista_salarios), value = c(min(lista_salarios2), max(lista_salarios2)))
        updateSliderInput(session, "salario_rais", min = dados_geral$Rais$VL.Remun.Méd.NomMinMax[1], max = dados_geral$Rais$VL.Remun.Méd.NomMinMax[2], value = c(dados_geral$Rais$VL.Remun.Méd.Nom[1], dados_geral$Rais$VL.Remun.Méd.Nom[2]))
        # updateSliderInput(session, "idade_rais", min = min(lista_idade), max = max(lista_idade), value = c(min(lista_idade2), max(lista_idade2)))
        updateSliderInput(session, "idade_rais", min = dados_geral$Rais$IdadeMinMax[1], max = dados_geral$Rais$IdadeMinMax[2], value = c(dados_geral$Rais$Idade[1], dados_geral$Rais$Idade[2]))
        # updateSliderInput(session, "horas_rais", min = min(lista_horas), max = max(lista_horas), value = c(min(lista_horas2), max(lista_horas2)))
        updateSliderInput(session, "horas_rais", min = dados_geral$Rais$Qtd.Hora.ContrMinMax[1], max = dados_geral$Rais$Qtd.Hora.ContrMinMax[2], value = c(dados_geral$Rais$Qtd.Hora.Contr[1], dados_geral$Rais$Qtd.Hora.Contr[2]))
        
      }
      
    }
    
    
  })
  
  # Esconder box com os filtros
  observeEvent(input$filtros_2, {
    
    shinyjs::hide("filtros")
    shinyjs::hide("filtros_rais")
    shinyjs::hide("filtros_2")
    shinyjs::show("filtros_1")
    
  })
  
  
  
  atualizar <- function(){
    
    if(seletor_base() == TRUE){
      
      salario_remuneracao <- "Salário"
      amostras_registros <- "Amostras"
      entrada_ativo <- "Entrada"
      saida_inativo <- "Saída"
      
      if(file.exists(paste0("caged_filtrado2_", as.character(info[1, 1])))){
        
        # dados_caged <- readRDS(file = paste0("caged_filtrado2_", as.character(info[1, 1])))
        
        dados_resumo <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        
        minimo <- dados_resumo$Caged$SalarioMin
        media <- dados_resumo$Caged$SalarioMed
        maximo <- dados_resumo$Caged$SalarioMax
        sd <- dados_resumo$Caged$SalarioSd
        
        minimo_permanencia <- dados_resumo$Caged$PermanenciaMin
        media_permanencia <- dados_resumo$Caged$PermanenciaMed
        maximo_permanencia <- dados_resumo$Caged$PermanenciaMax
        
        salario_1q <- dados_resumo$Caged$Salario1q
        salario_2q <- dados_resumo$Caged$Salario2q
        salario_3q <- dados_resumo$Caged$Salario3q
        salario_4q <- dados_resumo$Caged$Salario4q
        
        amostras_total <- dados_resumo$Caged$AmostrasTotal
        amostras_entrada <- dados_resumo$Caged$AmostrasEntrada
        amostras_saida <-  dados_resumo$Caged$AmostrasSaida
        
        homens <- dados_resumo$Caged$AmostrasHomens
        mulheres <-  dados_resumo$Caged$AmostrasMulheres
        
        homens_fertil <- dados_resumo$Caged$AmostrasHomensFertil
        mulheres_fertil <-  dados_resumo$Caged$AmostrasMulheresFertil
        
        output$salario_boxplot <- renderPlotly({
          
          # dados_box_plot <- select(dados_caged, Salário.Mensal)
          # 
          # m <- list(
          #   l = 0,
          #   r = 0,
          #   b = 0,
          #   t = 0,
          #   pad = 0
          # )
          # 
          # cores <- c("#08088A")
          # 
          # fig <- plot_ly(data=dados_box_plot, y = ~Salário.Mensal, type = "box", height = 150, width = 150, color = cores)
          # fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
          #                       xaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
          #                       yaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
          # 
          # fig
          
        })
        
        output$donut_amostras <- renderPlotly({
          
          df <- data.frame(amostras = c("Entrada", "Saída"),
                           count = c(amostras_entrada, amostras_saida))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#088A29", "#DF0101")
          
          # cores <- c("#04B486", "#0B610B") # verde
          # 
          # cores <- c("#8181F7", "#08088A") # azul
          # 
          # cores <- c("#86B404", "#886A08") # marrom
          
          fig <- df %>% plot_ly(labels = ~amostras, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
          
        })
        
        
        output$donut_homem_mulher <- renderPlotly({
          
          df <- data.frame(genero = c("Homem", "Mulher"),
                           count = c(homens, mulheres))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#08088A", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(homens-homens_fertil, homens_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#08088A")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(mulheres-mulheres_fertil, mulheres_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
          
          # dados_caged
          
        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
        output$GrafDemoSexoIdadeSalario <- renderPlotly({
          
          age <- rep(1:5, 2)
          
          sex <- rep(c('Male', 'Female'), each = 5)
          
          pop <- c(-1000, -944, -888, -762, -667, 1100, 999, 844, 789, 655)
          
          df <- data.frame(age, sex, pop) %>%
            mutate(abs_pop = abs(pop))
          
          plot_ly(df, x = pop, y = age, split = sex, type = 'bar', orientation = 'h',
                  hoverinfo = 'y+text+name', text = df$abs_pop) %>%
            layout(bargap = 0.1, barmode = 'overlay',
                   xaxis = list(tickmode = 'array', tickvals = c(-1000, -500, 0, 500, 1000),
                                ticktext = c('1000', '500', '0', '500', '1000')))
          
        })
        
        
      }else{
        
        dados_caged <- data.frame()
        
        minimo <- 0
        media <- 0
        maximo <- 0
        sd <- 0
        
        minimo_permanencia <- 0
        media_permanencia <- 0
        maximo_permanencia <- 0
        
        salario_1q <- 0
        salario_2q <- 0
        salario_3q <- 0
        salario_4q <- 0
        
        amostras_total <- 0
        amostras_entrada <- 0
        amostras_saida <-  0
        
        homens <- 0
        mulheres <-  0
        
        homens_fertil <- 0
        mulheres_fertil <-  0
        
        output$salario_boxplot <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
          
        })
        
        output$donut_amostras <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_homem_mulher <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
          
          dados_caged
          
        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
      }
      
    }else{
      
      salario_remuneracao <- "Remuneração Média"
      amostras_registros <- "Registros em Dezembro"
      entrada_ativo <- "Ativo"
      saida_inativo <- "Inativo"
      
      if(file.exists(paste0("rais_filtrado2_", as.character(info[1, 1])))){
        
        # dados_rais <- readRDS(file = paste0("rais_filtrado2_", as.character(info[1, 1])))
        
        dados_resumo <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        
        minimo <- dados_resumo$Rais$RemuneracaoMin
        media <- dados_resumo$Rais$RemuneracaoMed
        maximo <- dados_resumo$Rais$RemuneracaoMax
        sd <- dados_resumo$Rais$RemuneracaoSd
        
        minimo_permanencia <- dados_resumo$Rais$PermanenciaMin
        media_permanencia <- dados_resumo$Rais$PermanenciaMed
        maximo_permanencia <- dados_resumo$Rais$PermanenciaMax
        
        salario_1q <- dados_resumo$Rais$Remuneracao1q
        salario_2q <- dados_resumo$Rais$Remuneracao2q
        salario_3q <- dados_resumo$Rais$Remuneracao3q
        salario_4q <- dados_resumo$Rais$Remuneracao4q
        
        amostras_total <- dados_resumo$Rais$RegistrosTotal
        amostras_entrada <- dados_resumo$Rais$RegistrosEntrada
        amostras_saida <-  dados_resumo$Rais$RegistrosSaida
        
        homens <- dados_resumo$Rais$RegistrosHomens
        mulheres <-  dados_resumo$Rais$RegistrosMulheres
        
        homens_fertil <- dados_resumo$Rais$RegistrosHomensFertil
        mulheres_fertil <-  dados_resumo$Rais$RegistrosMulheresFertil
        
        # output$salario_boxplot <- renderPlotly({
        #   
        #   dados_box_plot <- select(dados_rais, Vl.Remun.Média.Nom)
        #   
        #   m <- list(
        #     l = 0,
        #     r = 0,
        #     b = 0,
        #     t = 0,
        #     pad = 0
        #   )
        #   
        #   cores <- c("#08088A")
        #   
        #   fig <- plot_ly(data=dados_box_plot, y = ~Vl.Remun.Média.Nom, type = "box", height = 150, width = 150, color = cores)
        #   fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
        #                         xaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        #                         yaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
        #   
        #   fig
        #   
        # })
        
        output$donut_amostras <- renderPlotly({
          
          df <- data.frame(amostras = c("Entrada", "Saída"),
                           count = c(amostras_entrada, amostras_saida))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#088A29", "#DF0101")
          
          # cores <- c("#04B486", "#0B610B") # verde
          # 
          # cores <- c("#8181F7", "#08088A") # azul
          # 
          # cores <- c("#86B404", "#886A08") # marrom
          
          fig <- df %>% plot_ly(labels = ~amostras, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
          
        })
        
        
        output$donut_homem_mulher <- renderPlotly({
          
          df <- data.frame(genero = c("Homem", "Mulher"),
                           count = c(homens, mulheres))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#08088A", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(homens-homens_fertil, homens_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#08088A")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(mulheres-mulheres_fertil, mulheres_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        # output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
        #   
        #   dados_rais
        #   
        # }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
      }else{
        
        dados_rais <- data.frame()
        
        minimo <- 0
        media <- 0
        maximo <- 0
        sd <- 0
        
        minimo_permanencia <- 0
        media_permanencia <- 0
        maximo_permanencia <- 0
        
        salario_1q <- 0
        salario_2q <- 0
        salario_3q <- 0
        salario_4q <- 0
        
        amostras_total <- 0
        amostras_entrada <- 0
        amostras_saida <-  0
        
        homens <- 0
        mulheres <-  0
        
        homens_fertil <- 0
        mulheres_fertil <-  0
        
        output$salario_boxplot <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_amostras <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_homem_mulher <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
          
          dados_rais
          
        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
      
        
      }
      
    }
    
    
    
    output$salario_remuneracao <- renderText({
      paste0("<h4><b>", salario_remuneracao, "</b></h4>")
    })
    
    output$amostras_registros <- renderText({
      paste0("<h4><b>", amostras_registros, "</b></h4>")
    })
    
    output$entrada_ativo <- renderText({
      paste0("<font style='font-size:12px;'>", entrada_ativo, "</font>")
    })
    
    output$saida_inativo <- renderText({
      paste0("<font style='font-size:12px;'>", saida_inativo, "</font>")
    })
    
    
    output$valor_salario_minimo <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(minimo, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Mín: ", format(round(minimo, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_medio <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>", format(round(media, 2), decimal.mark = ",", big.mark = "."), "</b></font>")
      # paste0("Méd: ", format(round(media, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_maximo <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(maximo, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Máx: ", format(round(maximo, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_sd <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(sd, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("sd: ", format(round(sd, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$permanencia_minima <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(minimo_permanencia, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Mín: ", format(round(minimo_permanencia, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$permanencia_media <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>", format(round(media_permanencia, 2), decimal.mark = ",", big.mark = "."), "</b></font>")
      # paste0("Méd: ", format(round(media_permanencia, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$permanencia_maxima <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(maximo_permanencia, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Máx: ", format(round(maximo_permanencia, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_1q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_1q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("1Q: ", format(round(salario_1q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_2q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_2q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("2Q: ", format(round(salario_2q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_3q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_3q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("3Q: ", format(round(salario_3q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_4q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_4q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("3Q: ", format(round(salario_3q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$amostras_total <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>", format(round(amostras_total, 2), decimal.mark = ",", big.mark = "."), "</b></font>")
      # paste0("Total: ", format(amostras_total, decimal.mark = ",", big.mark = "."))
    })
    
    output$amostras_entrada <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(amostras_entrada, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Entrada: ", format(amostras_entrada, decimal.mark = ",", big.mark = "."))
    })
    
    output$amostras_saida <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(amostras_saida, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Saída: ", format(amostras_saida, decimal.mark = ",", big.mark = "."))
    })
    
    output$homens <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(homens, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    output$mulheres <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(mulheres, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    output$homens_fertil_titulo <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>Idade Fértil</b></font>")
    })
    
    output$homens_fertil <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(homens_fertil, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    output$mulheres_fertil <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(mulheres_fertil, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    
  }
  
  atualizarResultados <- function(){
    
    if(seletor_base() == TRUE){
      
      salario_remuneracao <- "Salário"
      amostras_registros <- "Amostras"
      entrada_ativo <- "Entrada"
      saida_inativo <- "Saída"
      
      if(file.exists(paste0("caged_filtrado2_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(file = paste0("caged_filtrado2_", as.character(info[1, 1])))
        
        dados_resumo <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        
        minimo <- dados_resumo$Caged$SalarioMin
        media <- dados_resumo$Caged$SalarioMed
        maximo <- dados_resumo$Caged$SalarioMax
        sd <- dados_resumo$Caged$SalarioSd
        
        minimo_permanencia <- dados_resumo$Caged$PermanenciaMin
        media_permanencia <- dados_resumo$Caged$PermanenciaMed
        maximo_permanencia <- dados_resumo$Caged$PermanenciaMax
        
        salario_1q <- dados_resumo$Caged$Salario1q
        salario_2q <- dados_resumo$Caged$Salario2q
        salario_3q <- dados_resumo$Caged$Salario3q
        salario_4q <- dados_resumo$Caged$Salario4q
        
        amostras_total <- dados_resumo$Caged$AmostrasTotal
        amostras_entrada <- dados_resumo$Caged$AmostrasEntrada
        amostras_saida <-  dados_resumo$Caged$AmostrasSaida
        
        homens <- dados_resumo$Caged$AmostrasHomens
        mulheres <-  dados_resumo$Caged$AmostrasMulheres
        
        homens_fertil <- dados_resumo$Caged$AmostrasHomensFertil
        mulheres_fertil <-  dados_resumo$Caged$AmostrasMulheresFertil
        
        output$salario_boxplot <- renderPlotly({
          
          # dados_box_plot <- select(dados_caged, Salário.Mensal)
          # 
          # m <- list(
          #   l = 0,
          #   r = 0,
          #   b = 0,
          #   t = 0,
          #   pad = 0
          # )
          # 
          # cores <- c("#08088A")
          # 
          # fig <- plot_ly(data=dados_box_plot, y = ~Salário.Mensal, type = "box", height = 150, width = 150, color = cores)
          # fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
          #                       xaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
          #                       yaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
          # 
          # fig
          
        })
        
        output$donut_amostras <- renderPlotly({
          
          df <- data.frame(amostras = c("Entrada", "Saída"),
                           count = c(amostras_entrada, amostras_saida))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#088A29", "#DF0101")
          
          # cores <- c("#04B486", "#0B610B") # verde
          # 
          # cores <- c("#8181F7", "#08088A") # azul
          # 
          # cores <- c("#86B404", "#886A08") # marrom
          
          fig <- df %>% plot_ly(labels = ~amostras, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
          
        })
        
        
        output$donut_homem_mulher <- renderPlotly({
          
          df <- data.frame(genero = c("Homem", "Mulher"),
                           count = c(homens, mulheres))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#08088A", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(homens-homens_fertil, homens_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#08088A")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(mulheres-mulheres_fertil, mulheres_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
          
          dados_caged
          
        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
        output$GrafDemoSexoIdadeSalario <- renderPlotly({
          
          age <- rep(1:5, 2)
          
          sex <- rep(c('Male', 'Female'), each = 5)
          
          pop <- c(-1000, -944, -888, -762, -667, 1100, 999, 844, 789, 655)
          
          df <- data.frame(age, sex, pop) %>%
            mutate(abs_pop = abs(pop))
          
          plot_ly(df, x = pop, y = age, split = sex, type = 'bar', orientation = 'h',
                  hoverinfo = 'y+text+name', text = df$abs_pop) %>%
            layout(bargap = 0.1, barmode = 'overlay',
                   xaxis = list(tickmode = 'array', tickvals = c(-1000, -500, 0, 500, 1000),
                                ticktext = c('1000', '500', '0', '500', '1000')))
          
        })
        
        
      }else{
        
        dados_caged <- data.frame()
        
        minimo <- 0
        media <- 0
        maximo <- 0
        sd <- 0
        
        minimo_permanencia <- 0
        media_permanencia <- 0
        maximo_permanencia <- 0
        
        salario_1q <- 0
        salario_2q <- 0
        salario_3q <- 0
        salario_4q <- 0
        
        amostras_total <- 0
        amostras_entrada <- 0
        amostras_saida <-  0
        
        homens <- 0
        mulheres <-  0
        
        homens_fertil <- 0
        mulheres_fertil <-  0
        
        output$salario_boxplot <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
          
        })
        
        output$donut_amostras <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_homem_mulher <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
          
          dados_caged
          
        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
      }
      
    }else{
      
      salario_remuneracao <- "Remuneração Média"
      amostras_registros <- "Registros em Dezembro"
      entrada_ativo <- "Ativo"
      saida_inativo <- "Inativo"
      
      if(file.exists(paste0("rais_filtrado2_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(file = paste0("rais_filtrado2_", as.character(info[1, 1])))
        
        dados_resumo <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        
        minimo <- dados_resumo$Rais$RemuneracaoMin
        media <- dados_resumo$Rais$RemuneracaoMed
        maximo <- dados_resumo$Rais$RemuneracaoMax
        sd <- dados_resumo$Rais$RemuneracaoSd
        
        minimo_permanencia <- dados_resumo$Rais$PermanenciaMin
        media_permanencia <- dados_resumo$Rais$PermanenciaMed
        maximo_permanencia <- dados_resumo$Rais$PermanenciaMax
        
        salario_1q <- dados_resumo$Rais$Remuneracao1q
        salario_2q <- dados_resumo$Rais$Remuneracao2q
        salario_3q <- dados_resumo$Rais$Remuneracao3q
        salario_4q <- dados_resumo$Rais$Remuneracao4q
        
        amostras_total <- dados_resumo$Rais$RegistrosTotal
        amostras_entrada <- dados_resumo$Rais$RegistrosEntrada
        amostras_saida <-  dados_resumo$Rais$RegistrosSaida
        
        homens <- dados_resumo$Rais$RegistrosHomens
        mulheres <-  dados_resumo$Rais$RegistrosMulheres
        
        homens_fertil <- dados_resumo$Rais$RegistrosHomensFertil
        mulheres_fertil <-  dados_resumo$Rais$RegistrosMulheresFertil
        
        # output$salario_boxplot <- renderPlotly({
        #   
        #   dados_box_plot <- select(dados_rais, Vl.Remun.Média.Nom)
        #   
        #   m <- list(
        #     l = 0,
        #     r = 0,
        #     b = 0,
        #     t = 0,
        #     pad = 0
        #   )
        #   
        #   cores <- c("#08088A")
        #   
        #   fig <- plot_ly(data=dados_box_plot, y = ~Vl.Remun.Média.Nom, type = "box", height = 150, width = 150, color = cores)
        #   fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
        #                         xaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
        #                         yaxis = list(title = NULL, showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
        #   
        #   fig
        #   
        # })
        
        output$donut_amostras <- renderPlotly({
          
          df <- data.frame(amostras = c("Entrada", "Saída"),
                           count = c(amostras_entrada, amostras_saida))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#088A29", "#DF0101")
          
          # cores <- c("#04B486", "#0B610B") # verde
          # 
          # cores <- c("#8181F7", "#08088A") # azul
          # 
          # cores <- c("#86B404", "#886A08") # marrom
          
          fig <- df %>% plot_ly(labels = ~amostras, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
          
        })
        
        
        output$donut_homem_mulher <- renderPlotly({
          
          df <- data.frame(genero = c("Homem", "Mulher"),
                           count = c(homens, mulheres))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#08088A", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(homens-homens_fertil, homens_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#08088A")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          df <- data.frame(genero = c("Outros", "Idade Fértil"),
                           count = c(mulheres-mulheres_fertil, mulheres_fertil))
          m <- list(
            l = 0,
            r = 0,
            b = 0,
            t = 0,
            pad = 0
          )
          
          cores <- c("#848484", "#FF8000")
          
          fig <- df %>% plot_ly(labels = ~genero, values = ~count, height = 100, width = 100, textposition = "inside", textfont = list(size = 15, color = "#FFFFFF"), marker = list(colors = cores))
          fig <- fig %>% add_pie(hole = 0.4)
          fig <- fig %>% layout(title = NULL,  showlegend = F, margin = m,
                                xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
                                yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) %>% 
            style(hoverinfo = 'none')
          
          fig
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({

          dados_rais

        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
      }else{
        
        dados_rais <- data.frame()
        
        minimo <- 0
        media <- 0
        maximo <- 0
        sd <- 0
        
        minimo_permanencia <- 0
        media_permanencia <- 0
        maximo_permanencia <- 0
        
        salario_1q <- 0
        salario_2q <- 0
        salario_3q <- 0
        salario_4q <- 0
        
        amostras_total <- 0
        amostras_entrada <- 0
        amostras_saida <-  0
        
        homens <- 0
        mulheres <-  0
        
        homens_fertil <- 0
        mulheres_fertil <-  0
        
        output$salario_boxplot <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_amostras <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_homem_mulher <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        
        output$donut_homem_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$donut_mulher_fertil <- renderPlotly({
          
          plotly_empty() %>% 
            config(staticPlot = TRUE)
          
        })
        
        output$tabela_filtrada_caged <- DT::renderDataTable(DT::datatable({
          
          dados_rais
          
        }, options = list(pageLength = 12, dom = "tp", scrollX = TRUE, scrollY = TRUE), filter = "top", rownames = FALSE, selection = "single"))
        
        
      }
      
    }
    
    
    
    output$salario_remuneracao <- renderText({
      paste0("<h4><b>", salario_remuneracao, "</b></h4>")
    })
    
    output$amostras_registros <- renderText({
      paste0("<h4><b>", amostras_registros, "</b></h4>")
    })
    
    output$entrada_ativo <- renderText({
      paste0("<font style='font-size:12px;'>", entrada_ativo, "</font>")
    })
    
    output$saida_inativo <- renderText({
      paste0("<font style='font-size:12px;'>", saida_inativo, "</font>")
    })
    
    
    output$valor_salario_minimo <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(minimo, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Mín: ", format(round(minimo, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_medio <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>", format(round(media, 2), decimal.mark = ",", big.mark = "."), "</b></font>")
      # paste0("Méd: ", format(round(media, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_maximo <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(maximo, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Máx: ", format(round(maximo, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_sd <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(sd, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("sd: ", format(round(sd, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$permanencia_minima <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(minimo_permanencia, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Mín: ", format(round(minimo_permanencia, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$permanencia_media <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>", format(round(media_permanencia, 2), decimal.mark = ",", big.mark = "."), "</b></font>")
      # paste0("Méd: ", format(round(media_permanencia, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$permanencia_maxima <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(maximo_permanencia, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Máx: ", format(round(maximo_permanencia, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_1q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_1q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("1Q: ", format(round(salario_1q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_2q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_2q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("2Q: ", format(round(salario_2q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_3q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_3q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("3Q: ", format(round(salario_3q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$valor_salario_4q <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(salario_4q, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("3Q: ", format(round(salario_3q, 2), decimal.mark = ",", big.mark = "."))
    })
    
    output$amostras_total <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>", format(round(amostras_total, 2), decimal.mark = ",", big.mark = "."), "</b></font>")
      # paste0("Total: ", format(amostras_total, decimal.mark = ",", big.mark = "."))
    })
    
    output$amostras_entrada <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(amostras_entrada, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Entrada: ", format(amostras_entrada, decimal.mark = ",", big.mark = "."))
    })
    
    output$amostras_saida <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(amostras_saida, 2), decimal.mark = ",", big.mark = "."), "</font>")
      # paste0("Saída: ", format(amostras_saida, decimal.mark = ",", big.mark = "."))
    })
    
    output$homens <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(homens, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    output$mulheres <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(mulheres, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    output$homens_fertil_titulo <- renderText({
      paste0("<font color=\"#000000\" style='font-size:14px;'><b>Idade Fértil</b></font>")
    })
    
    output$homens_fertil <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(homens_fertil, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    output$mulheres_fertil <- renderText({
      paste0("<font color=\"#000000\" style='font-size:12px;'>", format(round(mulheres_fertil, 2), decimal.mark = ",", big.mark = "."), "</font>")
    })
    
    
  }
  
  
  # atualizar_dados <- function(){
  #   
  #   if(tab_selecionada == "resultados"){
  #     
  #     sendSweetAlert(session, title = "ok!")
  #     
  #   }
  #   
  # }
  
  observe({
    
    if(tab() == "resultados"){
      
    atualizar()
      
    }
    
  })

  # Atualizar a tabela de acordo com os filtros
  observeEvent(input$atualizar_dados_caged, {
    
    shinybusy::show_modal_spinner()
    
    atualizar()
    
    shinybusy::remove_modal_spinner()
    
  })
  
  # Atualizar a tabela de acordo com os filtros
  observeEvent(input$atualizar_dados_caged, {
    
    shinybusy::show_modal_spinner()
    
    atualizarResultados()
    
    shinybusy::remove_modal_spinner()
    
  })
  
  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$regiao_rais != "TODAS") {
      
      # sqlOutput_uf <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT sigla_uf FROM municipios_caged WHERE nome_grande_regiao = '" ,input$regiao_rais,"' ")) %>% as.data.frame()
      
      sqlOutput_uf <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(nome_grande_regiao == input$regiao_rais) %>% dplyr::select(sigla_uf) %>% unique()
      
      reg <- c(sqlOutput_uf, "TODAS")
      
      updatePickerInput(session, "uf_rais", choices = reg, selected = "TODAS")
    }
    
  })
  
  observe({

    if (input$uf_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)
    }

  })
  
  observe({
    
    if (input$uf_rais != "TODAS") {
      
      # sqlOutput_municipio <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT nome_municipio FROM municipios_caged WHERE sigla_uf = '" ,input$uf_rais,"' ")) %>% as.data.frame()
      
      sqlOutput_municipio <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(sigla_uf == input$uf_rais) %>% dplyr::select(nome_municipio) %>% unique()
      
      muni <- c(sqlOutput_municipio)
      
      updatePickerInput(session, "municipio_rais", choices = muni)
    }
    
  })
  
  #Select all CheckBox CAGED
  
  observeEvent(input$select_all_config_geral_admitidos, {
    
    if(input$select_all_config_geral_admitidos == 0){
      
      return(NULL)
      
    }else if (input$select_all_config_geral_admitidos%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_admitidos", choices=lista_config_geral_admitidos)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_admitidos", choices=lista_config_geral_admitidos, selected=lista_config_geral_admitidos)
    }
    
  })
  
  observeEvent(input$select_all_config_geral_raca, { 
    
    if(input$select_all_config_geral_raca == 0){
      
      return(NULL)
      
    }else if (input$select_all_config_geral_raca%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_raca", choices=lista_config_geral_raca)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_raca", choices=lista_config_geral_raca, selected=lista_config_geral_raca)
    }
    
  })
  
  observeEvent(input$select_all_config_geral_sexo, { 
    
    if(input$select_all_config_geral_sexo == 0){
      
      return(NULL)
      
    }else if (input$select_all_config_geral_sexo%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_sexo", choices=lista_config_geral_sexo)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_sexo", choices=lista_config_geral_sexo, selected=lista_config_geral_sexo)
    }
    
  })
  
  observeEvent(input$select_all_config_geral_escolaridade, { 
    
    if(input$select_all_config_geral_escolaridade == 0){
      
      return(NULL)
      
    }else if (input$select_all_config_geral_escolaridade%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_escolaridade", choices=lista_config_geral_escolaridade)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_escolaridade", choices=lista_config_geral_escolaridade, selected=lista_config_geral_escolaridade)
    }
    
  })
  
  observeEvent(input$select_all_config_geral_tipo_movimentacao, { 
    
    if(input$select_all_config_geral_tipo_movimentacao == 0){
      
      return(NULL)
      
    }else if (input$select_all_config_geral_tipo_movimentacao%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_tipo_movimentacao", choices=lista_config_geral_tipo_movimentacao)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_tipo_movimentacao", choices=lista_config_geral_tipo_movimentacao, selected=lista_config_geral_tipo_movimentacao)
    }
    
  })
  
  observeEvent(input$select_all_config_geral_porte_empresa, { 
    
    if(input$select_all_config_geral_porte_empresa == 0){
      
      return(NULL)
      
    }else if (input$select_all_config_geral_porte_empresa%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_porte_empresa", choices=lista_config_geral_porte_empresa)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_porte_empresa", choices=lista_config_geral_porte_empresa, selected=lista_config_geral_porte_empresa)
    }
    
  })
  
  # Select all checkbox RAIS
  
  # Vínculo Ativo
  observeEvent(input$select_all_vinculo_ativo_rais, { 
    
    if(input$select_all_vinculo_ativo_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_vinculo_ativo_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_vinculo_ativo_rais", choices=lista_vinculo_ativo_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_vinculo_ativo_rais", choices=lista_vinculo_ativo_rais, selected=lista_vinculo_ativo_rais)
    }
    
  })
  
  # Raça
  observeEvent(input$select_all_raca_rais, { 
    
    if(input$select_all_raca_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_raca_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_raca_rais", choices=lista_raca_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_raca_rais", choices=lista_raca_rais, selected=lista_raca_rais)
    }
    
  })
  
  # Gênero
  observeEvent(input$select_all_genero_rais, { 
    
    if(input$select_all_genero_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_genero_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_genero_rais", choices=lista_sexo_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_genero_rais", choices=lista_sexo_rais, selected=lista_sexo_rais)
    }
    
  })
  
  # Escolaridade
  observeEvent(input$select_all_escolaridade_rais, { 
    
    if(input$select_all_escolaridade_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_escolaridade_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_escolaridade_rais", choices=lista_escolaridade_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_escolaridade_rais", choices=lista_escolaridade_rais, selected=lista_escolaridade_rais)
    }
    
  })
  
  # Porte da empresa
  observeEvent(input$select_all_porte_empresa_rais, { 
    
    if(input$select_all_porte_empresa_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_porte_empresa_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_porte_empresa_rais", choices=lista_tamanho_estabelecimento_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_porte_empresa_rais", choices=lista_tamanho_estabelecimento_rais, selected=lista_tamanho_estabelecimento_rais)
    }
    
  })
  
  # Motivo do desligamento
  observeEvent(input$select_all_motivo_desligamento_rais, { 
    
    if(input$select_all_motivo_desligamento_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_motivo_desligamento_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_motivo_desligamento_rais", choices=lista_motivo_desligamento_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_motivo_desligamento_rais", choices=lista_motivo_desligamento_rais, selected=lista_motivo_desligamento_rais)
    }
    
  })
  
  # Tipo de Admissão
  observeEvent(input$select_all_tipo_admissao_rais, { 
    
    if(input$select_all_tipo_admissao_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_tipo_admissao_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_tipo_admissao_rais", choices=lista_tipo_admissao_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_tipo_admissao_rais", choices=lista_tipo_admissao_rais, selected=lista_tipo_admissao_rais)
    }
    
  })
  
  # Tipo de Vínculo
  observeEvent(input$select_all_tipo_vinculo_rais, { 
    
    if(input$select_all_tipo_vinculo_rais == 0){
      
      return(NULL)
      
    }else if (input$select_all_tipo_vinculo_rais%%2 == 0){
      
      updateCheckboxGroupInput(session,"config_geral_tipo_vinculo_rais", choices=lista_tipo_vinculo_rais)
      
    }else{
      
      updateCheckboxGroupInput(session,"config_geral_tipo_vinculo_rais", choices=lista_tipo_vinculo_rais, selected=lista_tipo_vinculo_rais)
    }
    
  })
  
  
  
  # observeEvent(input$select_all_config_geral_indicacao_contrato_parcial, {
  #   
  #   if(input$select_all_config_geral_indicacao_contrato_parcial == 0){
  #     
  #     return(NULL)
  #     
  #   }else if (input$select_all_config_geral_indicacao_contrato_parcial%%2 == 0){
  #     
  #     updateCheckboxGroupInput(session,"config_geral_indicacao_contrato_parcial", choices=lista_config_geral_indicacao_contrato_parcial)
  #     
  #   }else{
  #     
  #     updateCheckboxGroupInput(session,"config_geral_indicacao_contrato_parcial", choices=lista_config_geral_indicacao_contrato_parcial, selected=lista_config_geral_indicacao_contrato_parcial)
  #   }
  #   
  # })
  
  # observeEvent(input$select_all_config_geral_indicacao_contrato_intermitente, {
  #   
  #   if(input$select_all_config_geral_indicacao_contrato_intermitente == 0){
  #     
  #     return(NULL)
  #     
  #   }else if (input$select_all_config_geral_indicacao_contrato_intermitente%%2 == 0){
  #     
  #     updateCheckboxGroupInput(session,"config_geral_indicacao_contrato_intermitente", choices=lista_config_geral_indicacao_contrato_intermitente)
  #     
  #   }else{
  #     
  #     updateCheckboxGroupInput(session,"config_geral_indicacao_contrato_intermitente", choices=lista_config_geral_indicacao_contrato_intermitente, selected=lista_config_geral_indicacao_contrato_intermitente)
  #   }
  #   
  # })
  
  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

          names(sqlOutput_regiao)[1] <- "Código"
          names(sqlOutput_regiao)[2] <- "Município"

          municipio <- rbind(municipio, sqlOutput_regiao) %>% unique()
          dados_geral$Caged$Município <- 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
        
        names(sqlOutput_uf)[1] <- "Código"
        names(sqlOutput_uf)[2] <- "Município"
        
        municipio <- rbind(municipio, sqlOutput_uf) %>% unique()
        dados_geral$Caged$Município <- 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
      
      names(sqlOutput_mun)[1] <- "Código"
      names(sqlOutput_mun)[2] <- "Município"
      
      municipio <- rbind(municipio, sqlOutput_mun) %>% unique()
      dados_geral$Caged$Município <- municipio
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      carrega_municipios_selecionados()
      
    }
    
  })
  
  observeEvent(input$add_mun_rais, {
    
    if(input$municipio_rais == ""){
      
      if(input$uf_rais == "TODAS"){
        
        if(input$regiao_rais == "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_rais,"' ")) %>% as.data.frame()
          
          sqlOutput_regiao <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(nome_grande_regiao == input$regiao_rais) %>% dplyr::select(codigo_grande_regiao, nome_grande_regiao) %>% unique()
          
          dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
          municipio <- dados_geral$Rais$Município
          
          names(sqlOutput_regiao)[1] <- "Código"
          names(sqlOutput_regiao)[2] <- "Município"
          
          municipio <- rbind(municipio, sqlOutput_regiao) %>% unique()
          dados_geral$Rais$Município <- municipio
          saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
          carrega_municipios_selecionados_rais()
          
        }
        
      }else{
        
        # sqlOutput_uf <- RSQLite::dbGetQuery(canal, paste0("SELECT DISTINCT codigo_uf, sigla_uf FROM municipios_caged WHERE sigla_uf = '" ,input$uf_rais,"' ")) %>% as.data.frame()
        
        sqlOutput_uf <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(sigla_uf == input$uf_rais) %>% dplyr::select(codigo_uf, sigla_uf) %>% unique()
        
        dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
        municipio <- dados_geral$Rais$Município
        
        names(sqlOutput_uf)[1] <- "Código"
        names(sqlOutput_uf)[2] <- "Município"
        
        municipio <- rbind(municipio, sqlOutput_uf) %>% unique()
        dados_geral$Rais$Município <- municipio
        saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
        carrega_municipios_selecionados_rais()
        
      }
      
    }else{
      
      # sqlOutput_mun <- RSQLite::dbGetQuery(canal, paste0('SELECT DISTINCT codigo_municipio, nome_municipio FROM municipios_caged WHERE nome_municipio = "' , input$municipio_rais, '" AND sigla_uf = "', input$uf_rais, '"')) %>% as.data.frame()
      
      sqlOutput_mun <- Dados::ListaMunicipios %>% as.data.frame() %>% subset(nome_municipio == input$municipio_rais & sigla_uf == input$uf_rais) %>% dplyr::select(codigo_municipio, nome_municipio) %>% unique()
      
      dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
      municipio <- dados_geral$Rais$Município
      
      names(sqlOutput_mun)[1] <- "Código"
      names(sqlOutput_mun)[2] <- "Município"
      
      municipio <- rbind(municipio, sqlOutput_mun) %>% unique()
      dados_geral$Rais$Município <- municipio
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      carrega_municipios_selecionados_rais()
      
    }
    
  })
  
  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 <- municipio
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    carrega_municipios_selecionados()
    
  })
  
  observeEvent(input$limpar_municipio_rais, {
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    
    municipio <- data.frame("Código" = c(""),
                            "Município" = c(""), stringsAsFactors = FALSE)
    
    
    dados_geral$Rais$Município <- municipio
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    carrega_municipios_selecionados_rais()
    
  })
  
  
  observeEvent(input$gera_resultado, {
    
    shinybusy::show_modal_spinner()
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    
    if(seletor_base() == TRUE){
      
      dados_geral$Caged$Salário.Mensal[1] <- input$salario[1]
      dados_geral$Caged$Salário.Mensal[2] <- input$salario[2]
      
      dados_geral$Caged$Idade[1] <- input$idade[1]
      dados_geral$Caged$Idade[2] <- input$idade[2]
      
      dados_geral$Caged$Qtd.Hora.Contrat[1] <- input$horas[1]
      dados_geral$Caged$Qtd.Hora.Contrat[2] <- input$horas[2]
      
      dados_geral$Caged$Admitidos.Desligados <- input$config_geral_admitidos
      
      dados_geral$Caged$Grau.Instrução <- input$config_geral_escolaridade
      
      dados_geral$Caged$Raça.Cor <- input$config_geral_raca
      
      dados_geral$Caged$Sexo <- input$config_geral_sexo
      
      dados_geral$Caged$Tipo.Mov.Desagregado <- input$config_geral_tipo_movimentacao
      
      dados_geral$Caged$Faixa.Empr.Início.Jan <- input$config_geral_porte_empresa
      
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      
      dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
      
      # # Filtro de salario
      # minimo_salario <- input$salario[1]
      # maximo_salario <- input$salario[2]
      # dados_caged <- subset(dados_caged, Salário.Mensal >= minimo_salario & Salário.Mensal <= maximo_salario)
      # 
      # # Filtro de idade
      # minimo_idade <- input$idade[1]
      # maximo_idade <- input$idade[2]
      # dados_caged <- subset(dados_caged, Idade >= minimo_idade & Idade <= maximo_idade)
      # 
      # # Filtro de horas
      # minimo_horas <- input$horas[1]
      # maximo_horas <- input$horas[2]
      # dados_caged <- subset(dados_caged, Qtd.Hora.Contrat >= minimo_horas & Qtd.Hora.Contrat <= maximo_horas)
      # 
      # #Filtro admitidos/desligados
      # admitidos <- as.numeric(input$config_geral_admitidos)
      # dados_caged <- subset(dados_caged, Admitidos.Desligados%in%admitidos)
      # 
      # #Filtro raca
      # raca <- as.numeric(input$config_geral_raca)
      # dados_caged <- subset(dados_caged, Raça.Cor%in%raca)
      # 
      # #Filtro genero
      # genero <- as.numeric(input$config_geral_sexo)
      # dados_caged <- subset(dados_caged, Sexo%in%genero)
      # 
      # #Filtro escolaridade
      # escolaridade <- as.numeric(input$config_geral_escolaridade)
      # dados_caged <- subset(dados_caged, Grau.Instrução%in%escolaridade)
      # 
      # #Filtro tipo de movimentacao
      # tipo_movimentacao <- as.numeric(input$config_geral_tipo_movimentacao)
      # dados_caged <- subset(dados_caged, Tipo.Mov.Desagregado%in%tipo_movimentacao)
      # 
      # #Filtro porte da empresa
      # porte_empresa <- as.numeric(input$config_geral_porte_empresa)
      # dados_caged <- subset(dados_caged, Faixa.Empr.Início.Jan%in%porte_empresa)
      # 
      # # #Filtro contrato parcial
      # # contrato_parcial <- as.numeric(input$config_geral_sexo)
      # # dados_caged <- subset(dados_caged, Sexo%in%contrato_parcial)
      # # 
      # # #Filtro contrato intermitente
      # # contrato_intermitente <- as.numeric(input$config_geral_sexo)
      # # dados_caged <- subset(dados_caged, Sexo%in%contrato_intermitente)
      
      dados_caged <- subset(dados_caged,
                            Salário.Mensal >= dados_geral$Caged$Salário.Mensal[1] & Salário.Mensal <= dados_geral$Caged$Salário.Mensal[2] &
                              Idade >= dados_geral$Caged$Idade[1] & Idade <= dados_geral$Caged$Idade[2] &
                              Qtd.Hora.Contrat >= dados_geral$Caged$Qtd.Hora.Contrat[1] & Qtd.Hora.Contrat <= dados_geral$Caged$Qtd.Hora.Contrat[2] &
                              Admitidos.Desligados %in% dados_geral$Caged$Admitidos.Desligados &
                              Raça.Cor %in% dados_geral$Caged$Raça.Cor &
                              Sexo %in% dados_geral$Caged$Sexo &
                              Grau.Instrução %in% dados_geral$Caged$Grau.Instrução &
                              Tipo.Mov.Desagregado %in% dados_geral$Caged$Tipo.Mov.Desagregado &
                              Faixa.Empr.Início.Jan %in% dados_geral$Caged$Faixa.Empr.Início.Jan)
      
      # Filtro municipios
      municipio <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Caged$Município
      municipio <- municipio[-1,]
      
      if(nrow(municipio) > 0){
        
        texto_municipio <- paste0("dados_caged <- subset(dados_caged, substr(Município, 1, nchar(", municipio[1,1], ")) == '", if(nchar(municipio[1,1]) == 7) {substr(municipio[1,1], 1, 6)}else{municipio[1,1]}, "'")
        
        if(nrow(municipio) > 1){
          
          for (xx in 2:nrow(municipio)) {
            
            texto_municipio <- paste0(texto_municipio, " | substr(Município, 1, nchar(", municipio[xx,1], ")) == '", if(nchar(municipio[xx,1]) == 7) {substr(municipio[1,1], 1, 6)}else{municipio[xx,1]}, "'")
            
          }
          
        }
        
        texto_municipio <- paste0(texto_municipio, ")")
        
        eval(parse(text = as.character(texto_municipio)))
        
      }
      
      # sendSweetAlert(session, title = texto_municipio)
      
      dados_caged <- dados_caged %>% 
        dplyr::mutate(media_salario = mean(Salário.Mensal),
                      sd_salario = sd(Salário.Mensal),
                      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]),
                      media_salario_saida = mean(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_permanencia = mean(Tempo.Emprego))
      
      dados_caged <- dados_caged %>% 
        dplyr::group_by(Competência.Declarada, Município) %>% 
        dplyr::mutate(media_salario_municipio_ref = mean(Salário.Mensal),
                      sd_salario_municipio_ref = sd(Salário.Mensal),
                      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]),
                      media_salario_saida_municipio_ref = mean(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_permanencia_municipio_ref = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada no Município
      dados_caged <- dados_caged %>% 
        dplyr::group_by(Município) %>% 
        dplyr::mutate(media_salario_municipio = mean(Salário.Mensal),
                      sd_salario_municipio = sd(Salário.Mensal),
                      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]),
                      media_salario_saida_municipio = mean(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_permanencia_municipio = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      dados_caged <- dados_caged %>% 
        dplyr::group_by(Competência.Declarada, UF) %>% 
        dplyr::mutate(media_salario_uf_ref = mean(Salário.Mensal),
                      sd_salario_uf_ref = sd(Salário.Mensal),
                      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]),
                      media_salario_saida_uf_ref = mean(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_permanencia_uf_ref = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      # Cria colunas calculadas baseada na UF
      dados_caged <- dados_caged %>% 
        dplyr::group_by(UF) %>% 
        dplyr::mutate(media_salario_uf = mean(Salário.Mensal),
                      sd_salario_uf = sd(Salário.Mensal),
                      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]),
                      media_salario_saida_uf = mean(Salário.Mensal[Admitidos.Desligados == 2]),
                      media_permanencia_uf = mean(Tempo.Emprego)) %>% 
        dplyr::ungroup()
      
      saveRDS(dados_caged, file = paste0("caged_filtrado2_", as.character(info[1, 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)
      
      dados_geral$Caged$SalarioMed <- mean(dados_caged$Salário.Mensal)
      dados_geral$Caged$SalarioMin <- min(dados_caged$Salário.Mensal)
      dados_geral$Caged$SalarioMax <- max(dados_caged$Salário.Mensal)
      dados_geral$Caged$SalarioSd <- sd(dados_caged$Salário.Mensal)
      dados_geral$Caged$Salario1q <- as.numeric(quantile(dados_caged$Salário.Mensal, probs = 0.25, type = 2))
      dados_geral$Caged$Salario2q <- as.numeric(quantile(dados_caged$Salário.Mensal, probs = 0.50, type = 2))
      dados_geral$Caged$Salario3q <- as.numeric(quantile(dados_caged$Salário.Mensal, probs = 0.75, type = 2))
      dados_geral$Caged$Salario4q <- as.numeric(quantile(dados_caged$Salário.Mensal, probs = 1.00, type = 2))
      dados_geral$Caged$AmostrasTotal <- nrow(dados_caged)
      dados_geral$Caged$AmostrasEntrada <- length(dados_caged$Salário.Mensal[dados_caged$Admitidos.Desligados == 1])
      dados_geral$Caged$AmostrasSaida <- length(dados_caged$Salário.Mensal[dados_caged$Admitidos.Desligados == 2])
      dados_geral$Caged$AmostrasHomens <- length(dados_caged$Salário.Mensal[dados_caged$Sexo == 1])
      dados_geral$Caged$AmostrasMulheres <- length(dados_caged$Salário.Mensal[dados_caged$Sexo == 2])
      dados_geral$Caged$AmostrasHomensFertil <- length(dados_caged$Salário.Mensal[dados_caged$Sexo == 1 & dados_caged$Idade > 15 & dados_caged$Idade < 50])
      dados_geral$Caged$AmostrasMulheresFertil <- length(dados_caged$Salário.Mensal[dados_caged$Sexo == 2 & dados_caged$Idade > 15 & dados_caged$Idade < 50])
      dados_geral$Caged$PermanenciaMed <- mean(dados_caged$Tempo.Emprego[dados_caged$Admitidos.Desligados == 2])
      dados_geral$Caged$PermanenciaMin <- min(dados_caged$Tempo.Emprego[dados_caged$Admitidos.Desligados == 2])
      dados_geral$Caged$PermanenciaMax <- max(dados_caged$Tempo.Emprego[dados_caged$Admitidos.Desligados == 2])
      
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      
      # 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")
      
      base_dados_UF_ref <-  dplyr::select(dados_caged, `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(dados_caged, `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(dados_caged, `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(dados_caged, `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])))
      
      shinyjs::hide("filtros")
      shinyjs::hide("filtros_2")
      shinyjs::show("filtros_1")
      atualizar()
      
      sendSweetAlert(session, title = paste0("Filtro realizado com sucesso!"))
      
    }else{
      
      dados_geral$Rais$VL.Remun.Méd.Nom[1] <- input$salario_rais[1]
      dados_geral$Rais$VL.Remun.Méd.Nom[2] <- input$salario_rais[2]
      
      dados_geral$Rais$Idade[1] <- input$idade_rais[1]
      dados_geral$Rais$Idade[2] <- input$idade_rais[2]
      
      dados_geral$Rais$Qtd.Hora.Contr[1] <- input$horas_rais[1]
      dados_geral$Rais$Qtd.Hora.Contr[2] <- input$horas_rais[2]
      
      dados_geral$Rais$Vínculo.Ativo.31.12 <- input$config_geral_vinculo_ativo_rais
      
      dados_geral$Rais$Escolaridade <- input$config_geral_escolaridade_rais
      
      dados_geral$Rais$Raça <- input$config_geral_raca_rais
      
      dados_geral$Rais$Sexo <- input$config_geral_genero_rais
      
      dados_geral$Rais$Tipo.Vínculo <- input$config_geral_tipo_vinculo_rais
      
      dados_geral$Rais$Tamanho.Estabelecimento <- input$config_geral_porte_empresa_rais
      
      dados_geral$Rais$Motivo.Desligamento <- input$config_geral_motivo_desligamento_rais
      
      dados_geral$Rais$Tipo.Admissão <- input$config_geral_tipo_admissao_rais
      
      saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
      
      dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
      
      # # Filtro de salario
      # minimo_salario <- input$salario_rais[1]
      # maximo_salario <- input$salario_rais[2]
      # dados_rais <- subset(dados_rais, Vl.Remun.Média.Nom >= minimo_salario & Vl.Remun.Média.Nom <= maximo_salario)
      # 
      # # Filtro de idade
      # minimo_idade <- input$idade_rais[1]
      # maximo_idade <- input$idade_rais[2]
      # dados_rais <- subset(dados_rais, Idade >= minimo_idade & Idade <= maximo_idade)
      # 
      # # Filtro de horas
      # minimo_horas <- input$horas_rais[1]
      # maximo_horas <- input$horas_rais[2]
      # dados_rais <- subset(dados_rais, Qtd.Hora.Contr >= minimo_horas & Qtd.Hora.Contr <= maximo_horas)
      # 
      # #Filtro vínculo ativo
      # vinculo_ativo <- as.numeric(input$config_geral_vinculo_ativo_rais)
      # dados_rais <- subset(dados_rais, Vínculo.Ativo.31.12%in%vinculo_ativo)
      # 
      # #Filtro raca
      # raca <- as.numeric(input$config_geral_raca_rais)
      # dados_rais <- subset(dados_rais, Raça.Cor%in%raca)
      # 
      # #Filtro genero
      # genero <- as.numeric(input$config_geral_genero_rais)
      # dados_rais <- subset(dados_rais, Sexo.Trabalhador%in%genero)
      # 
      # #Filtro escolaridade
      # escolaridade <- as.numeric(input$config_geral_escolaridade_rais)
      # dados_rais <- subset(dados_rais, Escolaridade.após.2005%in%escolaridade)
      # 
      # #Filtro tipo de vinculo
      # tipo_vinculo <- as.numeric(input$config_geral_tipo_vinculo_rais)
      # dados_rais <- subset(dados_rais, Tipo.Vínculo%in%tipo_vinculo)
      # 
      # #Filtro tipo de admissão
      # tipo_admissao <- as.numeric(input$config_geral_tipo_admissao_rais)
      # dados_rais <- subset(dados_rais, Tipo.Admissão%in%tipo_admissao)
      # 
      # #Filtro motivo de desligamento
      # motivo_desligamento <- as.numeric(input$config_geral_motivo_desligamento_rais)
      # dados_rais <- subset(dados_rais, Motivo.Desligamento%in%motivo_desligamento)
      # 
      # #Filtro porte da empresa
      # porte_empresa <- as.numeric(input$config_geral_porte_empresa_rais)
      # dados_rais <- subset(dados_rais, Tamanho.Estabelecimento%in%porte_empresa)
      # 
      # # #Filtro contrato parcial
      # # contrato_parcial <- as.numeric(input$config_geral_sexo)
      # # dados_rais <- subset(dados_rais, Sexo%in%contrato_parcial)
      # # 
      # # #Filtro contrato intermitente
      # # contrato_intermitente <- as.numeric(input$config_geral_sexo)
      # # dados_rais <- subset(dados_rais, Sexo%in%contrato_intermitente)
      
      print("antes de filtrar")
      
      dados_rais <- subset(dados_rais,
                           Vl.Remun.Média.Nom >= dados_geral$Rais$VL.Remun.Méd.Nom[1] & Vl.Remun.Média.Nom <= dados_geral$Rais$VL.Remun.Méd.Nom[2] &
                             Idade >= dados_geral$Rais$Idade[1] & Idade <= dados_geral$Rais$Idade[2] &
                             Qtd.Hora.Contr >= dados_geral$Rais$Qtd.Hora.Contrat[1] & Qtd.Hora.Contr <= dados_geral$Rais$Qtd.Hora.Contrat[2] &
                             Vínculo.Ativo.31.12 %in% dados_geral$Rais$Vínculo.Ativo.31.12 &
                             Raça.Cor %in% dados_geral$Rais$Raça &
                             Sexo %in% dados_geral$Rais$Sexo &
                             Escolaridade.após.2005 %in% dados_geral$Rais$Escolaridade &
                             Tipo.Vínculo %in% dados_geral$Rais$Tipo.Vínculo &
                             Tipo.Admissão %in% dados_geral$Rais$Tipo.Admissão &
                             Motivo.Desligamento %in% dados_geral$Rais$Motivo.Desligamento &
                             Tamanho.Estabelecimento %in% dados_geral$Rais$Tamanho.Estabelecimento)
      
      print("depois de filtrar")
      
      # Filtro municipios
      municipio <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Município
      municipio <- municipio[-1,]
      
      if(nrow(municipio) > 0){
        
        texto_municipio <- paste0("dados_rais <- subset(dados_rais, substr(Município, 1, nchar(", municipio[1,1], ")) == '", if(nchar(municipio[1,1]) == 7) {substr(municipio[1,1], 1, 6)}else{municipio[1,1]}, "'")
        
        if(nrow(municipio) > 1){
          
          for (xx in 2:nrow(municipio)) {
            
            texto_municipio <- paste0(texto_municipio, " | substr(Município, 1, nchar(", municipio[xx,1], ")) == '", if(nchar(municipio[xx,1]) == 7) {substr(municipio[1,1], 1, 6)}else{municipio[xx,1]}, "'")
            
          }
          
        }
        
        texto_municipio <- paste0(texto_municipio, ")")
        
        eval(parse(text = as.character(texto_municipio)))
        
      }
      
      # sendSweetAlert(session, title = texto_municipio)
      
      # Cria colunas calculadas com os dados gerais
      dados_rais <- dados_rais %>% 
        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
      dados_rais <- dados_rais %>% 
        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
      dados_rais <- dados_rais %>% 
        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
      dados_rais <- dados_rais %>% 
        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
      dados_rais <- dados_rais %>% 
        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()
      
      saveRDS(dados_rais, file = paste0("rais_filtrado2_", as.character(info[1, 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")
      
      base_dados_UF_ref <-  dplyr::select(dados_rais, `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(dados_rais, `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(dados_rais, `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(dados_rais, `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])))
      
      shinyjs::hide("filtros")
      shinyjs::hide("filtros_2")
      shinyjs::show("filtros_1")
      
      atualizar()
      
      sendSweetAlert(session, title = paste0("Filtro realizado com sucesso!"))
      
    }
    
    shinybusy::remove_modal_spinner()
    
  })
  
  observeEvent(input$gera_resultado_rais, {
    
    shinybusy::show_modal_spinner()
    
    dados_geral <- readRDS(file = paste0("dados_", as.character(info[1, 1])))
    
    dados_geral$Rais$VL.Remun.Méd.Nom[1] <- input$salario_rais[1]
    dados_geral$Rais$VL.Remun.Méd.Nom[2] <- input$salario_rais[2]
    
    dados_geral$Rais$Idade[1] <- input$idade_rais[1]
    dados_geral$Rais$Idade[2] <- input$idade_rais[2]
    
    dados_geral$Rais$Qtd.Hora.Contr[1] <- input$horas_rais[1]
    dados_geral$Rais$Qtd.Hora.Contr[2] <- input$horas_rais[2]
    
    dados_geral$Rais$Vínculo.Ativo.31.12 <- input$config_geral_vinculo_ativo_rais
    
    dados_geral$Rais$Escolaridade <- input$config_geral_escolaridade_rais
    
    dados_geral$Rais$Raça <- input$config_geral_raca_rais
    
    dados_geral$Rais$Sexo <- input$config_geral_genero_rais
    
    dados_geral$Rais$Tipo.Vínculo <- input$config_geral_tipo_vinculo_rais
    
    dados_geral$Rais$Tamanho.Estabelecimento <- input$config_geral_porte_empresa_rais
    
    dados_geral$Rais$Motivo.Desligamento <- input$config_geral_motivo_desligamento_rais
    
    dados_geral$Rais$Tipo.Admissão <- input$config_geral_tipo_admissao_rais
    
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    
    dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
    
    # # Filtro de salario
    # minimo_salario <- input$salario_rais[1]
    # maximo_salario <- input$salario_rais[2]
    # dados_rais <- subset(dados_rais, Vl.Remun.Média.Nom >= minimo_salario & Vl.Remun.Média.Nom <= maximo_salario)
    # 
    # # Filtro de idade
    # minimo_idade <- input$idade_rais[1]
    # maximo_idade <- input$idade_rais[2]
    # dados_rais <- subset(dados_rais, Idade >= minimo_idade & Idade <= maximo_idade)
    # 
    # # Filtro de horas
    # minimo_horas <- input$horas_rais[1]
    # maximo_horas <- input$horas_rais[2]
    # dados_rais <- subset(dados_rais, Qtd.Hora.Contr >= minimo_horas & Qtd.Hora.Contr <= maximo_horas)
    # 
    # #Filtro vínculo ativo
    # vinculo_ativo <- as.numeric(input$config_geral_vinculo_ativo_rais)
    # dados_rais <- subset(dados_rais, Vínculo.Ativo.31.12%in%vinculo_ativo)
    # 
    # #Filtro raca
    # raca <- as.numeric(input$config_geral_raca_rais)
    # dados_rais <- subset(dados_rais, Raça.Cor%in%raca)
    # 
    # #Filtro genero
    # genero <- as.numeric(input$config_geral_genero_rais)
    # dados_rais <- subset(dados_rais, Sexo.Trabalhador%in%genero)
    # 
    # #Filtro escolaridade
    # escolaridade <- as.numeric(input$config_geral_escolaridade_rais)
    # dados_rais <- subset(dados_rais, Escolaridade.após.2005%in%escolaridade)
    # 
    # #Filtro tipo de vinculo
    # tipo_vinculo <- as.numeric(input$config_geral_tipo_vinculo_rais)
    # dados_rais <- subset(dados_rais, Tipo.Vínculo%in%tipo_vinculo)
    # 
    # #Filtro tipo de admissão
    # tipo_admissao <- as.numeric(input$config_geral_tipo_admissao_rais)
    # dados_rais <- subset(dados_rais, Tipo.Admissão%in%tipo_admissao)
    # 
    # #Filtro motivo de desligamento
    # motivo_desligamento <- as.numeric(input$config_geral_motivo_desligamento_rais)
    # dados_rais <- subset(dados_rais, Motivo.Desligamento%in%motivo_desligamento)
    # 
    # #Filtro porte da empresa
    # porte_empresa <- as.numeric(input$config_geral_porte_empresa_rais)
    # dados_rais <- subset(dados_rais, Tamanho.Estabelecimento%in%porte_empresa)
    # 
    # # #Filtro contrato parcial
    # # contrato_parcial <- as.numeric(input$config_geral_sexo)
    # # dados_rais <- subset(dados_rais, Sexo%in%contrato_parcial)
    # # 
    # # #Filtro contrato intermitente
    # # contrato_intermitente <- as.numeric(input$config_geral_sexo)
    # # dados_rais <- subset(dados_rais, Sexo%in%contrato_intermitente)
    
    dados_rais <- subset(dados_rais,
                         Vl.Remun.Média.Nom >= dados_geral$Rais$VL.Remun.Méd.Nom[1] & Vl.Remun.Média.Nom <= dados_geral$Rais$VL.Remun.Méd.Nom[2] &
                           Idade >= dados_geral$Rais$Idade[1] & Idade <= dados_geral$Rais$Idade[2] &
                           Qtd.Hora.Contr >= dados_geral$Rais$Qtd.Hora.Contr[1] & Qtd.Hora.Contr <= dados_geral$Rais$Qtd.Hora.Contr[2] &
                           Vínculo.Ativo.31.12 %in% dados_geral$Rais$Vínculo.Ativo.31.12 &
                           Raça.Cor %in% dados_geral$Rais$Raça &
                           Sexo.Trabalhador %in% dados_geral$Rais$Sexo &
                           Escolaridade.após.2005 %in% dados_geral$Rais$Escolaridade &
                           Tipo.Vínculo %in% dados_geral$Rais$Tipo.Vínculo &
                           Tipo.Admissão %in% dados_geral$Rais$Tipo.Admissão &
                           Motivo.Desligamento %in% dados_geral$Rais$Motivo.Desligamento &
                           Tamanho.Estabelecimento %in% dados_geral$Rais$Tamanho.Estabelecimento)
    
    # Filtro municipios
    municipio <- readRDS(file = paste0("dados_", as.character(info[1, 1])))$Rais$Município
    municipio <- municipio[-1,]
    
    if(nrow(municipio) > 0){
      
      texto_municipio <- paste0("dados_rais <- subset(dados_rais, substr(Município, 1, nchar(", municipio[1,1], ")) == '", if(nchar(municipio[1,1]) == 7) {substr(municipio[1,1], 1, 6)}else{municipio[1,1]}, "'")
      
      if(nrow(municipio) > 1){
        
        for (xx in 2:nrow(municipio)) {
          
          texto_municipio <- paste0(texto_municipio, " | substr(Município, 1, nchar(", municipio[xx,1], ")) == '", if(nchar(municipio[xx,1]) == 7) {substr(municipio[1,1], 1, 6)}else{municipio[xx,1]}, "'")
          
        }
        
      }
      
      texto_municipio <- paste0(texto_municipio, ")")
      
      eval(parse(text = as.character(texto_municipio)))
      
    }
    
    # sendSweetAlert(session, title = texto_municipio)
    
    # Cria colunas calculadas com os dados gerais
    dados_rais <- dados_rais %>% 
      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
    dados_rais <- dados_rais %>% 
      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
    dados_rais <- dados_rais %>% 
      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
    dados_rais <- dados_rais %>% 
      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
    dados_rais <- dados_rais %>% 
      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()
    
    saveRDS(dados_rais, file = paste0("rais_filtrado2_", as.character(info[1, 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)
    
    dados_geral$Rais$RemuneracaoMed <- mean(dados_rais$Vl.Remun.Média.Nom)
    dados_geral$Rais$RemuneracaoMin <- min(dados_rais$Vl.Remun.Média.Nom)
    dados_geral$Rais$RemuneracaoMax <- max(dados_rais$Vl.Remun.Média.Nom)
    dados_geral$Rais$RemuneracaoSd <- sd(dados_rais$Vl.Remun.Média.Nom)
    dados_geral$Rais$Remuneracao1q <- as.numeric(quantile(dados_rais$Vl.Remun.Média.Nom, probs = 0.25, type = 2))
    dados_geral$Rais$Remuneracao2q <- as.numeric(quantile(dados_rais$Vl.Remun.Média.Nom, probs = 0.50, type = 2))
    dados_geral$Rais$Remuneracao3q <- as.numeric(quantile(dados_rais$Vl.Remun.Média.Nom, probs = 0.75, type = 2))
    dados_geral$Rais$Remuneracao4q <- as.numeric(quantile(dados_rais$Vl.Remun.Média.Nom, probs = 1.00, type = 2))
    dados_geral$Rais$RegistrosTotal <- nrow(dados_rais)
    dados_geral$Rais$RegistrosEntrada <- length(dados_rais$Vl.Remun.Média.Nom[dados_rais$Vínculo.Ativo.31.12 == 1])
    dados_geral$Rais$RegistrosSaida <- length(dados_rais$Vl.Remun.Média.Nom[dados_rais$Vínculo.Ativo.31.12 == 0])
    dados_geral$Rais$RegistrosHomens <- length(dados_rais$Vl.Remun.Média.Nom[dados_rais$Sexo.Trabalhador == 1])
    dados_geral$Rais$RegistrosMulheres <- length(dados_rais$Vl.Remun.Média.Nom[dados_rais$Sexo.Trabalhador == 2])
    dados_geral$Rais$RegistrosHomensFertil <- length(dados_rais$Vl.Remun.Média.Nom[dados_rais$Sexo.Trabalhador == 1 & dados_rais$Idade > 15 & dados_rais$Idade < 50])
    dados_geral$Rais$RegistrosMulheresFertil <- length(dados_rais$Vl.Remun.Média.Nom[dados_rais$Sexo.Trabalhador == 2 & dados_rais$Idade > 15 & dados_rais$Idade < 50])
    dados_geral$Rais$PermanenciaMed <- mean(dados_rais$Tempo.Emprego[dados_rais$Vínculo.Ativo.31.12 == 1])
    dados_geral$Rais$PermanenciaMin <- min(dados_rais$Tempo.Emprego[dados_rais$Vínculo.Ativo.31.12 == 1])
    dados_geral$Rais$PermanenciaMax <- max(dados_rais$Tempo.Emprego[dados_rais$Vínculo.Ativo.31.12 == 1])
    
    saveRDS(dados_geral, file = paste0("dados_", as.character(info[1, 1])))
    
    # 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")
    
    base_dados_UF_ref <-  dplyr::select(dados_rais, `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(dados_rais, `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(dados_rais, `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(dados_rais, `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])))
    
    shinyjs::hide("filtros_rais")
    shinyjs::hide("filtros_2")
    shinyjs::show("filtros_1")
    
    atualizar()
    
    sendSweetAlert(session, title = paste0("Filtro realizado com sucesso!"))
    
    
    
    shinybusy::remove_modal_spinner()
    
  })
  
  # Atualiza os sliderinput pelo valor do textinput
  observeEvent(input$salario_inicio, {
    
    if(stringr::str_replace(input$salario_inicio, ",", ".") != ""){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        
        lista_salarios <- dados_caged$Salário.Mensal %>% unique()
        
        if(as.numeric(stringr::str_replace(input$salario_inicio, ",", ".")) != as.numeric(input$salario[1])){
          
          updateSliderInput(session, "salario", min = min(lista_salarios), max = max(lista_salarios), value = c(as.numeric(stringr::str_replace(input$salario_inicio, ",", ".")), input$salario[2]), step = 0.01)
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$salario_rais_inicio, {
    
    if(stringr::str_replace(input$salario_rais_inicio, ",", ".") != ""){
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        
        lista_salarios <- dados_rais$Vl.Remun.Média.Nom %>% unique()
        
        if(as.numeric(stringr::str_replace(input$salario_rais_inicio, ",", ".")) != as.numeric(input$salario_rais[1])){
          
          updateSliderInput(session, "salario_rais", min = min(lista_salarios), max = max(lista_salarios), value = c(as.numeric(stringr::str_replace(input$salario_rais_inicio, ",", ".")), input$salario_rais[2]), step = 0.01)
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$salario_fim, {
    
    if(stringr::str_replace(input$salario_fim, ",", ".") != ""){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        
        lista_salarios <- dados_caged$Salário.Mensal %>% unique()
        
        if(as.numeric(stringr::str_replace(input$salario_fim, ",", ".")) != as.numeric(input$salario[2])){
          
          updateSliderInput(session, "salario", min = min(lista_salarios), max = max(lista_salarios), value = c(input$salario[1], as.numeric(stringr::str_replace(input$salario_fim, ",", "."))), step = 0.01)
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$salario_rais_fim, {
    
    if(stringr::str_replace(input$salario_rais_fim, ",", ".") != ""){
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        
        lista_salarios <- dados_rais$Vl.Remun.Média.Nom %>% unique()
        
        if(as.numeric(stringr::str_replace(input$salario_rais_fim, ",", ".")) != as.numeric(input$salario_rais[2])){
          
          updateSliderInput(session, "salario_rais", min = min(lista_salarios), max = max(lista_salarios), value = c(input$salario_rais[1], as.numeric(stringr::str_replace(input$salario_rais_fim, ",", "."))), step = 0.01)
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$idade_inicio, {
    
    if(input$idade_inicio != ""){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        
        lista_idade <- dados_caged$Idade %>% unique()
        
        if(as.numeric(input$idade_inicio) != as.numeric(input$idade[1])){
          
          updateSliderInput(session, "idade", min = min(lista_idade), max = max(lista_idade), value = c(as.numeric(input$idade_inicio), input$idade[2]))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$idade_rais_inicio, {
    
    if(input$idade_rais_inicio != ""){
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        
        lista_idade <- dados_rais$Idade %>% unique()
        
        if(as.numeric(input$idade_rais_inicio) != as.numeric(input$idade_rais[1])){
          
          updateSliderInput(session, "idade_rais", min = min(lista_idade), max = max(lista_idade), value = c(as.numeric(input$idade_rais_inicio), input$idade_rais[2]))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$idade_fim, {
    
    if(input$idade_fim != ""){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        
        lista_idade <- dados_caged$Idade %>% unique()
        
        if(as.numeric(input$idade_fim) != as.numeric(input$idade[2])){
          
          updateSliderInput(session, "idade", min = min(lista_idade), max = max(lista_idade), value = c(input$idade[1], as.numeric(input$idade_fim)))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$idade_rais_fim, {
    
    if(input$idade_rais_fim != ""){
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        
        lista_idade <- dados_rais$Idade %>% unique()
        
        if(as.numeric(input$idade_rais_fim) != as.numeric(input$idade_rais[2])){
          
          updateSliderInput(session, "idade_rais", min = min(lista_idade), max = max(lista_idade), value = c(input$idade_rais[1], input$idade_rais_fim))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$horas_inicio, {
    
    if(input$horas_inicio != ""){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        
        lista_horas <- dados_caged$Qtd.Hora.Contrat %>% unique()
        
        if(as.numeric(input$horas_inicio) != as.numeric(input$horas[1])){
          
          updateSliderInput(session, "horas", min = min(lista_horas), max = max(lista_horas), value = c(as.numeric(input$horas_inicio), input$horas[2]))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$horas_rais_inicio, {
    
    if(input$horas_rais_inicio != ""){
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        
        lista_horas <- dados_rais$Qtd.Hora.Contr %>% unique()
        
        if(as.numeric(input$horas_rais_inicio) != as.numeric(input$horas_rais[1])){
          
          updateSliderInput(session, "horas_rais", min = min(lista_horas), max = max(lista_horas), value = c(as.numeric(input$horas_rais_inicio), input$horas_rais[2]))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$horas_fim, {
    
    if(input$horas_fim != ""){
      
      if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
        
        dados_caged <- readRDS(paste0("caged_filtrado_", as.character(info[1, 1])))
        
        lista_horas <- dados_caged$Qtd.Hora.Contrat %>% unique()
        
        if(as.numeric(input$horas_fim) != as.numeric(input$horas[2])){
          
          updateSliderInput(session, "horas", min = min(lista_horas), max = max(lista_horas), value = c(input$horas[1], as.numeric(input$horas_fim)))
          
        } 
        
      }
      
    }
    
  })
  
  observeEvent(input$horas_rais_fim, {
    
    if(input$horas_rais_fim != ""){
      
      if(file.exists(paste0("rais_filtrado_", as.character(info[1, 1])))){
        
        dados_rais <- readRDS(paste0("rais_filtrado_", as.character(info[1, 1])))
        
        lista_horas <- dados_rais$Qtd.Hora.Contr %>% unique()
        
        if(as.numeric(input$horas_rais_fim) != as.numeric(input$horas_rais[2])){
          
          updateSliderInput(session, "horas_rais", min = min(lista_horas), max = max(lista_horas), value = c(input$horas_rais[1], input$horas_rais_fim))
          
        } 
        
      }
      
    }
    
  })
  
  # Atualiza os textinput pelo valor do sliderinput
  # observeEvent(input$salario, {
  #     
  #     if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
  #       
  #       if(input$salario_inicio != as.numeric(input$salario[1])){
  #         
  #         updateTextInput(session, "salario_inicio", value = input$salario[1])
  #         
  #       }
  #       
  #       if(input$salario_fim != as.numeric(input$salario[2])){
  #         
  #         updateTextInput(session, "salario_fim", value = input$salario[2])
  #         
  #       }
  #     
  #   }
  #   
  # })
  
  # observeEvent(input$idade, {
  #   
  #   if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
  #     
  #     if(input$idade_inicio != as.numeric(input$idade[1])){
  #       
  #       updateTextInput(session, "idade_inicio", value = input$idade[1])
  #       
  #     }
  #     
  #     if(input$idade_fim != as.numeric(input$idade[2])){
  #       
  #       updateTextInput(session, "idade_fim", value = input$idade[2])
  #       
  #     }
  #     
  #   }
  #   
  # })
  
  # observeEvent(input$horas, {
  #   
  #   if(file.exists(paste0("caged_filtrado_", as.character(info[1, 1])))){
  #     
  #     if(input$horas_inicio != as.numeric(input$horas[1])){
  #       
  #       updateTextInput(session, "horas_inicio", value = input$horas[1])
  #       
  #     }
  #     
  #     if(input$horas_fim != as.numeric(input$horas[2])){
  #       
  #       updateTextInput(session, "horas_fim", value = input$horas[2])
  #       
  #     }
  #     
  #   }
  #   
  # })
  
  output$download_dados_caged <- downloadHandler(
    
    filename = function() {
      
      nome_arquivo <- "dados_caged.xlsx"
      
    },
    content = function(file) {
      
      dados_caged <- readRDS(paste0("caged_filtrado2_", as.character(info[1, 1])))
      
      openxlsx::write.xlsx(dados_caged, file)
      
      
    }
    
  )
  
  
}
    
## To be copied in the UI
# mod_resultados_ui("resultados_ui_1")
    
## To be copied in the server
# callModule(mod_resultados_server, "resultados_ui_1")
 
leandro-vento/projeto documentation built on April 10, 2021, 6:43 p.m.