示例#1
0
        public ActionResult Modificar(EditUserViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                using (var db = new FinanzasEntities())
                {
                    user oUser = db.user.Find(UserF.id);

                    string pass = Encriptador.desencriptar(oUser.password);

                    //La contraseña no debe ser igual a la anterior
                    if (pass.Equals(model.Password))
                    {
                        TempData["smserror"] = "La nueva contraseña no debe de ser igual a la anterior, porfavor intente nuevamente.";
                        ViewBag.smserror     = TempData["smserror"];
                        return(View(model));
                    }

                    //La contraseña no debe estar en blanco
                    if (model.Password != null && model.Password.Trim() != "")
                    {
                        oUser.password = Encriptador.encriptar(model.Password);
                    }
                    else
                    {
                        TempData["smserror"] = "La contraseña no puede quedar en blanco, porfavor intente nuevamente.";
                        ViewBag.smserror     = TempData["smserror"];
                        return(View(model));
                    }

                    db.Entry(oUser).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }

                TempData["sms"] = "Contraseña cambiada exitosamente";
                ViewBag.sms     = TempData["sms"];
                return(Redirect(Url.Content("~/Home/Index")));
            }
            catch (Exception)
            {
                TempData["smserrorc"] = "Ocurrio un Error";
                ViewBag.smserrorc     = TempData["smserrorc"];
                return(View(model));
            }
        }
示例#2
0
        public ActionResult DetallePrevio(PlanViewModel model)
        {
            double        VAN    = 0;
            double        TCEA   = 0;
            int           idC    = UserF.ci;
            PlanViewModel modelP = new PlanViewModel();

            using (var db = new FinanzasEntities())
            {
                compraInteligente compra  = (from d in db.compraInteligente where d.id == idC select d).FirstOrDefault();
                double            Sfinal  = Math.Round(Convert.ToDouble(compra.monto - compra.inicial), 2);
                List <detalle>    listado = db.detalle.Where(x => x.compraId.Equals(idC)).ToList();
                modelP.cuotaInicial = (float)Convert.ToDouble(compra.inicial);
                modelP.moneda       = compra.moneda;
                modelP.periodo      = compra.periodo_pago;
                modelP.Tasa         = Convert.ToDouble(compra.TEA);
                modelP.valor        = (float)Convert.ToDouble(compra.monto);
                modelP.carro        = (from d in db.vehiculo where d.id == compra.vehiculoId select d).FirstOrDefault();
                modelP.Detalle      = listado;
                double inter, amort, cuota, TEP;
                double TEP2 = UserF.TEfectivaP((double)compra.TEA);

                double[] Flujo = new double[modelP.periodo + 1];
                Flujo[0] = Sfinal;

                if ((model.pgP == "" || model.pgP == null) && (model.pgT == "" || model.pgT == null))
                {
                    for (int r = 1; r <= compra.periodo_pago; r++)
                    {
                        Flujo[r] = -Convert.ToDouble(listado[r].flujo);
                    }
                }
                else
                {
                    List <int> PGP2 = new List <int>();
                    List <int> PGT2 = new List <int>();

                    PGP2.Add(0);
                    PGT2.Add(0);

                    if (model.pgT != null)
                    {
                        string[] PGT = model.pgT.Split(',');
                        for (int i = 0; i < PGT.Length; i++)
                        {
                            PGT2.Add(Convert.ToInt32(PGT[i]));
                        }
                    }
                    if (model.pgP != null)
                    {
                        string[] PGP = model.pgP.Split(',');
                        for (int i = 0; i < PGP.Length; i++)
                        {
                            PGP2.Add(Convert.ToInt32(PGP[i]));
                        }
                    }

                    #region CalculoActualizado
                    for (int i = 1; i <= modelP.periodo; i++)
                    {
                        detalle oDetalle = (from d in db.detalle where d.compraId == idC & d.n == i select d).FirstOrDefault();
                        if (PGT2.Contains(i))
                        {
                            oDetalle.plazoGracia  = "t";
                            oDetalle.saldoInicial = Convert.ToDecimal(Sfinal);
                            inter                 = Convert.ToDouble((oDetalle.TEP / 100) * oDetalle.saldoInicial);
                            oDetalle.interes      = Math.Round(Convert.ToDecimal(inter), 2);
                            oDetalle.cuota        = 0;
                            oDetalle.amortizacion = 0;
                            oDetalle.saldoFinal   = Math.Round(Convert.ToDecimal(Sfinal + inter), 2);
                            oDetalle.flujo        = oDetalle.seguroDesgrav + oDetalle.seguroRiesgo;

                            Flujo[i] = -Convert.ToDouble(oDetalle.flujo);

                            db.Entry(oDetalle).State = EntityState.Modified;
                            db.SaveChanges();

                            Sfinal = Sfinal + inter;
                            //Calcular con plazo de gracia total
                        }
                        else if (PGP2.Contains(i))
                        {
                            oDetalle.plazoGracia  = "p";
                            oDetalle.saldoInicial = Convert.ToDecimal(Sfinal);
                            inter                 = Convert.ToDouble((oDetalle.TEP / 100) * oDetalle.saldoInicial);
                            oDetalle.interes      = Math.Round(Convert.ToDecimal(inter), 2);
                            oDetalle.cuota        = Math.Round(Convert.ToDecimal(inter), 2);
                            amort                 = 0;
                            oDetalle.amortizacion = 0;
                            oDetalle.saldoFinal   = Math.Round(Convert.ToDecimal(Sfinal - amort), 2);
                            oDetalle.flujo        = oDetalle.seguroDesgrav + oDetalle.seguroRiesgo + oDetalle.cuota;

                            Flujo[i] = -Convert.ToDouble(oDetalle.flujo);

                            db.Entry(oDetalle).State = EntityState.Modified;
                            db.SaveChanges();

                            Sfinal = Sfinal - amort;
                            //Calcular con plazo de gracia Parcial
                        }
                        else
                        {
                            oDetalle.saldoInicial = Convert.ToDecimal(Sfinal);
                            inter            = Convert.ToDouble((oDetalle.TEP / 100) * oDetalle.saldoInicial);
                            oDetalle.interes = Math.Round(Convert.ToDecimal(inter), 2);
                            TEP                   = Convert.ToDouble(oDetalle.TEP) / 100;
                            cuota                 = UserF.CalcCuotaNc(TEP, modelP.periodo, i, Sfinal);
                            oDetalle.cuota        = Math.Round(Convert.ToDecimal(cuota), 2);
                            amort                 = cuota - inter;
                            oDetalle.amortizacion = Math.Round(Convert.ToDecimal(amort), 2);
                            oDetalle.saldoFinal   = Math.Round(Convert.ToDecimal(Sfinal - amort), 2);
                            oDetalle.flujo        = oDetalle.seguroDesgrav + oDetalle.seguroRiesgo + oDetalle.cuota;

                            Flujo[i] = -Convert.ToDouble(oDetalle.flujo);

                            db.Entry(oDetalle).State = EntityState.Modified;
                            db.SaveChanges();

                            Sfinal = Sfinal - amort;
                            //Calculo normal
                        }
                    }
                    #endregion
                }

                //TCEA Y VAN
                double TIR = Financial.IRR(ref Flujo, 0.1);
                TCEA = Math.Pow((1 + TIR), 12) - 1;
                double VA = 0;

                for (int j = 1; j <= compra.periodo_pago; j++)
                {
                    VA += Flujo[j] / (Math.Pow((1 + TEP2), j));
                }

                VAN = Flujo[0] + VA;

                compra.TCEA = Convert.ToDecimal(TCEA) * 100;
                compra.VAN  = Math.Round(Convert.ToDecimal(VAN), 2);

                db.Entry(compra).State = EntityState.Modified;
                db.SaveChanges();
                //
            }
            return(Redirect(Url.Content("~/Home/PlanDePago")));
        }
