public ActionResult AlterarPagamento(int idpagamento, double valorIntegralDaParcela, int status, DateTime dataVencimento, double valorPago, int contratoIdContrato,
                                             int clienteIdCliente)
        {
            PagamentoDAO dao       = new PagamentoDAO();
            Pagamento    pagamento = dao.Listar().FirstOrDefault(x => x.IdPagamento == idpagamento);

            ContratoDAO CtDao    = new ContratoDAO();
            var         contrato = new Contrato();


            pagamento.Status = 1; // STATUS DE RECEBIMENTO

            var dataAtual = DateTime.Now;
            var outraData = pagamento.DataVencimento;

            TimeSpan Atraso = dataAtual.Subtract(outraData);

            double diasDeAtraso = Atraso.TotalDays;


            var novoValorPagamento = pagamento.CalculaJuroDiario(valorIntegralDaParcela, diasDeAtraso);

            if (valorPago < valorIntegralDaParcela)
            {
                var proximoPagamento = dao.BuscarProximoPagamento(pagamento);
                if (proximoPagamento == null)
                {
                    pagamento.ValorIntegralDaParcela = valorIntegralDaParcela;
                    pagamento.Status         = status;
                    pagamento.DataVencimento = dataVencimento;
                    pagamento.IdContrato     = contratoIdContrato;
                    pagamento.IdCliente      = clienteIdCliente;

                    dao.Adicionar(pagamento);
                }
            }

            pagamento.ValorIntegralDaParcela = valorIntegralDaParcela;
            pagamento.Status         = status;
            pagamento.DataVencimento = dataVencimento;
            pagamento.IdContrato     = contratoIdContrato;
            pagamento.IdCliente      = clienteIdCliente;

            dao.Alterar(pagamento);

            return(View(pagamento));
        }