Beispiel #1
0
        private void Processar(CoordinatorParkMessage item)
        {
            const string actorPrefix = "ValidarPassagemPendenteParkActor_{0}";
            var          conveniados = item.PassagensPendentesEstacionamentos.Select(x => x.Conveniado.CodigoProtocolo).Distinct();

            foreach (var conveniado in conveniados)
            {
                _actors.CreateIfNotExists <ValidarPassagemPendenteParkActor>(Context, string.Format(actorPrefix, conveniado));
            }

            //Iniciando o processamento pelo fluxo de passagem...
            item.PassagensPendentesEstacionamentos.ForEach(i =>
            {
                _actors[string.Format(actorPrefix, i.Conveniado.CodigoProtocolo)].Tell(new ValidarPassagemPendenteParkMessage
                {
                    PassagemPendenteEstacionamento = i
                });
            });
        }
        public IHttpActionResult Park(List <PassagemPendenteEstacionamentoDto> request)
        {
            var passagensPendentesEstacionamento = new List <PassagemPendenteEstacionamento>();

            foreach (var c in request)
            {
                var p = new PassagemPendenteEstacionamento
                {
                    RegistroTransacaoId = c.RegistroTransacaoId.TryToLong(),
                    Conveniado          = new Conveniado
                    {
                        CodigoProtocolo = c.CodigoConveniado.TryToInt()
                    },
                    Adesao = new Adesao
                    {
                        Tag = new Tag
                        {
                            OBUId = c.Tag.TryToLong()
                        }
                    },
                    Praca = new Praca
                    {
                        CodigoPraca = c.Praca.TryToInt()
                    },
                    Pista = new Pista
                    {
                        CodigoPista = c.Pista.TryToInt()
                    },
                    DataPassagem                = c.DataHoraTransacao,
                    DataHoraEntrada             = c.DataHoraEntrada,
                    Valor                       = c.ValorCobrado,
                    ValorDesconto               = c.ValorDesconto,
                    MotivoDesconto              = c.MotivoDesconto,
                    TempoPermanencia            = c.TempoPermanencia,
                    MotivoAtrasoTransmissao     = (MotivoAtrasoTransmissaoEstacionamento)c.MotivoAtrasoTransmissao,
                    TipoTransacaoEstacionamento = (TipoTransacaoEstacionamento)(c.TipoTransacao ?? 0),
                    Ticket                      = c.Ticket,
                    Mensalista                  = c.Mensalista,
                    Tag = new Tag
                    {
                        OBUId = c.Tag.TryToLong()
                    },
                    Detalhes = new List <DetalhePassagemPendenteEstacionamento>()
                };
                if (c.Detalhes != null && c.Detalhes.Any())
                {
                    c.Detalhes.ForEach((d) =>
                    {
                        p.Detalhes.Add(new DetalhePassagemPendenteEstacionamento
                        {
                            CodigoPraca = d.CodigoPraca,
                            CodigoPista = d.CodigoPista,
                            Data        = d.Data
                        });
                    });
                }

                passagensPendentesEstacionamento.Add(p);
            }

            var mensagem = new CoordinatorParkMessage
            {
                FluxoExecucao = Enums.ParkActorsEnum.CoordinatorParkActor,
                PassagensPendentesEstacionamentos = passagensPendentesEstacionamento
            };

            TransacaoParkActorSystem.Processar(mensagem);
            return(_result.Ok(true, "Processo iniciado com sucesso"));
        }
Beispiel #3
0
 public static void Processar(CoordinatorParkMessage mensagem)
 {
     //Envia para o router as mensagens a serem enviadas...
     _actorCoordinator.Tell(mensagem);
     _log.Info($"Recebendo {mensagem.PassagensPendentesEstacionamentos.Count} mensagens...");
 }