public ActionResult Create(Transaccion transaccion) { if (ModelState.IsValid) { db.Transacciones.Add(transaccion); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.Cuenta_Id = new SelectList(db.Cuentas.Where(r => r.User == User.Identity.Name), "Cuenta_Id", "Descripcion", transaccion.Cuenta_Id); return View(transaccion); }
public static void Proyecta(FinancyDB db, TransaccionProyectada trans, DateTime lastDate, string user) { var transacciones = db.Transacciones .Where(w => w.Estado == "Proyección" && w.TransaccionProyectada_Id == trans.TransaccionProyectada_Id && w.Cuenta.User == user); if (transacciones != null) { foreach (var transaccion in transacciones) { db.Transacciones.Remove(transaccion); } db.SaveChanges(); } trans = (from x in db.TransaccionProyectadas.Include(x => x.Tipo).Include(x => x.Cuenta) where x.TransaccionProyectada_Id == trans.TransaccionProyectada_Id && x.Cuenta.User == user select x).First(); var diaActual = lastDate.Day; var mesActual = lastDate.Month; var anoActual = lastDate.Year; var diasEnMes = DateTime.DaysInMonth(anoActual, mesActual); if (trans.Tipo.Descripcion == "Diario") { lastDate = lastDate.AddDays(1); var transaccion = new Transaccion() { Cuenta = trans.Cuenta, Descripcion = trans.Descripcion, TransaccionProyectada = trans, Estado = "Proyección", Fecha = lastDate, Monto = trans.Monto }; db.Transacciones.Add(transaccion); } else if (trans.Tipo.Descripcion == "De Lunes a Viernes") { for (int i = diaActual; i <= diasEnMes; i++) { lastDate = lastDate.AddDays(1); if (lastDate.DayOfWeek != DayOfWeek.Saturday && lastDate.DayOfWeek != DayOfWeek.Sunday) { var transaccion = new Transaccion() { Cuenta = trans.Cuenta, Descripcion = trans.Descripcion, TransaccionProyectada = trans, Estado = "Proyección", Fecha = lastDate, Monto = trans.Monto }; db.Transacciones.Add(transaccion); break; } } } else if (trans.Tipo.Descripcion == "Semanal") { lastDate = GetNextWeekday(lastDate, (int)trans.Dia); var transaccion = new Transaccion() { Cuenta = trans.Cuenta, Descripcion = trans.Descripcion, TransaccionProyectada = trans, Estado = "Proyección", Fecha = lastDate, Monto = trans.Monto }; db.Transacciones.Add(transaccion); } if (trans.Tipo.Descripcion == "Mensual") { var transaccion = new Transaccion() { Cuenta = trans.Cuenta, Descripcion = trans.Descripcion, TransaccionProyectada = trans, Estado = "Proyección", Monto = trans.Monto }; transaccion.Fecha = new DateTime(anoActual, mesActual, (int)trans.Dia); if (transaccion.Fecha <= lastDate) transaccion.Fecha = new DateTime(anoActual, mesActual + 1, (int)trans.Dia); db.Transacciones.Add(transaccion); } }