예제 #1
0
        public void Processar(dto.UsuarioParaProcessar usuarioParaProcessar)
        {
            try
            {
                var usuarioId = usuarioParaProcessar.UsuarioId;

                pontuacaoService.ProcessarIndividual(usuarioId);

                pontuacaoService.ProcessarTotal(usuarioId);

                var classificacao = repositorio.Obter(usuarioId);

                nivelService.Processar(usuarioId, classificacao.Pontos, classificacao.EmpresaId);

                saldoService.Processar(usuarioId);

                enfileirador.EnfileirarParaPosClassificador(usuarioParaProcessar);
            }
            catch (Exception ex)
            {
                if (usuarioParaProcessar.Tentativa == 10)
                {
                    //## TODO
                    throw ex;
                }
                else
                {
                    usuarioParaProcessar.Tentativa++;
                    enfileirador.EnfileirarParaClassificador(usuarioParaProcessar);
                }
            }
        }
예제 #2
0
        public void Publicar(coredto.UsuarioParaProcessar usuarioParaProcessar)
        {
            var responsePerfil = perfilClient.Obter(usuarioParaProcessar.UsuarioId, coreenums.RedeSocialEnum.twitch);

            if (responsePerfil.Success)
            {
                var perfil = responsePerfil.Item;

                var responseTwitchInfo = empresaClient.ObterInfoTwitch(perfil.EmpresaId);
                responseTwitchInfo.ThrownIfError();

                var twitchInfo = responseTwitchInfo.Item;

                var claims = GerarClaims(perfil, twitchInfo);

                var token = jwt.Gerar(twitchInfo.ExtensionSecretId, claims);

                var pontuacao = ObterPontuacaoTotal(usuarioParaProcessar.UsuarioId);

                var message = GerarMessage(pontuacao, perfil);

                var headers = GerarHeader(twitchInfo, token);

                var url = GerarUrl(twitchInfo);

                var response = corehelper.WebRequestHelper.Post(url, message, headers);

                response.ThrownIfError();
            }
        }
예제 #3
0
        public void Processar(coredto.UsuarioParaProcessar usuarioParaProcessar)
        {
            try
            {
                var tasks = new List <Task>();

                var tarefas = new List <ITarefaPosClassificador>();
                tarefas.Add(new tarefas.Firebase(rtdbAtividadeClient));
                tarefas.Add(new tarefas.TwitchWhisper(notificadorClient));

                foreach (var tarefa in tarefas)
                {
                    tasks.Add(Task.Run(() =>
                    {
                        tarefa.Executar(usuarioParaProcessar);
                    }));
                }

                Task.WaitAll(tasks.ToArray());
            }
            catch (Exception ex)
            {
                //## TODO log
            }
        }
예제 #4
0
 public void Executar(coredto.UsuarioParaProcessar usuarioParaProcessar)
 {
     rtdbAtividadeClient.RegistrarClassificacao(usuarioParaProcessar.UsuarioId);
 }
 public void TwitchPubSub(coredto.UsuarioParaProcessar usuarioParaProcessar)
 {
     enfileirador.EnfileirarParaNotificadorTwichPubSub(usuarioParaProcessar);
 }