Exemplo n.º 1
0
/*-----------------------------------------------------*/

	public cDataObjectList Person_Updated_WorkgroupTaskList() {
		cXMLDoc aXmlDoc;
		XmlNode aDataObjectNode, aFiltersNode, aArgNode;
		cDataObjectList aWorkGroupList, aWorkGroupTaskListL;
        cDataObjectList aWFTAList = new cDataObjectList(DataObjectFactory);
        
		aXmlDoc = DataObjectFactory.CreateDataObjectNode("WorkGroup", out aDataObjectNode, out aFiltersNode);
		aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data",
												"PersonID", this.GetPropertyString("PersonID")));
        aArgNode = aArgNode.AppendChild(DataObjectFactory.CreateArgumentRelatedPropertyNode(aXmlDoc,
												"WorkGroupMembers"));
		aWorkGroupList = DataObjectFactory.GetDataObjectList(aDataObjectNode);
		
		foreach (cDataObject aWorkGroup in aWorkGroupList) {
			aWorkGroupTaskListL = DataObjectFactory.GetDataObjectListWithFilter("WorkGroupTaskList", "WorkGroupID", aWorkGroup.GetPropertyString("WorkGroupID"));

			foreach (cDataObject aWorkGroupTaskLst in aWorkGroupTaskListL) {
				cDataObjectList		aCurWFTAList;
				
				aCurWFTAList = aWorkGroupTaskLst.GetRelatedPropertyDataObjectList("WfTaskAssignments");
				aWFTAList.AddList(aCurWFTAList);
			}
		}
		
		return aWFTAList;
	}
Exemplo n.º 2
0
/*-----------------------------------------------------*/

	public cDataObjectList Person_Updated_WorkgroupTaskList(XmlElement aDataObjectElement) {
		cXMLDoc aXmlDoc;
		XmlNode aDataObjectNode, aFiltersNode, aArgNode;
		cDataObjectList aWorkGroupList, aWorkGroupTaskListL;
		cDataObjectList aWFTAList = DataObjectFactory.CreateDataObjectList(aDataObjectElement); //This is the object that will be returned.

		aXmlDoc = DataObjectFactory.CreateDataObjectNode("WorkGroup", out aDataObjectNode, out aFiltersNode);
		aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data",
												"PersonID", this.GetPropertyString("PersonID")));
        aArgNode = aArgNode.AppendChild(DataObjectFactory.CreateArgumentRelatedPropertyNode(aXmlDoc,
												"WorkGroupMembers"));
		aWorkGroupList = DataObjectFactory.GetDataObjectList(aDataObjectNode);
		
		ArrayList wgArrayL = new ArrayList();
		int wfALIdx = 0;
		foreach (cDataObject aWorkGroup in aWorkGroupList) {
			aWorkGroupTaskListL = DataObjectFactory.GetDataObjectListWithFilter("WorkGroupTaskList", "WorkGroupID", aWorkGroup.GetPropertyString("WorkGroupID"));
			
			if (aWorkGroupTaskListL.Count == 0)
				continue;
				
			foreach (cDataObject aWorkGroupTaskLst in aWorkGroupTaskListL) 
			{
				cDataObjectList		aCurWFTAList;
				
				aCurWFTAList = aWorkGroupTaskLst.GetRelatedPropertyDataObjectList("WfTaskAssignments");
				
				if (aCurWFTAList.Count == 0)
					continue;
				foreach (cDataObject aCurWFTA in aCurWFTAList) {
					wfALIdx = wgArrayL.BinarySearch(aCurWFTA.GetPropertyInt("WfTaskAssignmentID"));
					
					if (wfALIdx >= 0)
						break;
						
					if (aCurWFTA.GetPropertyInt("WfTaskStatusID") == 1 && aCurWFTA.GetPropertyString("PersonID") == "") {
						aWFTAList.Add(aCurWFTA);
						wgArrayL.Insert(~wfALIdx, aCurWFTA.GetPropertyInt("WfTaskAssignmentID"));
						aCurWFTA.DataObjectList = aWFTAList;
					}
				}
			}
		}
		
		XmlElement aSortEl = (XmlElement)aDataObjectElement.SelectSingleNode("Sort");
		if(aSortEl != null) {
			aWFTAList.SortEl = aSortEl;
			aWFTAList.Sort();
		}
		
		return aWFTAList;
	}
