public async Task <bool> Executar(MensagemRabbit mensagem)
        {
            var filtro            = UtilsDto.ObterFiltroParametrosIniciais(mensagem);
            var ultimaAtualizacao = filtro != null ? await mediator.Send(new ObterDataUltimaExecucaoPorTipoQuery(ExecucaoTipo.FuncionarioAdicionar)) : new DateTime(filtro.AnoLetivo, 1, 1);

            var paginacao = new Paginacao(0, 0);
            var parametrosCargaInicialDto = filtro != null ? new ParametrosCargaInicialDto(filtro.TiposUes, filtro.Ues, filtro.Turmas, filtro.AnoLetivo) :
                                            await mediator.Send(new ObterParametrosCargaIncialPorAnoQuery(DateTime.Today.Year));

            var funcionariosParaIncluirGoogle = await mediator.Send(new ObterFuncionariosParaIncluirGoogleQuery(ultimaAtualizacao, paginacao, string.Empty, parametrosCargaInicialDto));

            foreach (var funcionarioParaIncluirGoogle in funcionariosParaIncluirGoogle.Items)
            {
                try
                {
                    var publicarFuncionario = await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaFuncionarioIncluir, RotasRabbit.FilaFuncionarioIncluir, funcionarioParaIncluirGoogle));

                    if (!publicarFuncionario)
                    {
                        await IncluirFuncionarioComErroAsync(funcionarioParaIncluirGoogle, ObterMensagemDeErro(funcionarioParaIncluirGoogle.Rf));
                    }
                }
                catch (Exception ex)
                {
                    await IncluirFuncionarioComErroAsync(funcionarioParaIncluirGoogle, ObterMensagemDeErro(funcionarioParaIncluirGoogle.Rf, ex));
                }
            }

            await mediator.Send(new AtualizaExecucaoControleCommand(ExecucaoTipo.FuncionarioAdicionar, DateTime.Today));

            return(true);
        }
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            try
            {
                var filtroCargaInicial = UtilsDto.ObterFiltroParametrosIniciais(mensagemRabbit);
                var usuarioErros       = await mediator.Send(new ObtemUsuariosErrosPorTipoQuery(UsuarioTipo.Funcionario));

                if (!usuarioErros?.Any() ?? true)
                {
                    return(true);
                }

                foreach (var usuarioErro in usuarioErros)
                {
                    var filtroFuncionarioErro = new FiltroUsuarioErroDto(usuarioErro, filtroCargaInicial);
                    var publicarFuncionario   = await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaFuncionarioErroTratar, RotasRabbit.FilaFuncionarioErroTratar, filtroFuncionarioErro));

                    if (!publicarFuncionario)
                    {
                        SentrySdk.CaptureMessage($"Não foi possível inserir o tratamento de erro do funcionário RF{usuarioErro.UsuarioId} na fila.");
                        continue;
                    }

                    await ExcluirUsuarioErroAsync(usuarioErro);
                }

                return(true);
            }
            catch (Exception ex)
            {
                SentrySdk.CaptureException(ex);
            }

            return(false);
        }