public JsonResult GetResumenCuentas(int id_pres) { List <CuentaPresResumen> data = new List <CuentaPresResumen>(); using (Data.FinanzasPersonales DB = new Data.FinanzasPersonales()) { Data.t_presupuesto presupuesto = DB.t_presupuesto.Where(p => p.id_pres == id_pres).FirstOrDefault(); if (presupuesto == null) { Response.StatusCode = 404; return(Json(new ResponseResult { Success = false, Data = "Not Found!" })); } List <CuentaPres> cuentas = (from c in DB.t_cuenta_pres join ca in DB.t_Categoria_gasto on c.id_cat equals ca.id_cat where c.id_pres == id_pres select new CuentaPres() { id_cuent = c.id_cuent, id_pres = c.id_pres, id_cat = c.id_cat, Categoria = ca.Nombre, Limite = c.Limite }).ToList(); List <Data.t_Gastos> gastos = DB.t_Gastos.Where(g => g.fecha >= presupuesto.Desde && g.fecha <= presupuesto.Hasta).ToList(); foreach (var cuenta in cuentas) { decimal gastado = gastos.Where(g => g.id_cat == cuenta.id_cat)?.Sum(g => g.valor) ?? 0; data.Add(new CuentaPresResumen() { id_cuent = cuenta.id_cuent, id_pres = cuenta.id_pres, id_cat = cuenta.id_cat, Categoria = cuenta.Categoria, Limite = cuenta.Limite, Gastado = gastado }); } } return(Json(new ResponseResult() { Success = true, Data = new { List = data, TotalLimites = data.Sum(d => d.Limite), TotalGastado = data.Sum(d => d.Gastado) } })); }
public JsonResult Edit(Presupuesto model) { if (ModelState.IsValid) { //Save using (Data.FinanzasPersonales DB = new Data.FinanzasPersonales()) { //Validando que la fecha desde sea mayor o igual a la fecha hasta if (model.Desde > model.Hasta) { return(Json(new ResponseResult() { Success = false, Data = new List <ValidationResult>() { new ValidationResult() { Key = "id_pres", Errors = new ModelErrorCollection() { "La fecha 'Hasta' debe ser igual o mayor a la fecha 'Desde'" } } } })); } //Validando que otro presupuesto no entre en conflicto de fechas con este if (DB.t_presupuesto.Any(p => ( (p.Desde <= model.Desde && p.Hasta >= model.Desde) || (p.Desde <= model.Hasta && p.Hasta >= model.Hasta) ) && (p.id_pres != model.id_pres) ) ) { return(Json(new ResponseResult() { Success = false, Data = new List <ValidationResult>() { new ValidationResult() { Key = "id_pres", Errors = new ModelErrorCollection() { "Hay conflictos entre las fechas digitadas y las que existen" } } } })); } Data.t_presupuesto data = DB.t_presupuesto.Where(c => c.id_pres == model.id_pres).FirstOrDefault(); data.id_pres = model.id_pres; data.Nombre = model.Nombre; data.Desde = model.Desde; data.Hasta = model.Hasta; DB.SaveChanges(); } return(Json(new ResponseResult() { Success = true, Data = Validations.GetErrors(ModelState) })); } else { //Reject return(Json(new ResponseResult() { Success = false, Data = Validations.GetErrors(ModelState) })); } }