Exemplo n.º 3
0
/*----------------------------------------------------*/
        /// <summary>
        /// removes workflow task assignments and deletes GranteeProjectReviewStage objects
        /// </summary>
        public void DeleteAssignments()
        {
            cDataObject     aWfProjectTask;
            cXMLDoc         aXmlDoc;
            XmlNode         aFiltersNode;
            XmlNode         aArgNode;
            XmlNode         aDataObjectNode;
            String          aProjectID;
            String          aTaskID;
            cDataObjectList aWFTARList;

            aWfProjectTask = DataObjectFactory.GetDataObjectFromPrimaryKey("WfProjectTask", GetPropertyInt("WfProjectTaskID"));
            aTaskID        = aWfProjectTask.GetPropertyString("WfTaskID");
            aProjectID     = aWfProjectTask.GetPropertyString("WfProjectID");

            //Get all workflow task assignments for this project task
            aXmlDoc = DataObjectFactory.CreateDataObjectNode("WfTaskAssignment", out aDataObjectNode, out aFiltersNode);
            aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "WfTaskID", aTaskID.ToString()));
            aArgNode = aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "WfProjectID", aProjectID.ToString()));
            aArgNode.AppendChild(DataObjectFactory.CreateArgumentRelatedPropertyNode(aXmlDoc, "GranteeProject"));
            cDataObjectList aWFTAList = DataObjectFactory.GetDataObjectList(aDataObjectNode);

            //Delete all related WfTaskAssignmentReview objects
            foreach (cDataObject aWFTADO in aWFTAList)
            {
                aWFTARList = DataObjectFactory.GetDataObjectListWithFilter("WfTaskAssignmentReview", "WfTaskAssignmentID", aWFTADO.GetPropertyString("WfTaskAssignmentID"));
                DataObjectFactory.DeleteData(aWFTARList);
            }

            //Delete WfTaskAssignment objects
            DataObjectFactory.DeleteData(aWFTAList);

            //Get and delete all GranteeProjectReviewStage objects for this stage
            aXmlDoc = DataObjectFactory.CreateDataObjectNode("GranteeProjectReviewStage", out aDataObjectNode, out aFiltersNode);
            aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "ReviewStageID", GetPropertyString("ReviewStageID")));
            cDataObjectList aGPRSList = DataObjectFactory.GetDataObjectList(aDataObjectNode);

            DataObjectFactory.DeleteData(aGPRSList);
        }
Exemplo n.º 4
0
/*====================================================*/

/*----------------------------------------------------*/
        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));
        }
Exemplo n.º 5
0
/*----------------------------------------------------*/

        public void CalculateAverageScores_WFTAReview()
        {
/*	This method, formerly called CalculateAverageScores(), is based on the older model of collecting a "primary"
 *      rating for each review assignment, which was stored in a WfTaskAssignmentReview data object with a RatingTypeID
 *      of 4. The new CalculateAverageScores() method reflects the new model of collecting multiple scores per review assignment
 *      and calculating a weighted average, which is stored in the WfTaskAssignment.ReviewRating property.
 *      Peter Larsen 7/6/2004
 */

            //cDataObjectList aGPRSDOList;
            cDataObjectList aReviewRatingsList;
            int             aWfProjectTaskID;
            int             aGranteeProjectID;
            cXMLDoc         aXMLDoc;
            XmlNode         aDataObjectNode;
            XmlNode         aFiltersNode;
            XmlNode         aArgNode;
            XmlNode         aRPNode;
            cDataObject     aGranteeProjectReviewStage;

            aWfProjectTaskID = GetPropertyInt("WfProjectTaskID");
            //aGPRSDOList = GetRelatedPropertyDataObjectList("GranteeProjectReviewStages");
            //foreach(cDataObject aGPRSDO in aGPRSDOList) {
            foreach (cGranteeProject aGPRSDO in GranteeProjectList)
            {
                aGranteeProjectID = aGPRSDO.GetPropertyInt("GranteeProjectID");
                aXMLDoc           = DataObjectFactory.CreateDataObjectNode("WfTaskAssignmentReview", out aDataObjectNode, out aFiltersNode);

                aArgNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "WfTaskID", aWfProjectTaskID.ToString());
                aRPNode  = DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "WfTaskAssignment", aArgNode);
                aFiltersNode.AppendChild(aRPNode);

                aArgNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "GranteeProjectID", aGranteeProjectID.ToString());
                aRPNode  = DataObjectFactory.CreateArgumentRelatedPropertyNode(aXMLDoc, "WfTaskAssignment", aArgNode);
                aFiltersNode.AppendChild(aRPNode);

                aArgNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "RatingTypeID", "4");
                aFiltersNode.AppendChild(aArgNode);

                aArgNode = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "Rating", "not null");
                aFiltersNode.AppendChild(aArgNode);

                aReviewRatingsList = DataObjectFactory.GetDataObjectList(aDataObjectNode);

                int    aCount       = 0;
                double aTotalRating = 0;
                foreach (cDataObject aReviewRatingDO in aReviewRatingsList)
                {
                    aCount       += 1;
                    aTotalRating += aReviewRatingDO.GetPropertyDouble("Rating");
                }
                if (aCount > 0)
                {
                    //aGPRSDO["AverageRating"] = aTotalRating/aCount;
                    //DataObjectFactory.SaveDataObject(aGPRSDO);
                    aGranteeProjectReviewStage = aGPRSDO.GetGranteeProjectReviewStageDO(aWfProjectTaskID);
                    aGranteeProjectReviewStage["AverageRating"] = aTotalRating / aCount;
                    DataObjectFactory.SaveDataObject(aGranteeProjectReviewStage);
                }
            }
            //DataObjectFactory.SaveDataObject(aGPRSDOList);
        }
Exemplo n.º 6
0
/*----------------------------------------------------*/

        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)
        }