public static string SaveChanges(string rows) { Dictionary <string, string> result = new Dictionary <string, string>() { { "saved", "0" } , { "failed", "0" } , { "savedIds", "" } , { "failedIds", "" } , { "error", "" } }; bool exists = false, saved = false; int savedQty = 0, failedQty = 0; string ids = string.Empty, failedIds = string.Empty, errorMsg = string.Empty, tempMsg = string.Empty; try { DataTable dtjson = (DataTable)JsonConvert.DeserializeObject(rows, (typeof(DataTable))); if (dtjson.Rows.Count == 0) { errorMsg = "Unable to save. An invalid list of changes was provided."; saved = false; } else { int id = 0, allocationID = 0, proposedPriority = 0, approvedPriority = 0, systemID = 0, archive = 0; bool duplicate = false; string description = string.Empty; HttpServerUtility server = HttpContext.Current.Server; //save foreach (DataRow dr in dtjson.Rows) { id = systemID = allocationID = 0; proposedPriority = approvedPriority = archive = 0; description = string.Empty; archive = 0; duplicate = false; tempMsg = string.Empty; int.TryParse(dr["Allocation_SystemID"].ToString(), out id); int.TryParse(dr["ALLOCATION"].ToString(), out allocationID); int.TryParse(dr["WTS_SYSTEM"].ToString(), out systemID); description = server.UrlDecode(dr["DESCRIPTION"].ToString()); int.TryParse(dr["ProposedPriority"].ToString(), out proposedPriority); int.TryParse(dr["ApprovedPriority"].ToString(), out approvedPriority); int.TryParse(dr["ARCHIVE"].ToString(), out archive); if (allocationID == 0) { tempMsg = "You must specify a Allocation Assignment."; saved = false; } else { if (id == 0) { exists = false; saved = MasterData.Allocation_System_Add(allocationID: allocationID , systemID: systemID , description: description , proposedPriority: proposedPriority , approvedPriority: approvedPriority , exists: out exists , newID: out id , errorMsg: out tempMsg); if (exists) { saved = false; tempMsg = string.Format("{0}{1}{2}", tempMsg, tempMsg.Length > 0 ? Environment.NewLine : "", "Cannot add duplicate WorkType - Status record."); } } else { saved = MasterData.Allocation_System_Update(allocationSystemID: id , allocationID: allocationID , systemID: systemID , description: description , proposedPriority: proposedPriority , approvedPriority: approvedPriority , archive: (archive == 1) , duplicate: out duplicate , errorMsg: out tempMsg); } } if (saved) { ids += string.Format("{0}{1}", ids.Length > 0 ? "," : "", id.ToString()); savedQty += 1; } else { failedQty += 1; } if (tempMsg.Length > 0) { errorMsg = string.Format("{0}{1}{2}", errorMsg, errorMsg.Length > 0 ? Environment.NewLine : "", tempMsg); } } } } catch (Exception ex) { saved = false; errorMsg = ex.Message; LogUtility.LogException(ex); } result["savedIds"] = ids; result["failedIds"] = failedIds; result["saved"] = savedQty.ToString(); result["failed"] = failedQty.ToString(); result["error"] = errorMsg; return(JsonConvert.SerializeObject(result, Formatting.None)); }