Esempio n. 1
0
 public ExecutarEventoInclusaoVg(IndexedCachedContainer <ChaveProduto, DadosProduto> container,
                                 IEventosBase <EventoInclusaoVg> eventos, ValidadorCobertura validador)
 {
     _eventos   = eventos;
     _container = container;
     _validador = validador;
 }
 public ProcessaEventoImplantacao(
     IEventos <EventoImplantacao> eventos,
     IValidaEventoImplantacao validador,
     IndexedCachedContainer <ChaveProduto, DadosProduto> produtoContainer)
 {
     _eventos          = eventos;
     _validador        = validador;
     _produtoContainer = produtoContainer;
 }
Esempio n. 3
0
        public CoberturaStateMachine(
            IndexedCachedContainer <ChaveProduto, DadosProduto> produtoContainer,
            ICalculadorProvisaoPremio calculadorProvisao)
        {
            InstanceState(x => x.Status, Ativa, Cancelada, Beneficio, Saldada, Remida);

            Event(() => Implantar);
            Event(() => Alterar);
            Event(() => EmitirPremio);
            Event(() => ApropriarPremio);
            Event(() => DesapropriarPremio);
            Event(() => AjustePremio);
            Event(() => PortabilidadePremio);
            Event(() => AportePremio);
            Event(() => InclusaoVG);

            Initially(
                When(Implantar)
                .TransitionTo(Ativa)
                .Then(x => x.Instance.ComDadosProduto(produtoContainer.GetValue(x.Instance.ChaveProduto())))
                .Then(x => x.Data.EventoOperacional.Adicionar(x.Instance))
                );

            During(Ativa,
                   When(Alterar)
                   .Then(x =>
            {
                x.Data.Mensagem.Cobertura.Id = x.Instance.Id;
                x.Data.EventoOperacional.AdicionaHistorico(x.Data.Mensagem);
            }),
                   When(EmitirPremio)
                   .Then(x =>
            {
                x.Data.Mensagem.AdicionarCobertura(x.Instance);
                x.Data.Mensagem.AdicionarMovimentoProvisao(
                    calculadorProvisao.CriarProvisao(x.Data.Mensagem, TipoEventoEnum.EmissaoPremio, x.Data.EventoOperacional.DataExecucaoEvento));
                x.Data.EventoOperacional.AdicionarPremiosEmitidos(x.Data.Mensagem);
            }),
                   When(ApropriarPremio)
                   .Then(x =>
            {
                x.Data.Mensagem.AdicionarCobertura(x.Instance);
                x.Data.Mensagem.AdicionarMovimentoProvisao(
                    calculadorProvisao.CriarProvisao(x.Data.Mensagem, TipoEventoEnum.ApropriacaoPremio, x.Data.EventoOperacional.DataExecucaoEvento));
                x.Data.EventoOperacional.AdicionarPremiosApropriados(x.Data.Mensagem);
            }),
                   When(DesapropriarPremio)
                   .Then(x =>
            {
                x.Data.Mensagem.AdicionarCobertura(x.Instance);
                x.Data.Mensagem.AdicionarMovimentoProvisao(
                    calculadorProvisao.CriarProvisao(x.Data.Mensagem, TipoEventoEnum.DesapropriacaoPremio, x.Data.EventoOperacional.DataExecucaoEvento));
                x.Data.EventoOperacional.AdicionarPremio(x.Data.Mensagem);
            }),
                   When(AjustePremio)
                   .Then(x =>
            {
                x.Data.Mensagem.AdicionarCobertura(x.Instance);
                x.Data.Mensagem.AdicionarMovimentoProvisao(
                    calculadorProvisao.CriarProvisao(x.Data.Mensagem, TipoEventoEnum.AjustePremio, x.Data.EventoOperacional.DataExecucaoEvento));
                x.Data.EventoOperacional.AdicionarPremio(x.Data.Mensagem);
            }),
                   When(PortabilidadePremio)
                   .Then(x =>
            {
                x.Data.Mensagem.AdicionarCobertura(x.Instance);
                x.Data.Mensagem.AdicionarMovimentoProvisao(
                    calculadorProvisao.CriarProvisao(x.Data.Mensagem, TipoEventoEnum.PortabilidadePremio, x.Data.EventoOperacional.DataExecucaoEvento));
                x.Data.EventoOperacional.AdicionarPremio(x.Data.Mensagem);
            }),
                   When(AportePremio)
                   .Then(x =>
            {
                x.Data.Mensagem.AdicionarCobertura(x.Instance);
                x.Data.Mensagem.AdicionarMovimentoProvisao(
                    calculadorProvisao.CriarProvisao(x.Data.Mensagem, TipoEventoEnum.AportePremio, x.Data.EventoOperacional.DataExecucaoEvento));
                x.Data.EventoOperacional.AdicionarPremio(x.Data.Mensagem);
            })
                   );

            Initially(
                When(InclusaoVG)
                .TransitionTo(Ativa)
                .Then(x => x.Instance.ComDadosProduto(produtoContainer.GetValue(x.Instance.ChaveProduto())))
                .Then(x => x.Data.EventoOperacional.Adicionar(x.Instance))
                );
        }