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