コード例 #1
0
        public async Task Send(PortabilidadePremioContext context, IPipe <PortabilidadePremioContext> next)
        {
            foreach (var premio in context.Premios)
            {
                var instance = await _coberturas.ObterPorItemCertificado(premio.ItemCertificadoApoliceId);

                await _stateMachine.RaiseEvent(instance, _stateMachine.PortabilidadePremio, new NotificacaoEvento <EventoPortabilidadePremio, PremioPortabilidade>(context.Evento, premio));
            }
            await next.Send(context);
        }
コード例 #2
0
        public async Task Send(ImplantacaoContext context, IPipe <ImplantacaoContext> next)
        {
            foreach (var coberturaContratada in context.Coberturas)
            {
                var instance = await _coberturas.ObterPorItemCertificado(coberturaContratada.ItemCertificadoApoliceId) ?? coberturaContratada;

                await _stateMachine.RaiseEvent(instance, _stateMachine.Implantar, new NotificacaoEvento <EventoImplantacao, CoberturaContratada>(context.Evento, coberturaContratada));
            }

            await next.Send(context);
        }
コード例 #3
0
        public async Task Send(AlteracaoContext context, IPipe <AlteracaoContext> next)
        {
            foreach (var historico in context.Historicos)
            {
                historico.InformaStatus(StatusCobertura.StatusCoberturaEnum.Activa, DateTime.Now);

                var instance = (await _coberturas.ObterPorItemCertificado(historico.Cobertura.ItemCertificadoApoliceId)) ?? historico.Cobertura;
                await _stateMachine.RaiseEvent(instance, _stateMachine.Alterar, new NotificacaoEvento <EventoAlteracao, HistoricoCoberturaContratada>(context.Evento, historico));
            }

            await next.Send(context);
        }
コード例 #4
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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
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);
        }