public JsonResult Delete(int id)
        {
            CuentaPres data = new CuentaPres();

            using (Data.FinanzasPersonales DB = new Data.FinanzasPersonales())
            {
                var fromDb = DB.t_cuenta_pres.Where(c => c.id_cuent == id).FirstOrDefault();
                if (fromDb == null)
                {
                    Response.StatusCode = 404;
                    return(Json(new ResponseResult()
                    {
                        Success = false, Data = "Not found"
                    }));
                }
                var pres = DB.t_presupuesto.Where(a => a.id_pres == fromDb.id_pres).FirstOrDefault();
                if (DB.t_Gastos.Any(a => (a.fecha >= pres.Desde && a.fecha <= pres.Hasta) && a.id_cat == fromDb.id_cat))
                {
                    return(Json(new ResponseResult()
                    {
                        Success = false, Data = "No se puede eliminar la cuenta, debido a que tiene registros vinculados"
                    }));
                }

                DB.t_cuenta_pres.Remove(fromDb);
                DB.SaveChanges();
            }
            return(Json(new ResponseResult()
            {
                Success = true, Data = "Éxito"
            }));
        }
        public JsonResult Get(int id)
        {
            CuentaPres data = new CuentaPres();

            using (Data.FinanzasPersonales DB = new Data.FinanzasPersonales())
            {
                var fromDbCat = DB.t_cuenta_pres.Where(c => c.id_cuent == id).FirstOrDefault();
                if (fromDbCat == null)
                {
                    Response.StatusCode = 404;
                    return(Json(new ResponseResult()
                    {
                        Success = false, Data = "Not found"
                    }));
                }
                else
                {
                    data = new CuentaPres()
                    {
                        id_cuent  = fromDbCat.id_cuent,
                        id_pres   = fromDbCat.id_pres,
                        id_cat    = fromDbCat.id_cat,
                        Limite    = fromDbCat.Limite,
                        Categoria = DB.t_Categoria_gasto.Where(c => c.id_cat == fromDbCat.id_cat).FirstOrDefault().Nombre
                    };
                }
            }
            return(Json(data));
        }
        public JsonResult Edit(CuentaPres model)
        {
            if (ModelState.IsValid)
            {
                //Save
                using (Data.FinanzasPersonales DB = new Data.FinanzasPersonales())
                {
                    //Validando que solo exista una cuenta presupuestaria para esta categoria
                    if (DB.t_cuenta_pres.Any(a => (a.id_cat == model.id_cat && a.id_pres == model.id_pres) && a.id_cuent != model.id_cuent))
                    {
                        return(Json(new ResponseResult()
                        {
                            Success = false,
                            Data = new List <ValidationResult>()
                            {
                                new ValidationResult()
                                {
                                    Key = "id_cat",
                                    Errors = new ModelErrorCollection()
                                    {
                                        "Ya existe esta categoria de gasto en este presupuesto"
                                    }
                                }
                            }
                        }));
                    }
                    Data.t_cuenta_pres data = DB.t_cuenta_pres.Where(c => c.id_cuent == model.id_cuent).FirstOrDefault();

                    data.id_pres = model.id_pres;
                    data.id_cat  = model.id_cat;
                    data.Limite  = model.Limite;

                    DB.SaveChanges();
                }
                return(Json(new ResponseResult()
                {
                    Success = true, Data = Validations.GetErrors(ModelState)
                }));
            }
            else
            {
                //Reject
                return(Json(new ResponseResult()
                {
                    Success = false, Data = Validations.GetErrors(ModelState)
                }));
            }
        }