public static object sendTable(List <Dictionary <string, string> > dataTabla, string Nperiod, Decimal total, string pestania, float inflacion) { //Here I want to iterate the objects int a = dataTabla.Count(); string json = JsonConvert.SerializeObject(dataTabla); // OBTENEMOS LOS DATOS DE LA TABLA COSTOS DEL PERIODO SELECCIONADO string id_costos = System.Guid.NewGuid().ToString("D");/**** crear los id en random formato string***/ string id_proyect = (string)System.Web.HttpContext.Current.Session["ID_Proyecto"]; string id_periodo = Nperiod; string tabl_json = json; Decimal tabl_total = total; try { // GUARDAMOS A LA BASE DE DATOS var db = new Entidades(); switch (pestania) { case "NCostos1": //Para guardar los datos por primera vez var NuevoCosto = new Costos_Pro(); NuevoCosto.ID_Costos_pro = id_costos; NuevoCosto.ID_Proyecto = id_proyect; NuevoCosto.ID_Periodo = id_periodo; NuevoCosto.Produccion = tabl_json; NuevoCosto.Ventas = ""; NuevoCosto.Financiamiento = ""; NuevoCosto.Admon = ""; NuevoCosto.Total = tabl_total; db.Costos_Pro.Add(NuevoCosto); //Guardo el id que se creo System.Web.HttpContext.Current.Session["id_costo"] = id_costos; break; default: //Para el update if (System.Web.HttpContext.Current.Session["id_costo"] != null) { string idCosto = (string)System.Web.HttpContext.Current.Session["id_costo"]; // Realizamos la consulta var costos = db.Costos_Pro.Where(costo => costo.ID_Costos_pro == idCosto); // Modificamos los objetos que consideremos oportunos foreach (var costo in costos) { if (pestania == "NCostos2") { costo.Ventas = tabl_json; costo.Total = costo.Total + tabl_total; } else if (pestania == "NCostos3") { costo.Admon = tabl_json; costo.Total = costo.Total + tabl_total; } else if (pestania == "NCostos4") { costo.Financiamiento = tabl_json; costo.Total = costo.Total + tabl_total; float val_inflacion = inflacion; Proyeccion(db, id_proyect, id_periodo, costo.Total, val_inflacion); agregar_avance(id_proyect); } } } break; } db.SaveChanges(); return("succes"); } // Most specific: catch (ArgumentNullException e) { Console.WriteLine("{0} First exception caught.", e); return(e); } }
private static object Proyeccion(Entidades db, string id_proyect, string id_periodo, decimal tabl_total, float infla) { //var inflacion = 1.5/100; var inflacion = (infla / 100) + 1; //BUSCAMOS CUANTOS PERIODOS TIENE var httpContext = HttpContext.Current; string id_user = httpContext.User.Identity.GetUserId(); var consulta = db.Proyecto.Where(Proyect => Proyect.ID_Proyecto == id_proyect); int nperiodos = 0; var claveperiodo = ""; foreach (Proyecto Proyect in consulta) { // para obtener solo el A(anual) M(mensual) claveperiodo = (Proyect.ID_Periodo).Substring((Proyect.ID_Periodo).Length - 1, 1); // para obtener solo el numero de periodo nperiodos = Int32.Parse((Proyect.ID_Periodo).Substring(0, ((Proyect.ID_Periodo).Length) - 1)); } var query = db.Costos_Pro.Where(Costos => Costos.ID_Proyecto == id_proyect && Costos.ID_Periodo == id_periodo); List <string> result_query = new List <string>(); foreach (var Result in query) { result_query.Add(Result.Produccion); result_query.Add(Result.Ventas); result_query.Add(Result.Admon); result_query.Add(Result.Financiamiento); } Decimal total = tabl_total; var arreglo = result_query; for (int i = 2; i <= nperiodos; i++) { string clave = (i - 1).ToString() + claveperiodo; List <string> campos = new List <string>(); foreach (var prime in arreglo) { List <Dictionary <string, string> > obj = Newtonsoft.Json.JsonConvert.DeserializeObject <List <Dictionary <string, string> > >(prime); foreach (Dictionary <string, string> lst in obj) { decimal costoU = decimal.Parse(lst["$ Costo Unitario"]) * (decimal)(inflacion); decimal costoT = decimal.Parse(lst["$ Costo Total"]) * (decimal)(inflacion); lst["$ Costo Unitario"] = costoU.ToString(); lst["$ Costo Total"] = costoT.ToString(); } campos.Add(JsonConvert.SerializeObject(obj)); } total = total * (decimal)inflacion; //GUARDAMOS string id_costos = System.Guid.NewGuid().ToString("D"); var NuevoCosto = new Costos_Pro(); NuevoCosto.ID_Costos_pro = id_costos; NuevoCosto.ID_Proyecto = id_proyect; NuevoCosto.ID_Periodo = i + claveperiodo; NuevoCosto.Produccion = campos[0]; NuevoCosto.Ventas = campos[1]; NuevoCosto.Admon = campos[2]; NuevoCosto.Financiamiento = campos[3]; NuevoCosto.Total = total; db.Costos_Pro.Add(NuevoCosto); arreglo = campos; } return("succes"); }