示例#3
0
        public ActionResult Recovery(RecoveryViewModel model)
        {
            string EmailOrigen = "*****@*****.**";
            string Pass        = "******";

            using (FinanzasEntities db = new FinanzasEntities())
            {
                var lst = from d in db.user where d.email == model.Email select d;
                if (lst.Count() > 0)
                {
                    user oUser = lst.First();
                    UserF.id = oUser.id;

                    #region
                    //Auto Genera Contraseña - Modifica Contraseña
                    Guid   miGuid           = Guid.NewGuid();
                    string PassAutoGenerate = Convert.ToBase64String(miGuid.ToByteArray());
                    PassAutoGenerate      = PassAutoGenerate.Replace("=", "").Replace("+", "").Replace("/", "").Substring(0, 12);
                    oUser.password        = Encriptador.encriptar(PassAutoGenerate);
                    db.Entry(oUser).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                    #endregion

                    UserF.password = PassAutoGenerate;
                }
                else
                {
                    //Mensaje Alerta
                    ViewBag.smsnore = "No hay una cuenta asociada a este correo";
                    return(View());
                }
            }

            MailMessage oMailMessage = new MailMessage(EmailOrigen, model.Email, "Recuperacion de Contraseña",
                                                       "<p>Correo para recuperacion de contraseña</p><br>" +
                                                       "<p>Su contraseña es: " + UserF.password + "</p><br>" +
                                                       "<p>Le recomendamos cambiar su contraseña</p>");

            oMailMessage.IsBodyHtml = true;

            SmtpClient oSmtpClient = new SmtpClient("smtp.gmail.com");
            oSmtpClient.EnableSsl             = true;
            oSmtpClient.UseDefaultCredentials = false;
            oSmtpClient.Port        = 587;
            oSmtpClient.Credentials = new System.Net.NetworkCredential(EmailOrigen, Pass);

            try
            {
                oSmtpClient.Send(oMailMessage);
                oSmtpClient.Dispose();

                //Mensaje de Exito
                TempData["smsE"] = "El correo ha sido enviado, revise su bandeja de entrada";
                ViewBag.smsE     = TempData["smsE"];

                return(Redirect(Url.Content("~/Access/Index")));
            }
            catch (Exception)
            {
                //Mensaje de Peligro
                TempData["smsD"] = "Ha ocurrido un error crítico";
                ViewBag.smsD     = TempData["smsD"];
                return(Redirect(Url.Content("~/Access/Index")));
            }
        }