public static string SaveChanges(string rows) { Dictionary <string, string> result = new Dictionary <string, string>() { { "saved", "0" } , { "failed", "0" } , { "savedIds", "" } , { "failedIds", "" } , { "error", "" } }; bool 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 == null || dtjson.Rows.Count == 0) { errorMsg = "Unable to save. No list of changes was provided."; } else { int id = 0; //save foreach (DataRow dr in dtjson.Rows) { id = 0; tempMsg = string.Empty; int.TryParse(dr["ITEMID"].ToString(), out id); WorkloadItem wi = WorkloadItem.WorkItem_GetObject(id); //update object with new values wi = parseDataRow(wi, dtjson.Clone(), dr); saved = WorkloadItem.WorkItem_QM_Update(wi, out tempMsg); if (saved) { ids += string.Format("{0}{1}", ids.Length > 0 ? "," : "", id.ToString()); savedQty += 1; Workload.SendWorkloadEmail("WorkItem", false, id); } else { failedQty += 1; } if (tempMsg.Length > 0) { errorMsg = string.Format("{0}{1}{2}", errorMsg, errorMsg.Length > 0 ? Environment.NewLine : "", tempMsg); } } } } catch (Exception ex) { LogUtility.LogException(ex); saved = false; errorMsg = ex.Message; } result["savedIds"] = ids; result["failedIds"] = failedIds; result["saved"] = savedQty.ToString(); result["failed"] = failedQty.ToString(); result["error"] = errorMsg; return(JsonConvert.SerializeObject(result, Formatting.None)); }
public static string SaveChanges(string rows) { Dictionary <string, string> result = new Dictionary <string, string>() { { "saved", "0" } , { "failed", "0" } , { "savedIds", "" } , { "failedIds", "" } , { "error", "" } }; int savedQty = 0, failedQty = 0; string ids = string.Empty, failedIds = string.Empty, errorMsg = string.Empty, tempMsg = string.Empty; int savedInt = 0; try { DataTable dtjson = (DataTable)JsonConvert.DeserializeObject(rows, (typeof(DataTable))); if (dtjson == null || dtjson.Rows.Count == 0) { errorMsg = "Unable to save. No list of changes was provided."; } else { int id = 0; int workItemID = 0, workItemStatusID = 0, workItemProgress = 0, workItemAssignedID = 0, workItemPrimaryID = 0, workItemTesterID = 0; int testItemID = 0, testItemStatusID = 0, testItemProgress = 0, testItemAssignedID = 0, testItemPrimaryID = 0, testItemTesterID = 0; bool saved = false, duplicate = false; WorkloadItem item = null, testItem = null; //save foreach (DataRow dr in dtjson.Rows) { saved = duplicate = false; id = workItemID = testItemID = 0; workItemStatusID = workItemProgress = workItemAssignedID = workItemPrimaryID = workItemTesterID = 0; testItemStatusID = testItemProgress = testItemAssignedID = testItemPrimaryID = testItemTesterID = 0; tempMsg = string.Empty; int.TryParse(dr["WorkItem_TestItemID"].ToString(), out id); int.TryParse(dr["WorkItem_Number"].ToString(), out workItemID); int.TryParse(dr["WorkItem_STATUS"].ToString(), out workItemStatusID); int.TryParse(dr["WorkItem_Progress"].ToString(), out workItemProgress); // SCB - Added "ID" to the end of these two - didn't match up with the datatable. int.TryParse(dr["WorkItem_AssignedToID"].ToString(), out workItemAssignedID); int.TryParse(dr["WorkItem_Primary_ResourceID"].ToString(), out workItemPrimaryID); int.TryParse(dr["WorkItem_TesterID"].ToString(), out workItemTesterID); int.TryParse(dr["TestItem_Number"].ToString(), out testItemID); int.TryParse(dr["TestItem_STATUS"].ToString(), out testItemStatusID); int.TryParse(dr["TestItem_Progress"].ToString(), out testItemProgress); int.TryParse(dr["TestItem_AssignedTo"].ToString(), out testItemAssignedID); int.TryParse(dr["TestItem_Primary_Resource"].ToString(), out testItemPrimaryID); int.TryParse(dr["TestItem_Tester"].ToString(), out testItemTesterID); if (workItemID == 0 || testItemID == 0) { saved = false; failedQty += 1; tempMsg = "You must specify both a Work Item and a Test Item."; } else { if (id == 0) { if (!Workload.ItemExists(workItemID, -1, "Primary Task")) { saved = false; tempMsg = string.Format("Unable to find Primary Task with ID = [{0}]", workItemID.ToString()); } else if (!Workload.ItemExists(testItemID, -1, "Primary Task")) { saved = false; tempMsg = string.Format("Unable to find Test Task with ID = [{0}]", testItemID.ToString()); } else { saved = WorkloadItem.WorkItem_TestItem_Add(workItemID: workItemID, testItemID: testItemID, archive: false, duplicate: out duplicate, newID: out id, errorMsg: out tempMsg); } } else { item = WorkloadItem.WorkItem_GetObject(workItemID); testItem = WorkloadItem.WorkItem_GetObject(testItemID); if (itemChanged(ref item, workItemStatusID, workItemProgress, workItemAssignedID, workItemPrimaryID, workItemTesterID)) { savedInt = WorkloadItem.WorkItem_Update(item, out tempMsg); } if (itemChanged(ref testItem, testItemStatusID, testItemProgress, testItemAssignedID, testItemPrimaryID, testItemTesterID)) { savedInt = WorkloadItem.WorkItem_Update(testItem, out tempMsg); } if (savedInt == 0) { saved = false; } else { saved = true; } } if (saved) { savedQty += 1; ids += string.Format("{0}{1}", ids.Length > 0 ? "," : "", id.ToString()); } else { failedQty += 1; errorMsg = string.Format("{0}{1}{2}", errorMsg, errorMsg.Length > 0 ? Environment.NewLine : "", tempMsg); } } } } } catch (Exception ex) { LogUtility.LogException(ex); errorMsg = errorMsg.Length > 0 ? ", " + Environment.NewLine + ex.Message : ex.Message; } result["savedIds"] = ids; result["failedIds"] = failedIds; result["saved"] = savedQty.ToString(); result["failed"] = failedQty.ToString(); result["error"] = errorMsg; return(JsonConvert.SerializeObject(result, Formatting.None)); }
protected void Page_Load(object sender, EventArgs e) { this.CanEdit = UserManagement.UserCanEdit(WTSModuleOption.WorkItemTask); this.CanEditAOR = UserManagement.UserCanEdit(WTSModuleOption.AOR); this.CanEditWorkloadMGMT = UserManagement.UserCanEdit(WTSModuleOption.WorkloadMGMT); readQueryString(); LoadRelatedItemsMenu(); if (this.ReadOnly) { this.CanEdit = false; this.CanEditAOR = false; } loadLookupData(); if (this.WorkItem_TaskID > 0) { loadTask(); } else { WorkloadItem wi = WorkloadItem.WorkItem_GetObject(workItemID: this.WorkItemID); ListItem li = null; li = ddlAssignedTo.Items.FindByValue(wi.AssignedResourceID.ToString()); if (li == null) { int uID = 0; int.TryParse(wi.AssignedResourceID.ToString(), out uID); WTS_User u = new WTS_User(uID); u.Load(); li = new ListItem(u.First_Name + " " + u.Last_Name, wi.AssignedResourceID.ToString()); if (u.AORResourceTeam) { li.Attributes.Add("og", "Action Team"); DataTable dt = AOR.AORResourceTeamList_Get(AORID: 0, AORReleaseID: 0); dt.DefaultView.RowFilter = "ResourceTeamUserID = " + uID; dt = dt.DefaultView.ToTable(); if (dt.Rows.Count > 0) { li.Attributes.Add("aorid", dt.Rows[0]["AORID"].ToString()); } ddlAssignedTo.Items.Insert(1, li); } else { ddlAssignedTo.Items.Insert(0, li); } } li.Selected = true; WTSUtility.SelectDdlItem(ddlPrimaryResource, wi.PrimaryResourceID.ToString(), ""); // 12817 - 30: WTSUtility.SelectDdlItem(ddlPrimaryBusResource, wi.PrimaryBusinessResourceID.ToString(), ""); WTSUtility.SelectDdlItem(ddlSecondaryResource, wi.SecondaryResourceID.ToString(), ""); WTSUtility.SelectDdlItem(ddlSecondaryBusResource, wi.SecondaryBusinessResourceID.ToString(), ""); WTSUtility.SelectDdlItem(ddlPriority, wi.PriorityID.ToString(), ""); //WTSUtility.SelectDdlItem(ddlHours_Planned, wi.EstimatedEffortID.ToString(), ""); WTSUtility.SelectDdlItem(ddlProductVersion, wi.ProductVersionID.ToString(), ""); this.lblProductVersion.Text = ddlProductVersion.SelectedItem.Text; this.SystemID = wi.WTS_SystemID; IsNew = true; this.txtWorkloadNumber.Text = this.WorkItemID.ToString() + " - NA"; DataTable parentTaskData = WorkloadItem.WorkItem_Get(workItemID: WorkItemID); txtParentTitle.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["TITLE"].ToString().Replace(" ", "").Trim())); txtResourceGroup.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["WorkType"].ToString().Replace(" ", "").Trim())); txtResourceGroup.Attributes.Add("ResourceGroupID", HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["WorkTypeID"].ToString()))); txtFunctionality.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["WorkloadGroup"].ToString().Replace(" ", "").Trim())); txtProductionStatus.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["ProductionStatus"].ToString().Replace(" ", "").Trim())); txtSystemTask.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["WTS_SYSTEM"].ToString().Replace(" ", "").Trim())); txtContract.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["CONTRACT"].ToString().Replace(" ", "").Trim())); txtWorkloadAllocation.Text = HttpUtility.HtmlDecode(Uri.UnescapeDataString(parentTaskData.Rows[0]["WorkloadAllocation"].ToString().Replace(" ", "").Trim())); int workAreaID = 0, systemID = 0; int.TryParse(parentTaskData.Rows[0]["WorkAreaID"].ToString(), out workAreaID); int.TryParse(parentTaskData.Rows[0]["WTS_SYSTEMID"].ToString(), out systemID); WTSUtility.SelectDdlItem(ddlWorkItemType, parentTaskData.Rows[0]["WorkItemTypeID"].ToString(), parentTaskData.Rows[0]["WorkItemType"].ToString()); //dynamic filters = "{ 'System(Task)':{ 'value':'" + parentTaskData.Rows[0]["WTS_SYSTEMID"].ToString() + "','text':'" + parentTaskData.Rows[0]["WTS_SYSTEM"].ToString() + "'},'Work Area':{ 'value':'" + parentTaskData.Rows[0]["WorkAreaID"].ToString() + "','text':'" + parentTaskData.Rows[0]["WorkArea"].ToString() + "'}}"; //dynamic fields = JsonConvert.DeserializeObject<Dictionary<string, object>>(filters); //bool saved = Filtering.SaveWorkFilters(module: "RQMT", filterModule: "RQMT", filters: fields, myData: false, xml: ""); DataTable dtWorkArea = MasterData.WorkArea_SystemList_Get(workAreaID: workAreaID); string workAreaText = string.Empty; if (dtWorkArea != null && dtWorkArea.Rows.Count > 1) { workAreaText = dtWorkArea.Rows[1]["ApprovedPriority"].ToString() + " - " + dtWorkArea.Rows[1]["WorkArea"].ToString(); } txtWorkArea.Text = HttpUtility.HtmlDecode(workAreaText.Replace(" ", "").Trim()); DataTable dtAORs = AOR.AORTaskAORList_Get(TaskID: WorkItemID); if (dtAORs != null && dtAORs.Rows.Count > 0) { foreach (DataRow dr in dtAORs.Rows) { if (dr["AORWorkTypeID"].ToString() == "1") { txtWorkloadAOR.Text = dr["AORID"].ToString() + " (" + dr["Abbreviation"].ToString() + ") - " + dr["AORName"].ToString(); txtWorkloadAOR.ToolTip = txtWorkloadAOR.Text; } if (dr["AORWorkTypeID"].ToString() == "2") { txtReleaseAOR.Text = dr["AORID"].ToString() + " (" + dr["Abbreviation"].ToString() + ") - " + dr["AORName"].ToString(); txtReleaseAOR.ToolTip = txtReleaseAOR.Text; ParentRelAORReleaseID = dr["AORReleaseID"].ToString(); } } } ListItem item = ddlStatus.Items.FindByText("New"); if (item != null) { item.Selected = true; } filterStatuses(true); if (wi != null) { int maxSort = 0, maxBusRank = 0; DataTable dt = WorkloadItem.WorkItem_GetTaskList(wi.WorkItemID, 1); if (dt != null && dt.Rows.Count > 0) { int sort = 0; foreach (DataRow row in dt.Rows) { int.TryParse(row["SORT_ORDER"].ToString(), out sort); if (sort > maxSort) { maxSort = sort; } int.TryParse(row["BusinessRank"].ToString(), out sort); if (sort > maxBusRank) { maxBusRank = sort; } } } txtSortOrder.Text = (maxSort + 1).ToString(); txtBusinessRank.Text = (maxBusRank + 1).ToString(); } item = ddlAssignedToRank.Items.FindByText("5 - Unprioritized Workload"); if (item != null) { item.Selected = true; } txtBusinessRank.Text = "99"; } LoadAORs(); }