public async Task Handle(EventoDeLancamentoFinanceiroProcessado evento, CancellationToken cancellationToken)
        {
            var lancamento = evento.Lancamento;

            try
            {
                var fluxo = await repositorioDeFluxoDeCaixa.ObtemFluxoDeCaixa(lancamento.Data);

                if (lancamento.Tipo == TipoDeLancamento.Pagamento)
                {
                    fluxo.AdicionaSaida(lancamento);
                }
                else
                {
                    fluxo.AdicionaEntrada(lancamento);
                }

                await repositorioDeFluxoDeCaixa.Atualiza(fluxo);
            }
            catch (EntityNotFoundException <FluxoDeCaixa> ex)
            {
                var _ = ex.Message;

                var fluxo = new FluxoDeCaixa
                {
                    Data = lancamento.Data
                };

                if (lancamento.Tipo == TipoDeLancamento.Pagamento)
                {
                    fluxo.AdicionaSaida(lancamento);
                }
                else
                {
                    fluxo.AdicionaEntrada(lancamento);
                }

                await repositorioDeFluxoDeCaixa.Adiciona(fluxo);
            }
            catch (Exception ex)
            {
                var _ = ex.Message;

                throw;
            }
        }
        public async Task Adiciona(FluxoDeCaixa fluxoDeCaixa)
        {
            var document = new BsonDocument
            {
                { "_id", ObjectId.GenerateNewId(fluxoDeCaixa.Data) },
                { "data", fluxoDeCaixa.Data },
                { "entradas", new BsonArray(fluxoDeCaixa.Entradas.Select(entrada => new BsonDocument {
                        { "data", entrada.Data }, { "valor", entrada.Valor }
                    })) },
                { "saidas", new BsonArray(fluxoDeCaixa.Saidas.Select(entrada => new BsonDocument {
                        { "data", entrada.Data }, { "valor", entrada.Valor }
                    })) },
                { "encargos", new BsonArray(fluxoDeCaixa.Encargos.Select(entrada => new BsonDocument {
                        { "data", entrada.Data }, { "valor", entrada.Valor }
                    })) },
                { "total", fluxoDeCaixa.Total },
                { "posicao_do_dia", fluxoDeCaixa.PosicaoDoDia },
            };

            await collection.InsertOneAsync(document);
        }
        public async Task Atualiza(FluxoDeCaixa fluxoDeCaixa)
        {
            var filter = Builders <BsonDocument> .Filter.Eq("_id", ObjectId.Parse(fluxoDeCaixa.Id));

            var document = new BsonDocument
            {
                { "entradas", new BsonArray(fluxoDeCaixa.Entradas.Select(entrada => new BsonDocument {
                        { "data", entrada.Data }, { "valor", entrada.Valor }
                    })) },
                { "saidas", new BsonArray(fluxoDeCaixa.Saidas.Select(entrada => new BsonDocument {
                        { "data", entrada.Data }, { "valor", entrada.Valor }
                    })) },
                { "encargos", new BsonArray(fluxoDeCaixa.Encargos.Select(entrada => new BsonDocument {
                        { "data", entrada.Data }, { "valor", entrada.Valor }
                    })) },
                { "data", fluxoDeCaixa.Data },
                { "total", fluxoDeCaixa.Total },
                { "posicao_do_dia", fluxoDeCaixa.PosicaoDoDia },
            };

            await collection.ReplaceOneAsync(filter, document);
        }