/*-----------------------------------------------------*/ public cEGUser EGUser_From_UserDataobject(cDataObject aUserDO, out cXMLDoc aModuleDoc) { cEGUser aUser = EGUser_From_EGUserType(aUserDO.GetRelatedPropertyString("UserType.UserType_Abbr"), out aModuleDoc); aUser.UserID = aUserDO.GetPropertyInt("UserID"); aUser.PersonID = aUserDO.GetPropertyInt("PersonID"); aUser.AccessLevel = aUserDO.GetRelatedPropertyInt("UserType.AccessLevel"); //aUser.SetPersonRoles(); //call after PersonID is set return aUser; }
/*-----------------------------------------------------*/ public int Get_EG_User() { int aUserID; cDataObject aUser = this.GetRelatedPropertyDataObject("User"); if (aUser != null) return aUser.GetPropertyInt("UserID",0); else return 0; }
/*====================================================*/ ///<summary> ///Delete from database existing review assignments for this GranteeProject ///</summary> public void DeleteReviewAssignments(int aWfProjectTaskID) { cDataObject GranteeProjectReviewStageDO; cDataObjectList aReviewAssignmentList; GranteeProjectReviewStageDO = GetGranteeProjectReviewStageDO(aWfProjectTaskID); DataObjectFactory.DeleteData(GranteeProjectReviewStageDO); cDataObject aWfProjectTaskDO = DataObjectFactory.GetDataObjectFromPrimaryKey("WfProjectTask", aWfProjectTaskID); aReviewAssignmentList = GetReviewAssignments(aWfProjectTaskDO.GetPropertyInt("WfTaskID")); DataObjectFactory.DeleteData(aReviewAssignmentList); }
/*====================================================*/ public void ValidateNavigationForReopened() { cDataObject aWfTaskAssignment = WebSession.DataObjectFactory.GetDataObjectFromPrimaryKey("WfTaskAssignment", WfTaskAssignmentID); if (aWfTaskAssignment.GetPropertyInt("WfTaskStatusID") == 4) { //Check to see if there is an active reopen request. If so, cDataObject aReopenRequest = aWfTaskAssignment.GetRelatedPropertyDataObject("ActiveRequestToReopenThis"); if (aReopenRequest != null) { //Check to see if there are reopen sections. If so, cDataObjectList aReopenSectionList = aReopenRequest.GetRelatedPropertyDataObjectList("WftaReopenSections"); if (aReopenSectionList.Count > 0) { ModuleUser.MasterNavElement.NavElement_FirstLevel_ValidateForReopened(aReopenSectionList); } } } }
/*----------------------------------------------------*/ public void CalculateAverageScores() { cXMLDoc aXMLDoc; XmlNode aDataObjectNode; XmlNode aFiltersNode; XmlNode aArgNode; cDataObjectList aReviewWFTAList; cDataObject aWfProjectTask = GetRelatedPropertyDataObject("WfProjectTask"); foreach (cGranteeProject aGPDO in GranteeProjectList) { //Get all review WfTaskAssignment objects for this grantee project and review stage. aXMLDoc = DataObjectFactory.CreateDataObjectNode("WfTaskAssignment", out aDataObjectNode, out aFiltersNode); aArgNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "WfTaskID", aWfProjectTask.GetPropertyString("WfTaskID")); aFiltersNode.AppendChild(aArgNode); aArgNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "GranteeProjectID", aGPDO.GetPropertyString("GranteeProjectID")); aFiltersNode.AppendChild(aArgNode); aReviewWFTAList = DataObjectFactory.GetDataObjectList(aDataObjectNode); //Loop through list, getting sum and count of ReviewRating property. int aCount = 0; double aTotalRating = 0; foreach (cDataObject aReviewWFTADO in aReviewWFTAList) { if (aReviewWFTADO["ReviewRating"] != System.DBNull.Value) { aCount += 1; aTotalRating += aReviewWFTADO.GetPropertyDouble("ReviewRating"); } } //Calculate mean and save to GranteeProjectReviewStage data object. if (aCount > 0) { cDataObject aGPRSDO = aGPDO.GetGranteeProjectReviewStageDO(aWfProjectTask.GetPropertyInt("WfProjectTaskID")); aGPRSDO["AverageRating"] = aTotalRating / aCount; aGPRSDO.SaveData(); } } }
public void SetMemberVariables(cDataObject aProcessEventDO) { Success = aProcessEventDO.GetPropertyBool("Success", false); StatusID = aProcessEventDO.GetPropertyInt("StatusID", 0); Message = aProcessEventDO.GetPropertyString("StatusMessage", ""); }
/*====================================================*/ public void SaveReviewAssignments(int aWfProjectTaskID) { cDataObject aWfProjectTask = this.DataObjectList.DataObjectFactory.GetDataObjectFromPrimaryKey("WfProjectTask", aWfProjectTaskID); SaveReviewAssignments(aWfProjectTaskID, aWfProjectTask.GetPropertyInt("WfTaskID")); }
/*====================================================*/ /*----------------------------------------------------*/ public cDataObjectList GetWfTaskAssignmentList() { //returns a list of WfTaskAssignment data objects that meet the criteria for receiving an e-mail reminder (WfProjectTask, //WfTaskStatus, and interval before or after a key project date) int aWfProjectID; int aWfTaskID; XmlNode aDataObjectNode; XmlNode aFiltersNode; XmlNode aArgNode; bool aOverridableDateType = false; //Get filter values //Project and task IDs (We cannot currently filter directly on WfTaskAssignment.WfProjectTask for technical reasons) if (GetPropertyValue("ProjectTaskID") != System.DBNull.Value) { cDataObject aWfProjectTask = DataObjectFactory.GetDataObjectFromPrimaryKey("WfProjectTask", GetPropertyInt("ProjectTaskID")); aWfProjectID = aWfProjectTask.GetPropertyInt("WfProjectID"); aWfTaskID = aWfProjectTask.GetPropertyInt("WfTaskID"); } else { aWfProjectID = GetPropertyInt("WfProjectID"); aWfTaskID = GetPropertyInt("WfTaskID"); } //Get date value against which to compare dates in database (today's date offset by the interval defined in the reminder object) int aInterval = GetPropertyInt("DaysToRemind"); if (GetPropertyInt("BeforeAfterID") == 2) { aInterval = -1 * aInterval; } DateTime aCompareDate = DateTime.Today.Add(new TimeSpan(aInterval, 0, 0, 0)); String aCompareDateStr = String.Format("{0:yyyy/M/d}", aCompareDate); DateTime aCompareDateNext = aCompareDate.Add(new TimeSpan(1, 0, 0, 0)); String aCompareDateStrNext = String.Format("{0:yyyy/M/d}", aCompareDateNext); //Check to see if the date type is one that is overridable by the individual WfTaskAssignment String aReminderTargetType = GetRelatedPropertyString("ReminderTarget.Abbr"); if (aReminderTargetType == "OpenDate" || aReminderTargetType == "DueDate" || aReminderTargetType == "CloseDate") { aOverridableDateType = true; } //Build filter nodes cXMLDoc aXMLDoc = DataObjectFactory.CreateDataObjectNode("WfTaskAssignment", out aDataObjectNode, out aFiltersNode); aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", "WfTaskID", aWfTaskID.ToString())); aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", "WfTaskStatusID", "1")); aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", "WfProjectID", aWfProjectID.ToString())); DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "GranteeProject", aArgNode); //If the date type is not overridable, we just have to filter on the appropriate date from the WfProjectTask. Otherwise, //we have to filter on (WfProjectTask date meets criteria AND WfTaskAssignment date is null) OR (WfTaskAssignment date meets criteria) if (aOverridableDateType) { aFiltersNode.AppendChild(DataObjectFactory.CreateGroupArgumentNode(aXMLDoc, "(", "And")); aFiltersNode.AppendChild(DataObjectFactory.CreateGroupArgumentNode(aXMLDoc, "(", "")); } //aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, aCompareDateStr, "")); //DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "WfProjectTask", aArgNode); aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, aCompareDateStr, "", "GreaterThanEqual")); DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "WfProjectTask", aArgNode); aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, aCompareDateStrNext, "And", "LessThan")); DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "WfProjectTask", aArgNode); if (aOverridableDateType) { aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, "null")); aFiltersNode.AppendChild(DataObjectFactory.CreateGroupArgumentNode(aXMLDoc, ")", "")); //aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, aCompareDateStr, "Or")); aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, aCompareDateStr, "Or", "GreaterThanEqual")); aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", aReminderTargetType, aCompareDateStrNext, "And", "LessThan")); aFiltersNode.AppendChild(DataObjectFactory.CreateGroupArgumentNode(aXMLDoc, ")", "")); } //Get data object list return(DataObjectFactory.GetDataObjectList(aDataObjectNode)); }
/*----------------------------------------------------*/ public void GenerateAutomaticRequestsConflicts(XmlNodeList aRCTypeNodeList) { //In this method, the string "RC" within a variable name refers to "Request/Conflict" (e.g., aRCTypeNodeList) int aWfTaskID = GetRelatedPropertyDataObject("WfProjectTask").GetPropertyInt("WfTaskID"); //Delete all existing requests and/or conflicts for this stage XmlNode aRCDONode; XmlNode aFiltersNode; XmlNode aArgumentNode; XmlNode aRelatedPropertyNode; cXMLDoc aXMLDoc = DataObjectFactory.CreateDataObjectNode("WfTaskAssignmentRequestConflict", out aRCDONode, out aFiltersNode); aArgumentNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", "WfTaskID", aWfTaskID.ToString()); aRelatedPropertyNode = DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "WfTaskAssignment", aArgumentNode); aFiltersNode.AppendChild(aArgumentNode); aArgumentNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", "Automatic", "True"); aFiltersNode.AppendChild(aArgumentNode); cDataObjectList aRCDOList = DataObjectFactory.GetDataObjectList(aRCDONode); DataObjectFactory.DeleteData(aRCDOList); //Get DOList of all review assignment WFTAs for request/conflict stage XmlNode aWFTADONode; aXMLDoc = DataObjectFactory.CreateDataObjectNode("WfTaskAssignment", out aWFTADONode, out aFiltersNode); aArgumentNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "Data", "WfTaskID", aWfTaskID.ToString()); aFiltersNode.AppendChild(aArgumentNode); cDataObjectList aWFTADOList = DataObjectFactory.GetDataObjectList(aWFTADONode); int aIndex; String aRevFullKey; String aRevRelatedKey; String aRevPropertyKey; cDataObjectList aRevDOList; String aAppFullKey; String aAppRelatedKey; String aAppPropertyKey; cDataObjectList aAppDOList; XmlNode aReviewerNode; XmlNodeList aRevFiltersNodeList; XmlNode aApplicantNode; XmlNodeList aAppFiltersNodeList; int aRCID = 0; int i; //foreach(cDataObject aWFTADO in aWFTADOList) { for (i = 0; i < aWFTADOList.Count; i++) { cDataObject aWFTADO = aWFTADOList[i]; Debug.WriteLine("Checking " + i.ToString() + " of " + aWFTADOList.Count.ToString()); bool aRC = false; foreach (XmlNode aRCTypeNode in aRCTypeNodeList) { //Get reviewer property data object list aReviewerNode = aRCTypeNode.SelectSingleNode("Reviewer"); aRevFiltersNodeList = aReviewerNode.SelectNodes("Filters/Argument"); aRevFullKey = cXMLDoc.AttributeToString(aReviewerNode, "PropertyKey"); aIndex = aRevFullKey.LastIndexOf("."); if (aIndex == -1) { aRevDOList = this.DataObjectList; aRevPropertyKey = aRevFullKey; } else { aRevRelatedKey = aRevFullKey.Substring(0, aIndex); aRevDOList = aWFTADO.GetRelatedPropertyDataObjectList(aRevRelatedKey); aRevPropertyKey = aRevFullKey.Substring(aIndex + 1); } //Get applicant property data object list aApplicantNode = aRCTypeNode.SelectSingleNode("Applicant"); aAppFiltersNodeList = aApplicantNode.SelectNodes("Filters/Argument"); aAppFullKey = cXMLDoc.AttributeToString(aApplicantNode, "PropertyKey"); aIndex = aAppFullKey.LastIndexOf("."); if (aIndex == -1) { aAppDOList = this.DataObjectList; aAppPropertyKey = aAppFullKey; } else { aAppRelatedKey = aAppFullKey.Substring(0, aIndex); aAppDOList = aWFTADO.GetRelatedPropertyDataObjectList(aAppRelatedKey); aAppPropertyKey = aAppFullKey.Substring(aIndex + 1); } //Loop through both lists; return true if any values are equal foreach (cDataObject aRevDO in aRevDOList) { if (aRevDO.MeetsFilterCriteria(aRevFiltersNodeList)) { foreach (cDataObject aAppDO in aAppDOList) { if (aAppDO.MeetsFilterCriteria(aAppFiltersNodeList)) { if (aRevDO.GetPropertyString(aRevPropertyKey) == aAppDO.GetPropertyString(aAppPropertyKey)) { aRC = true; aRCID = Convert.ToInt32(cXMLDoc.AttributeToString(aRCTypeNode, "ID")); break; } } } //foreach(cDataObject aAppDO in aAppDOList) } if (aRC) { break; } } //foreach(cDataObject aRevDO in aRevDOList) if (aRC) { break; } } //foreach(XmlNode aRCTypeNode in aRCTypeNodeList) if (aRC) { //Get request/conflict definition to find out whether this is a request or a conflict cDataObject aRCDefDO = DataObjectFactory.GetDataObjectFromPrimaryKey("Conflict", aRCID.ToString()); int aRequestConflictID = aRCDefDO.GetPropertyInt("RequestConflictID"); //Write request/conflict row cDataObject aRCDO; aRCDO = DataObjectFactory.CreateNewDataObjectFromKey("WfTaskAssignmentRequestConflict"); aRCDO["ConflictID"] = aRCID; aRCDO["WfTaskAssignmentID"] = aWFTADO.GetPropertyInt("WfTaskAssignmentID"); aRCDO["RequestConflictID"] = aRequestConflictID; aRCDO["Automatic"] = true; DataObjectFactory.SaveDataObject(aRCDO); } } //foreach(cDataObject aWFTADO in aWFTADOList) }