protected override void ChamarRequisicao(ValidadorPassagemPendenteConcessionariaArtespMessage mensagem)
        {
            try
            {
                Response = Handler.Execute(new ValidadorPassagemPendenteConcessionariaRequest {
                    PassagemPendenteArtesp = mensagem.PassagemPendenteArtesp
                });
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(Exception))
                {
                    throw new PassagemInvalidaException(mensagem.PassagemPendenteArtesp.MensagemItemId, ex.Message, ex);
                }
                throw;
            }

            if (Response.MotivoNaoCompensado == MotivoNaoCompensado.SemMotivoNaoCompensado)
            {
                Workers[ArtespActorsEnum.IdentificadorPassagemAceiteManualReenvioActor].Tell(new IdentificadorPassagemAceiteManualReenvioArtespMessage
                {
                    PassagemPendenteArtesp = mensagem.PassagemPendenteArtesp
                });
            }
            else
            {
                var m = new GeradorPassagemPendenteReprovadaArtespMessage
                {
                    PassagemPendenteArtesp = Response.PassagemPendenteArtesp,
                    MotivoNaoCompensado    = Response.MotivoNaoCompensado
                };

                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
            }
        }
 public void ChamarGeradorPassagemPendenteReprovada(GeradorPassagemPendenteReprovadaArtespMessage mensagem)
 {
     try
     {
         Response = Handler.Execute(new GeradorPassagemPendenteReprovadaRequest
         {
             PassagemPendenteArtesp = mensagem.PassagemPendenteArtesp,
             MotivoNaoCompensado    = mensagem.MotivoNaoCompensado
         });
     }
     catch (Exception ex)
     {
         if (ex.GetType() == typeof(Exception))
         {
             throw new PassagemInvalidaException(mensagem.PassagemPendenteArtesp.MensagemItemId, ex.Message, ex);
         }
         throw;
     }
     Workers[ArtespActorsEnum.ProcessadorPassagemReprovadaActor].Tell(new ProcessadorPassagemReprovadaArtespMessage
     {
         PassagemReprovadaArtesp = Response.PassagemReprovadaArtesp
     });
 }
        protected void Processar <TMessageProcessar>(TMessageProcessar mensagem, Action <TMessageProcessar> action)
        {
            try
            {
                action(mensagem);
            }
            catch (PassagemDivergenciaCategoriaException ex)
            {
                var m = new GeradorPassagemReprovadaDivergenciaCategoriaArtespArtespMessage
                {
                    PassagemPendenteArtesp = ex.PassagemPendenteArtesp,
                    MotivoNaoCompensado    = ex.MotivoNaoCompensado
                };


                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
                //var mensagemItemId = ex.PassagemPendenteArtesp.MensagemItemId;
                //var metadata = new ActorMetaData($"GeradorPassagemReprovadaArtespActor{mensagemItemId}", $"akka://TransacaoArtesp/user/coordinator/GeradorPassagemReprovadaActor_{mensagemItemId}");
                //var actorRef = Context.ActorOf(Props.Create(() => new GeradorPassagemReprovadaArtespActor()), metadata.Name);

                //actorRef.Tell(m);
            }
            catch (PassagemReprovadaException ex)
            {
                var m = new GeradorPassagemReprovadaArtespMessage
                {
                    PassagemPendenteArtesp = ex.PassagemPendenteArtesp,
                    MotivoNaoCompensado    = ex.MotivoNaoCompensado
                };

                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
                //var mensagemItemId = ex.PassagemPendenteArtesp.MensagemItemId;
                //var metadata = new ActorMetaData($"GeradorPassagemReprovadaArtespActor{mensagemItemId}", $"akka://TransacaoArtesp/user/coordinator/GeradorPassagemReprovadaActor_{mensagemItemId}");
                //var actorRef = Context.ActorOf(Props.Create(() => new GeradorPassagemReprovadaArtespActor()), metadata.Name);

                //actorRef.Tell(m);
            }
            catch (PassagemPendenteReprovadaException ex)
            {
                var m = new GeradorPassagemPendenteReprovadaArtespMessage
                {
                    PassagemPendenteArtesp = ex.PassagemPendenteArtesp,
                    MotivoNaoCompensado    = ex.MotivoNaoCompensado
                };

                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
                //var mensagemItemId = ex.PassagemPendenteArtesp.MensagemItemId;
                //var metadata = new ActorMetaData($"GeradorPassagemReprovadaArtespActor{mensagemItemId}", $"akka://TransacaoArtesp/user/coordinator/GeradorPassagemReprovadaActor_{mensagemItemId}");
                //var actorRef = Context.ActorOf(Props.Create(() => new GeradorPassagemReprovadaArtespActor()), metadata.Name);

                //actorRef.Tell(m);
            }
            catch (TransacaoPassagemExistenteException ex)
            {
                var m = new GeradorPassagemAprovadaComTransacaoExistenteArtespMessage
                {
                    TransacaoId           = ex.TransacaoId,
                    MensagemItemId        = ex.MensagemItemId,
                    CodigoProtocoloArtesp = ex.CodigoProtocoloArtesp
                };

                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
                //var mensagemItemId = ex.MensagemItemId;
                //var metadata = new ActorMetaData($"GeradorPassagemReprovadaArtespActor{mensagemItemId}", $"akka://TransacaoArtesp/user/coordinator/GeradorPassagemReprovadaActor_{mensagemItemId}");
                //var actorRef = Context.ActorOf(Props.Create(() => new GeradorPassagemReprovadaArtespActor()), metadata.Name);

                //actorRef.Tell(m);
            }
            catch (TransacaoReprovadaExistenteException ex)
            {
                var m = new GeradorPassagemReprovadaTransacaoReprovadaExistenteArtespMessage
                {
                    PassagemPendenteArtesp = ex.PassagemPendenteArtesp,
                    TransacaoRecusada      = ex.TransacaoRecusada
                };



                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
                //var mensagemItemId = ex.PassagemPendenteArtesp.MensagemItemId;
                //var metadata = new ActorMetaData($"GeradorPassagemReprovadaArtespActor{mensagemItemId}", $"akka://TransacaoArtesp/user/coordinator/GeradorPassagemReprovadaActor_{mensagemItemId}");
                //var actorRef = Context.ActorOf(Props.Create(() => new GeradorPassagemReprovadaArtespActor()),metadata.Name);

                //actorRef.Tell(m);
            }
            catch (PassagemInvalidaException ex)
            {
                _log.Warn($"Passagem Inválida {ex.ReferenceKey} - {ex.Message} ", ex.InnerException);

                var m = new GeradorPassagemInvalidaArtespMessage
                {
                    PassagemPendenteArtesp = new PassagemPendenteArtesp
                    {
                        MensagemItemId = ex.ReferenceKey
                    }
                };

                Workers[ArtespActorsEnum.GeradorPassagemInvalidaActor].Tell(m);
            }
            catch (PassagemInvalidaNoSysException tpcpx)
            {
                var m = new GeradorPassagemProcessadaMensageriaMessage(
                    tpcpx.ResultadoPassagem,
                    tpcpx.PassagemPendenteArtesp,
                    tpcpx.TransacaoIdOriginal,
                    tpcpx.ValorRepasse,
                    tpcpx.DataPagamento,
                    tpcpx.MotivoNaoCompensado,
                    tpcpx.PassagemId);

                Workers[ArtespActorsEnum.ProcessadorPassagemAprovadaActor].Tell(m);
            }
            catch (TransacaoParceiroException tpx)
            {
                var m = new GeradorPassagemReprovadaTransacaParceiroArtespMessage
                {
                    DetalheViagemId        = tpx.DetalheViagemId,
                    MotivoNaoCompensado    = tpx.MotivoNaoCompensado,
                    PassagemPendenteArtesp = tpx.PassagemPendente
                };
                Workers[ArtespActorsEnum.GeradorPassagemReprovadaActor].Tell(m);
            }
            catch (Exception ex)
            {
                _log.Fatal(ex.Message, ex);
            }
        }