Beispiel #1
0
        public ActionResult RetirarContrato()
        {
            System.IO.StreamReader reader = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string rawSendGridJSON        = reader.ReadToEnd();

            //Convertimos a json el resultado para facilitar el acceso
            //a sus propiedades
            JObject json = JObject.Parse(rawSendGridJSON);

            string idContrato = json.Properties().FirstOrDefault().Value.ToString();

            // Borrar los movimientos obtenidos de mambu en la BD Devengados
            OperacionesBD.BorrarMovimientosContratos(idContrato);

            //Borrar las amortizaciones obtenidas de mambu en la BD Devengados
            OperacionesBD.BorrarAmortizacionesContrato(idContrato);

            //Obtener cliente asociado al contrato
            string idCliente = OperacionesBD.ObtenerClienteContrato(idContrato);

            //Borrar el cliente
            OperacionesBD.BorrarCliente(idCliente);

            //Borrar el contrato
            OperacionesBD.BorrarContrato(idContrato);

            return(new HttpStatusCodeResult(200));
        }
Beispiel #2
0
        public ActionResult CancelarPagos()
        {
            System.IO.StreamReader reader = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string rawSendGridJSON        = reader.ReadToEnd();

            //Convertimos a json el resultado para facilitar el acceso
            //a sus propiedades
            JObject json = JObject.Parse(rawSendGridJSON);

            string idContrato = json.Properties().FirstOrDefault().Value.ToString();

            long contador = 0;

            List <Transaccion> transaccions = Operaciones.ObtenerTransacciones(idContrato);

            var contratosAgrupados = (from x in transaccions
                                      group x by new
            {
                x.parentAccountKey
            } into campos
                                      select new
            {
                idContrato = campos.Key.parentAccountKey
            });

            foreach (var valor in contratosAgrupados)
            {
                int numeroPago = 1;

                Loan contrato = Operaciones.ObtenerCuentaPrestamo(valor.idContrato);

                OperacionesBD.BorrarMovimientosContratos(contrato.id);

                // obtiene nuevamente las transacciones del contrato
                List <Transaccion> transaccionesNuevas = Operaciones.ObtenerTransacciones(Constantes.TRANSACTIONS_TYPE_DISBURSMENT, valor.idContrato).ToList();
                transaccionesNuevas.AddRange(Operaciones.ObtenerTransacciones(Constantes.TRANSACTIONS_TYPE_REPAYMENT, valor.idContrato).ToList());

                foreach (Transaccion transaccion in transaccionesNuevas)
                {
                    Movimiento movimiento = new Movimiento();

                    string existeMovimiento = Negocio.OperacionesBD.ExisteTransaccion(transaccion.transactionId);

                    if (transaccion.type.Equals("REPAYMENT"))
                    {
                        movimiento.codigo = "PAGO";
                    }
                    else if (transaccion.type.Equals("DISBURSMENT"))
                    {
                        movimiento.codigo = "DESEMBOLSO";
                    }
                    else if (transaccion.type.Equals(Negocio.Globales.Constantes.ESTATUS_WRITE_OFF))
                    {
                        movimiento.codigo = "CASTIGO";
                    }
                    else
                    {
                        movimiento.codigo = "";
                    }
                    movimiento.fechaMovimiento = DateTime.Parse(transaccion.creationDate);
                    movimiento.fechaValor      = DateTime.Parse(transaccion.entryDate);
                    movimiento.idContrato      = contrato.id;
                    movimiento.idTransaccion   = transaccion.transactionId;
                    movimiento.montoCapital    = transaccion.principalPaid;
                    movimiento.montoInteres    = transaccion.interestPaid;
                    movimiento.montoTotal      = transaccion.amount;
                    movimiento.saldo           = transaccion.principalBalance;

                    if (existeMovimiento.Equals("0"))
                    {
                        OperacionesBD.InsertarMovimiento(movimiento);
                    }

                    movimiento = null;
                }

                // amortizaciones del contrato
                OperacionesBD.BorrarAmortizacionesContrato(contrato.id);

                List <Repayment> amortizaciones = Operaciones.ObtenerAmortizaciones(contrato.id).OrderBy(x => x.dueDate).ToList();

                // inserta el calendario de pagos
                foreach (Repayment amortizacion in amortizaciones)
                {
                    Pago pago = new Pago();

                    pago.numeroCuota     = numeroPago;
                    pago.idContrato      = contrato.id;
                    pago.estatus         = amortizacion.state;
                    pago.fechaPago       = DateTime.Parse(amortizacion.dueDate);
                    pago.fechaPagado     = DateTime.Parse(amortizacion.repaidDate == null ? amortizacion.repaidDate = "01/01/1900" : amortizacion.repaidDate);
                    pago.capitalEsperado = decimal.Parse(amortizacion.principalDue);
                    pago.interesEsperado = decimal.Parse(amortizacion.interestDue);
                    pago.capitalPagado   = decimal.Parse(amortizacion.principalPaid);
                    pago.interesPagado   = decimal.Parse(amortizacion.interestPaid);


                    // inserta las Amortizaciones
                    OperacionesBD.InsertarAmortizaciones(pago);

                    numeroPago += 1;
                }

                // actualiza los datos del contrato
                Dictionary <string, object> parametros = new Dictionary <string, object>();

                parametros.Add("saldo", contrato.principalBalance);
                parametros.Add("capitalPagado", contrato.principalPaid.ToString());
                parametros.Add("interesPagado", contrato.interestPaid.ToString());
                parametros.Add("estatus", contrato.accountState);
                parametros.Add("idContrato", contrato.id);

                OperacionesBD.ActualizarContrato(parametros);

                contador += 1;
            }
            return(new HttpStatusCodeResult(200));
        }