public async Task <EventoAlteracao> Processar(EventoAlteracao evento)
        {
            Assertion.NotNull(evento, "O eventos não foi informado.").Validate();
            Assertion.IsTrue(evento.Historicos.Any(), "Não foi informado nenhum novo histórico.").Validate();

            await ObtemIdentificadoresCoberturas(evento);

            await _eventos.Adicionar(evento);

            return(evento);
        }
        public async Task <EventoImplantacao> Processar(EventoImplantacao evento)
        {
            if (await _eventos.Contem(evento.Identificador))
            {
                return(evento);
            }

            foreach (var cob in evento.Coberturas)
            {
                var dadosProduto = _produtoContainer.GetValue(new ChaveProduto(cob.ItemProdutoId, cob.TipoFormaContratacaoId, cob.TipoRendaId, cob.DataAssinatura));
                cob.ComDadosProduto(dadosProduto);

                await _validador.Validar(cob);
            }

            await _eventos.Adicionar(evento);

            return(evento);
        }