private async Task InserirFuncionarioIndiretoGoogleAsync(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle)
        {
            try
            {
                var funcionarioSincronizado = await mediator.Send(new InserirFuncionarioIndiretoGoogleCommand(funcionarioIndiretoGoogle));

                if (!funcionarioSincronizado)
                {
                    await mediator.Send(new IncluirUsuarioErroCommand(null, funcionarioIndiretoGoogle?.Email,
                                                                      $"Não foi possível incluir o funcionário no Google Classroom. {funcionarioIndiretoGoogle}", UsuarioTipo.Funcionario, ExecucaoTipo.FuncionarioAdicionar));

                    return;
                }

                await InserirFuncionarioIndiretoAsync(funcionarioIndiretoGoogle);
            }
            catch (GoogleApiException gEx)
            {
                if (gEx.EhErroDeDuplicidade())
                {
                    await mediator.Send(new AtualizarFuncionarioIndiretoGoogleCommand(funcionarioIndiretoGoogle));
                    await InserirFuncionarioIndiretoAsync(funcionarioIndiretoGoogle);
                }
                else
                {
                    throw;
                }
            }
        }
Esempio n. 2
0
        public void Valida_Tratamento_Da_Formatacao_De_Nomes_Passandos_Os_Resultados_Esperados(string nome, string sobrenomeEsperado, string nomeEsperado)
        {
            // Arrange
            var funcionarioIndireto = new FuncionarioIndiretoGoogle("28541640086", nome, "email", "organizationPath");

            // Assert
            Assert.NotNull(funcionarioIndireto);
            Assert.Equal(sobrenomeEsperado, funcionarioIndireto.Sobrenome);
            Assert.Equal(nomeEsperado, funcionarioIndireto.Nome);
        }
        private async Task AtualizarFuncionarioNoGoogle(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle, DirectoryService diretorioClassroom)
        {
            var usuarioParaIncluirNoGoogle = new User
            {
                Name = new UserName {
                    FamilyName = funcionarioIndiretoGoogle.Sobrenome, GivenName = funcionarioIndiretoGoogle.PrimeiroNome, FullName = funcionarioIndiretoGoogle.Nome
                },
                OrgUnitPath = funcionarioIndiretoGoogle.OrganizationPath,
                Suspended   = false
            };

            var requestPatch = diretorioClassroom.Users.Patch(usuarioParaIncluirNoGoogle, funcionarioIndiretoGoogle.Email);
            await requestPatch.ExecuteAsync();
        }
        private async Task IncluirFuncionarioIndiretoNoGoogle(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle, DirectoryService diretorioClassroom)
        {
            var usuarioParaIncluirNoGoogle = new User
            {
                Name = new UserName {
                    FamilyName = funcionarioIndiretoGoogle.Sobrenome, GivenName = funcionarioIndiretoGoogle.PrimeiroNome, FullName = funcionarioIndiretoGoogle.Nome
                },
                PrimaryEmail = funcionarioIndiretoGoogle.Email,
                OrgUnitPath  = funcionarioIndiretoGoogle.OrganizationPath,
                Password     = configuration["GoogleClassroomConfig:PasswordPadraoParaUsuarioNovo"],
                ChangePasswordAtNextLogin = true
            };

            var requestCreate   = diretorioClassroom.Users.Insert(usuarioParaIncluirNoGoogle);
            var usuarioIncluido = await requestCreate.ExecuteAsync();

            if (usuarioIncluido is null)
            {
                throw new NegocioException("Não foi possível obter o funcionário indireto incluído no Google Classroom.");
            }

            funcionarioIndiretoGoogle.GoogleClassroomId = usuarioIncluido.Id;
        }
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            if (mensagemRabbit.Mensagem is null)
            {
                throw new NegocioException("Não foi possível incluir o funcionário indireto. A mensagem enviada é inválida.");
            }

            var funcionarioIndiretoParaIncluir = JsonConvert.DeserializeObject <FuncionarioIndiretoEol>(mensagemRabbit.Mensagem.ToString());

            if (funcionarioIndiretoParaIncluir is null)
            {
                return(true);
            }

            try
            {
                var funcionarioIndiretoGoogle = new FuncionarioIndiretoGoogle(funcionarioIndiretoParaIncluir.Cpf, funcionarioIndiretoParaIncluir.Nome, funcionarioIndiretoParaIncluir.Email, funcionarioIndiretoParaIncluir.OrganizationPath);

                var funcionarioJaIncluido = await mediator.Send(new ExisteFuncionarioIndiretoPorCpfQuery(funcionarioIndiretoParaIncluir.Cpf));

                if (funcionarioJaIncluido)
                {
                    return(true);
                }

                await InserirFuncionarioIndiretoGoogleAsync(funcionarioIndiretoGoogle);

                return(true);
            }
            catch (Exception ex)
            {
                await mediator.Send(new IncluirUsuarioErroCommand(null, funcionarioIndiretoParaIncluir?.Email,
                                                                  $"ex.: {ex.Message} <-> msg rabbit: {mensagemRabbit}. StackTrace:{ex.StackTrace}.", UsuarioTipo.Funcionario, ExecucaoTipo.FuncionarioAdicionar));

                throw;
            }
        }
 private async Task InserirFuncionarioIndiretoAsync(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle)
 {
     funcionarioIndiretoGoogle.Indice = await mediator.Send(new IncluirUsuarioCommand(funcionarioIndiretoGoogle));
 }
Esempio n. 7
0
 public InserirFuncionarioIndiretoGoogleCommand(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle)
 {
     FuncionarioIndiretoGoogle = funcionarioIndiretoGoogle;
 }
 public AtualizarFuncionarioIndiretoGoogleCommand(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle)
 {
     FuncionarioIndiretoGoogle = funcionarioIndiretoGoogle;
 }
 public IncluirUsuarioCommand(FuncionarioIndiretoGoogle funcionarioIndiretoGoogle)
     : this(usuarioGoogle : funcionarioIndiretoGoogle)
 {
     Cpf = funcionarioIndiretoGoogle.Cpf;
 }