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")); }
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..."); }