예제 #1
0
        public void VerificarStatusCampanha()
        {
            Console.WriteLine(Environment.GetEnvironmentVariable("CAMPANHA"));
            var id             = Guid.Parse(Environment.GetEnvironmentVariable("CAMPANHA"));
            var dadosCampanha  = _campanhaWorkflowService.Find(a => a.CampanhaId.Equals(id));
            var workflowStatus = dadosCampanha.Status;

            switch (workflowStatus)
            {
            case (int)WorkflowStatus.WorkflowManager:

                _atualizarStatus.AtualizarStatusApi(id, (int)WorkflowStatus.MessageBuilder);
                _dockerHelper.RunAsync(id, "nyom.messagebuilder");
                Console.WriteLine("Status Atualizado, iniciando MessageBuilder");
                break;

            case (int)WorkflowStatus.MessageBuilder:
            case (int)WorkflowStatus.QueueBuilder:
            case (int)WorkflowStatus.PushSender:
            case (int)WorkflowStatus.LoggingCleanup:
                break;

            case (int)WorkflowStatus.MessageBuilderCompleted:
                Console.WriteLine("Entrou aqui 2");
                _atualizarStatus.AtualizarStatusApi(id, (int)WorkflowStatus.QueueBuilder);
                _dockerHelper.RunAsync(id, "nyom.queuebuilder");
                Console.WriteLine("Status Atualizado, iniciando QueuBuilder");
                break;

            case (int)WorkflowStatus.QueueBuilderCompleted:
                _atualizarStatus.AtualizarStatusApi(id, (int)WorkflowStatus.PushSender);
                _dockerHelper.RunAsync(id, "nyom.pushsender");
                Console.WriteLine("Status Atualizado, iniciando PushSender");
                break;

            case (int)WorkflowStatus.PushSenderCompleted:
                _atualizarStatus.AtualizarStatusApi(id, (int)WorkflowStatus.Finished);
                Console.WriteLine("Status Atualizado, Finalizado");
                break;

            case (int)WorkflowStatus.LoggingCleanupCompleted:
                _atualizarStatus.AtualizarStatusApi(id, (int)WorkflowStatus.Finished);
                break;

            case (int)WorkflowStatus.Finished:
                break;

            case (int)WorkflowStatus.Error:
                break;

            case (int)WorkflowStatus.Blocked:
                break;

            case (int)WorkflowStatus.Cancelled:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(workflowStatus), workflowStatus, null);
            }
        }
예제 #2
0
        public void MontarMensagens(string campanhaId)
        {
            //var id = new Guid(campanhaId);
            var id            = new Guid(campanhaId);
            var dadosCampanha = _campanhaCrmService.Get(id);

            if (dadosCampanha != null)
            {
                var dadosTemplate = _templateservice.Get(dadosCampanha.TemplateId);
                if (dadosTemplate == null)
                {
                    Console.WriteLine("Nenhum template foi encontrado");
                    Console.ReadKey();
                    return;
                }

                var listaPessoas = _pessoaService.All();
                if (listaPessoas == null)
                {
                    Console.WriteLine("Nenhuma lista de pessoas foi encontrada");
                    Console.ReadKey();
                    return;
                }

                SalvarMensagens(listaPessoas, dadosCampanha, dadosTemplate);
                _atualizarStatus.AtualizarStatusApi(dadosCampanha.CampanhaId, (int)WorkflowStatus.MessageBuilderCompleted);
            }
            else
            {
                Console.WriteLine("Nenhuma campanha foi encontrada");
                Console.ReadKey();
            }
        }
예제 #3
0
        public void Start()
        {
            Console.WriteLine(Environment.GetEnvironmentVariable("CAMPANHA"));
            var enfileirar = _enfileirarMensagens.EnfileirarMensagensPush(Guid.Parse("4063DEBE-6EA0-4C54-B36E-2C65D0D6D060"));

            _atualizarStatus.AtualizarStatusApi(Guid.Parse("4063DEBE-6EA0-4C54-B36E-2C65D0D6D060"), (int)WorkflowStatus.QueueBuilderCompleted);
        }
예제 #4
0
        public void PushMessages(Guid campanha)
        {
            var enviar = _enviarMensagensPush.Envia(campanha.ToString());

            if (enviar)
            {
                _atualizarStatus.AtualizarStatusApi(campanha, (int)WorkflowStatus.PushSenderCompleted);
            }
        }
예제 #5
0
        public void BuscarCampanhas(object stateInfo)
        {
            Console.WriteLine("Bem vindo ao Nyom ");
            var dadosCampanha = _campanhaWorkflowService.FindAll(a => a.Status.Equals(Convert.ToInt16(WorkflowStatus.Ready)))
                                .OrderBy(a => a.DataCriacao).FirstOrDefault();

            if (dadosCampanha == null)
            {
                Console.WriteLine("Não há campanhas");
                return;
            }

            _atualizarStatus.AtualizarStatusApi(dadosCampanha.CampanhaId, (int)WorkflowStatus.WorkflowManager);
            _dockerHelper.RunAsync(dadosCampanha.CampanhaId, "nyom.workflow.manager");
            Console.WriteLine("Campanha encontrada, iniciando Workflow Manager");
        }
        public bool Envia(string campanha)
        {
            try
            {
                var factory = new ConnectionFactory {
                    HostName = "localhost", Port = 5672, UserName = "******", Password = "******"
                };
                using (var connection = factory.CreateConnection())
                    using (var channel = connection.CreateModel())
                    {
                        channel.QueueDeclare(queue: campanha, durable: true, exclusive: false, autoDelete: false, arguments: null);
                        channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
                        Console.WriteLine(" [*] Waiting for messages.");

                        var consumer = new EventingBasicConsumer(channel);
                        consumer.Received += (model, ea) =>
                        {
                            var body    = ea.Body;
                            var message = Encoding.UTF8.GetString(body);
                            Console.WriteLine(" [x] Received {0}", message);

                            var dots = message.Split('.').Length - 1;
                            Thread.Sleep(dots * 1000);

                            Console.WriteLine(" [x] Done");

                            channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                        };
                        channel.BasicConsume(queue: campanha, autoAck: false, consumer: consumer);
                        Console.WriteLine(" Press [enter] to exit.");
                        Console.ReadLine();
                    }
                _atualizarStatus.AtualizarStatusApi(Guid.Parse(campanha), (int)WorkflowStatus.PushSenderCompleted);
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }
        }