Ejemplo n.º 1
0
        public async Task Send(AjustePremioContext context, IPipe <AjustePremioContext> next)
        {
            foreach (var premio in context.Premios)
            {
                if (!await _premios.VerificarUltimoPremio(premio.ItemCertificadoApoliceId, context.Evento.MovimentosPermitidos, premio.Numero))
                {
                    Assertion.Fail($"O Ajuste não pode ser realizado. Não foi encontrada nenhum prêmio com o ItemCertificadoApoliceId: {premio.ItemCertificadoApoliceId} e com o Número da Parcela: { premio.Numero }.").Validate();
                }

                var instance = await _coberturas.ObterPorItemCertificado(premio.ItemCertificadoApoliceId);

                await _stateMachine.RaiseEvent(instance, _stateMachine.AjustePremio, new NotificacaoEvento <EventoAjustePremio, Premio>(context.Evento as EventoAjustePremio, premio));
            }
            await next.Send(context);
        }
        public async Task Send(DesapropriacaoPremioContext context, IPipe <DesapropriacaoPremioContext> next)
        {
            foreach (var premio in context.Premios)
            {
                if (!await _premios.VerificarUltimoPremio(premio.ItemCertificadoApoliceId, context.Evento.MovimentosPermitidos, premio.Numero))
                {
                    Assertion.Fail($"A Desapropriação não pode ser realizado. Não foi encontrada nenhuma apropropriação com o ItemCertificadoApoliceId {premio.ItemCertificadoApoliceId}, com o Número da Parcela { premio.Numero }.");
                }

                var instance = (await _coberturas.ObterPorItemCertificado(premio.ItemCertificadoApoliceId));

                await _stateMachine.RaiseEvent(instance, _stateMachine.DesapropriarPremio, new NotificacaoEvento <EventoDesapropriacaoPremio, PremioDesapropriado>(context.Evento, premio));
            }
            await next.Send(context);
        }
        public async Task Send(ApropriacaoPremioContext context, IPipe <ApropriacaoPremioContext> next)
        {
            foreach (var premio in context.Premios)
            {
                if (!await _premios.VerificarUltimoPremio(premio.ItemCertificadoApoliceId, context.Evento.MovimentosPermitidos, premio.Numero))
                {
                    Assertion.Fail($"A apropriação não pode ser realizado, para o ItemCertificadoApoliceId {premio.ItemCertificadoApoliceId}, com o Número da Parcela { premio.Numero }." +
                                   $"O movimento anterior deve estar entre uma das opções permitidas: Emissão, Reemissão ou Desapropriação.");
                }

                var instance = (await _coberturas.ObterPorItemCertificado(premio.ItemCertificadoApoliceId));

                await _stateMachine.RaiseEvent(instance, _stateMachine.ApropriarPremio, new NotificacaoEvento <EventoApropriacaoPremio, PremioApropriado>(context.Evento, premio));
            }
            await next.Send(context);
        }
Ejemplo n.º 4
0
        public async Task Send(EmissaoPremioContext context, IPipe <EmissaoPremioContext> next)
        {
            foreach (var premio in context.Premios)
            {
                var existeEmissao = await _premios.Contem(premio.ItemCertificadoApoliceId);

                if (existeEmissao)
                {
                    if (!await _premios.VerificarUltimoPremio(premio.ItemCertificadoApoliceId,
                                                              context.Evento.MovimentosPermitidos, premio.Numero))
                    {
                        Assertion.Fail($"Já existe Emissão do Prêmio com o ItemCertificadoApoliceId: {premio.ItemCertificadoApoliceId} e com o Número da Parcela: {premio.Numero}. " +
                                       $"O movimento anterior deve estar entre uma das opções permitidas: Cancelamento Emissão, Ajuste de Premio ou Cancelamento Ajuste.")
                        .Validate();
                    }
                }

                var instance = await _coberturas.ObterPorItemCertificado(premio.ItemCertificadoApoliceId);

                await _stateMachine.RaiseEvent(instance, _stateMachine.EmitirPremio, new NotificacaoEvento <EventoEmissaoPremio, Premio>(context.Evento as EventoEmissaoPremio, premio));
            }
            await next.Send(context);
        }