public List <Parcela> CalcularParcelas(Guid contaId, int diaVencimento, double valorTotal, int qtdParcelas)
        {
            var parcelas     = new List <Parcela>();
            var valorParcela = valorTotal / qtdParcelas;

            for (int numParcela = 1; numParcela <= qtdParcelas; numParcela++)
            {
                var vencimentoParcela = new VencimentoParcela(diaVencimento, numParcela)
                                        .DataVencimento;

                var parcela = new Parcela(contaId, numParcela, valorParcela, vencimentoParcela);

                if (parcela.Invalid)
                {
                    AddNotifications(parcela);
                }

                if (Invalid)
                {
                    return(null);
                }

                parcelas.Add(parcela);
            }


            return(parcelas);
        }
        public List <Parcela> CalcularParcelas(Guid contaId, DateTime dataPrimeiroPgto, double valorTotal, int qtdParcelas, int frequenciaDiaPgto, int porcVariacaoMensal)
        {
            var parcelas     = new List <Parcela>();
            var valorParcela = valorTotal / qtdParcelas;

            for (int numParcela = 1; numParcela <= qtdParcelas; numParcela++)
            {
                var vencimentoParcela = new DateTime();
                if (numParcela == 1)
                {
                    vencimentoParcela = dataPrimeiroPgto;
                }
                else
                {
                    var dataPgtoUltimaParcela = GetDataParcelaUltimaParcela(numParcela, parcelas);
                    vencimentoParcela = new VencimentoParcela(dataPrimeiroPgto, numParcela, frequenciaDiaPgto, dataPgtoUltimaParcela)
                                        .DataVencimento;
                }


                var parcela = new Parcela(contaId, numParcela, valorParcela, vencimentoParcela);

                if (parcela.Invalid)
                {
                    AddNotifications(parcela);
                }

                if (Invalid)
                {
                    return(null);
                }

                parcelas.Add(parcela);

                if (porcVariacaoMensal != 0)
                {
                    valorParcela = (((double)porcVariacaoMensal / 100) * valorParcela) + valorParcela;
                }
            }


            return(parcelas);
        }