Exemple #1
0
/*-----------------------------------------------------*/

	public cEGUser ValidateLoginCredentials(String aLoginID, String aPassword, bool aEnforceUserNameCase, bool aEnforcePasswordCase,
											out cXMLDoc aModuleDoc) {
		
		XmlNode aDataObjectNode;
		XmlNode aFiltersNode;
		
		//Construct User data object node
		cXMLDoc aXmlDoc = DataObjectFactory.CreateDataObjectNode("User", out aDataObjectNode, out aFiltersNode);	
		aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "UserName", aLoginID));
		
		cDataObjectList aDOL = DataObjectFactory.GetDataObjectList(aDataObjectNode);
		cDataObject aDataObject = null;
		
		foreach (cDataObject aDO in aDOL) {
			if (aDO.GetPropertyString("Password").ToLower() == aPassword.ToLower()) {
				aDataObject = aDO;
				break;
			}
		}
        
        if (aDataObject!=null &&
			(!aEnforceUserNameCase || aDataObject.GetPropertyString("UserName") == aLoginID) &&
			(!aEnforcePasswordCase || aDataObject.GetPropertyString("Password") == aPassword)){
			cEGUser aUser = EGUser_From_UserDataobject(aDataObject, out aModuleDoc);
			return aUser;
		}

		aModuleDoc = null;
		return null;
	}
Exemple #2
0
/*====================================================*/

        public void GenerateGrantNumber()
        {
            cDataObject aGP_EMF = null;
            cDataObject aWfProject;
            cDataObject aWfCompetition;
            cDataObject aWfProgram;
            cDataObject aWfCompetitionEMF;

            aGP_EMF = GetRelatedPropertyDataObject("GranteeProjectEMF");
            if (aGP_EMF != null)
            {
                if (aGP_EMF.GetPropertyString("GrantNumber", "") == "")
                {
                    aWfProject             = GetRelatedPropertyDataObject("WfProject");
                    aWfCompetition         = aWfProject.GetRelatedPropertyDataObject("WfCompetition");
                    aWfProgram             = aWfCompetition.GetRelatedPropertyDataObject("WfProgram");
                    aWfCompetitionEMF      = aWfCompetition.GetRelatedPropertyDataObject("CompetitionEMF");
                    aGP_EMF["GrantNumber"] = aWfProgram.GetRelatedPropertyString("ProgramEMF.GrantNumberPart") + "-"
                                             + aWfCompetition.GetRelatedPropertyString("CompetitionEMF.GrantNumberPart") + "-"
                                             + aWfCompetitionEMF.GetPropertyString("NextAutoNumber") + "-"
                                             + aWfProject.GetRelatedPropertyString("WfProjectEMF.GrantNumberPart");

                    //TO DO: make it work in transaction mode
                    //increase auto number in CompetitionEMF
                    aWfCompetitionEMF["NextAutoNumber"] = aWfCompetitionEMF.GetPropertyInt("NextAutoNumber") + 1;
                    DataObjectFactory.SaveDataObject(aWfCompetitionEMF);
                    //save GrantNumber in GranteeProjectEMF
                    DataObjectFactory.SaveDataObject(aGP_EMF);
                }
            }
        }
Exemple #3
0
        /*-----------------------------------------------------*/

        public void GetFileUrl(cDataObject aUploadTemplateDO, out cDataObject aSharePointDO, out String aRemoteOrginalFileURL)
        {
            aRemoteOrginalFileURL = "";
            aSharePointDO         = WebSession.DataObjectFactory.GetDataObjectListWithFilter("SharePointIntegration", "Active", "True")[0];
            if (aSharePointDO == null)
            {
                return;
            }
            String aUploadTemplateID = aUploadTemplateDO.GetPropertyString("UploadTemplateID");
            String aFileNamePrefix   = aUploadTemplateDO.GetPropertyString("FileNamePrefix");
            String aSourceFileName   = aUploadTemplateDO.GetPropertyString("SourceFileName");
            String aSourceExt        = aSourceFileName.Substring(aSourceFileName.LastIndexOf(".") + 1);
            String aUploadFileName   = aUploadTemplateID + "_" + aFileNamePrefix;
            String aSiteName         = cWebLib.GetFormattedUrl(aSharePointDO.GetPropertyString("SiteName"));
            String aSPUrl            = cWebLib.GetFormattedUrl(aSharePointDO.GetPropertyString("SharePointURL"));

            aRemoteOrginalFileURL = cWebLib.TruncateFolderName(aSPUrl + aSiteName + "Templates" + "/" + "Upload Manager" + "/" + aUploadFileName + "." + aSourceExt);
        }
Exemple #4
0
/*====================================================*/

        public void SaveData(int aUserID)
        {
            /*If PrimaryPersonID or PrimaryOrganizationID has been changed, write a copy of the data from
             * the database to GRANTEE_PROJECT_HISTORY before updating*/

            if (!this.IsNewDataObject)
            {
                cDataObject aGranteeProject = this.DataObjectFactory.GetDataObjectFromPrimaryKey("GranteeProject", GetPropertyInt("GranteeProjectID"));

                //Check the properties to see if either one has changed. Using GetPropertyString allows us to check numbers
                //against nulls and vice-versa.
                if (aGranteeProject.GetPropertyString("PrimaryOrganizationID") != this.GetPropertyString("PrimaryOrganizationID") ||
                    aGranteeProject.GetPropertyString("PrimaryPersonID") != this.GetPropertyString("PrimaryPersonID"))
                {
                    SaveHistory(aGranteeProject, aUserID);
                }
            }
            base.SaveData();
        }
Exemple #5
0
        /*-----------------------------------------------------*/

        public void GetFileUrl(cDataObject aSubmittedFileDataObj, out cDataObject aSharePointDO, out String aRemotePDFURL, out String aRemoteOrginalURL)
        {
            aRemotePDFURL     = "";
            aRemoteOrginalURL = "";
            aSharePointDO     = WebSession.DataObjectFactory.GetDataObjectListWithFilter("SharePointIntegration", "Active", "True")[0];
            if (aSharePointDO == null)
            {
                return;
            }
            switch (aSubmittedFileDataObj.GetPropertyString("EntityDataObjectKey"))
            {
            case "WfTaskAssignment":
            case "GranteeProject":
                BuildURL(aSubmittedFileDataObj, aSharePointDO, aSubmittedFileDataObj.GetPropertyString("EntityDataObjectKey"), out aRemotePDFURL, out aRemoteOrginalURL);
                break;

            default:
                //This case needs to be handeled for Granteeproject , Person , Organization , WordMerge
                BuildURL(aSubmittedFileDataObj, aSharePointDO, aSubmittedFileDataObj.GetRelatedPropertyString("FileType.EntityDataObjectKey"), out aRemotePDFURL, out aRemoteOrginalURL);
                break;
            }
        }
Exemple #6
0
        /*====================================================*/

        ///<summary>
        ///selects a third party by taking a PersonRelationShip and:
        ///* creating a WfTaskAssighment for this third party role
        ///* note that the user already exists
        ///</summary>
        public virtual cWfTaskAssignment SelectThirdParty(String aPersonRelationshipID)
        {
            cDataObjectList aChildProjectTasksObjectList;

            // This following code needs to be modified if there are mutiple third parties for one project task.
            aChildProjectTasksObjectList = WfTaskAssignmentObject.GetRelatedPropertyDataObjectList("WfProjectTask.ChildProjectTasks");
            if (aChildProjectTasksObjectList.Count > 1)
            {
                cDataObject aPersonRelationshipDO = WebSession.DataObjectFactory.GetDataObjectFromPrimaryKey("PersonRelationship", aPersonRelationshipID);
                cXMLDoc     aXmlDoc;
                XmlNode     aDataObjectNode, aFiltersNode, aArgNode;
                aXmlDoc = WebSession.DataObjectFactory.CreateDataObjectNode("WfProjectTask", out aDataObjectNode, out aFiltersNode);
                aFiltersNode.AppendChild(WebSession.DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "ParentProjectTaskID", WfTaskAssignmentObject.GetRelatedPropertyString("WfProjectTask.WfProjectTaskID")));
                aArgNode = aFiltersNode.AppendChild(WebSession.DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "ID", aPersonRelationshipDO.GetPropertyString("RelatedPersonRoleID")));
                aArgNode.AppendChild(WebSession.DataObjectFactory.CreateArgumentRelatedPropertyNode(aXmlDoc, "AssignToRoleWorkgroupStaffcontact"));
                cDataObject aChildProjectTaskDO = WebSession.DataObjectFactory.GetDataObject(aDataObjectNode);
                return(SelectThirdParty(aPersonRelationshipID, aChildProjectTaskDO.GetPropertyString("WfTaskID")));
            }
            else if (aChildProjectTasksObjectList.Count == 1)
            {
                return(SelectThirdParty(aPersonRelationshipID, aChildProjectTasksObjectList[0].GetPropertyString("WfTaskID")));
            }
            return(null);
        }
Exemple #7
0
/*----------------------------------------------------*/

        protected cDataObjectList Get_WfProjectTasks(cDataObject aWfProjectTaskCur, string aFilterCriteria)
        {
            cXMLDoc aXMLDoc;
            XmlNode aDataObjectNode;
            XmlNode aFiltersNode;
            XmlNode aArgNode;
            XmlNode aSortNode;

            aXMLDoc = DataObjectFactory.CreateDataObjectNode("WfProjectTask", out aDataObjectNode, out aFiltersNode);
            aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "WfProjectID", aWfProjectTaskCur.GetPropertyString("WfProjectID")));
            if (aFilterCriteria.Length > 0)
            {
                aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "SortOrder", aWfProjectTaskCur.GetPropertyString("SortOrder"), "and", aFilterCriteria));
            }

            aSortNode = aXMLDoc.XMLDocument.CreateNode(XmlNodeType.Element, "Sort", "");
            aArgNode  = DataObjectFactory.CreateArgumentNode(aXMLDoc, "", "SortOrder", "");
            aSortNode.AppendChild(aArgNode);
            aDataObjectNode.AppendChild(aSortNode);
            return(DataObjectFactory.GetDataObjectList(aDataObjectNode));
        }
	public void SetMemberVariables(cDataObject aProcessEventDO) {
		Success = aProcessEventDO.GetPropertyBool("Success", false);
		StatusID = aProcessEventDO.GetPropertyInt("StatusID", 0);
		Message = aProcessEventDO.GetPropertyString("StatusMessage", "");
	}
        public override void ProcessEvent(string aPropertyKey, cDataObject aWFTADO)
        {
            cXMLDoc aXmlDoc;
            XmlNode aDataObjectNode, aFiltersNode;

            aXmlDoc = DataObjectFactory.CreateDataObjectNode(DefinitionKey, out aDataObjectNode, out aFiltersNode);
            aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", aPropertyKey, aWFTADO.GetPropertyString(aPropertyKey)));
            if (DataObjectFactory.CreateNewDataObjectFromKey(DefinitionKey).HasProperty("UserID"))
            {
                aFiltersNode.AppendChild(DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "UserID", DataObjectFactory.User.UserID.ToString()));
            }
            ProcessEvent(aDataObjectNode);
        }
Exemple #10
0
        public void BuildURL(cDataObject aSubmittedFileDataObj, cDataObject aSharePointDO, string FileType, out string aRemotePDFURL, out string aRemoteOrginalURL)
        {
            String aSiteName                 = cWebLib.GetFormattedUrl(aSharePointDO.GetPropertyString("SiteName"));
            String aSPUrl                    = cWebLib.GetFormattedUrl(aSharePointDO.GetPropertyString("SharePointURL"));
            String aSubmittedFileID          = aSubmittedFileDataObj.GetPropertyString("SubmittedFileID");
            String aSourceFileName           = aSubmittedFileDataObj.GetPropertyString("SourceFileName");
            String aSourceExt                = aSourceFileName.Substring(aSourceFileName.LastIndexOf(".") + 1);
            String aFileNamePrefix           = aSourceFileName.Substring(0, aSourceFileName.LastIndexOf("."));
            String aEntityID                 = aSubmittedFileDataObj.GetPropertyString("EntityID");
            String aDestinationFolder        = "";
            String aDestinationContextFolder = "";
            String aUploadFileName           = "";

            switch (FileType)
            {
            case "GranteeProject":
            case "WfTaskAssignment":
                String aGPID;
                if (aSubmittedFileDataObj.GetRelatedPropertyString("TaskUploadType.Upload.FileNamePrefix") != "")
                {
                    aFileNamePrefix = aSubmittedFileDataObj.GetRelatedPropertyString("TaskUploadType.Upload.FileNamePrefix");
                }

                if (aSubmittedFileDataObj.GetPropertyString("EntityDataObjectKey") == "WfTaskAssignment")
                {
                    aGPID = aSubmittedFileDataObj.GetRelatedPropertyString("WfTaskAssignment.GranteeProjectID");
                }
                else
                {
                    aGPID = aSubmittedFileDataObj.GetPropertyString("EntityID");
                }

                cDataObject aGranteeProjectDO  = WebSession.DataObjectFactory.GetDataObjectListWithFilter("GranteeProject", "GranteeProjectID", aGPID)[0];
                String      aFCFolderName      = aGranteeProjectDO.GetRelatedPropertyString("WfProjectID") + "_" + TruncateSpecialCharacters(aSharePointDO, aGranteeProjectDO.GetRelatedPropertyString("WfProject.ShortName"));
                String      aFOFolderName      = aGranteeProjectDO.GetRelatedPropertyString("WfProject.CompetitionID") + "_" + TruncateSpecialCharacters(aSharePointDO, aGranteeProjectDO.GetRelatedPropertyString("WfProject.WfCompetition.ShortName"));
                String      aProgramFolderName = aGranteeProjectDO.GetRelatedPropertyString("WfProject.WfCompetition.ProgramID") + "_" + TruncateSpecialCharacters(aSharePointDO, aGranteeProjectDO.GetRelatedPropertyString("WfProject.WfCompetition.WfProgram.ShortName"));
                String      aGPFolderName      = aGPID + "_EGID";
                aUploadFileName           = aSubmittedFileID + "_" + aFileNamePrefix;
                aDestinationFolder        = aProgramFolderName + "/" + aFOFolderName + "/" + aFCFolderName + "/" + aGPFolderName + "/";
                aDestinationContextFolder = "Grants/";
                break;

            case "Person":
                cDataObject aPersonDO   = WebSession.DataObjectFactory.GetDataObjectListWithFilter("Person", "PersonID", aEntityID)[0];
                String      aPersonName = aPersonDO.GetPropertyString("FirstName") + aPersonDO.GetPropertyString("LastName") + aPersonDO.GetPropertyString("MiddleName", "");
                aDestinationFolder        = aEntityID + "_" + TruncateFolderName(TruncateSpecialCharacters(aSharePointDO, aPersonName), "Person") + "/";
                aUploadFileName           = aSubmittedFileID + "_" + aFileNamePrefix;
                aDestinationContextFolder = "Contacts/Persons/";
                break;

            case "Organization":
                cDataObject aOrganizationDO         = WebSession.DataObjectFactory.GetDataObjectListWithFilter("Organization", "OrganizationID", aEntityID)[0];
                String      aCommonOrganizationName = aOrganizationDO.GetPropertyString("CommonOrganizationName");
                aDestinationFolder        = aEntityID + "_" + TruncateFolderName(TruncateSpecialCharacters(aSharePointDO, aCommonOrganizationName), "Organization") + "/";
                aUploadFileName           = aSubmittedFileID + "_" + aFileNamePrefix;
                aDestinationContextFolder = "Contacts/Organizations/";
                break;

            case "WordMerge":
                if (aSubmittedFileDataObj.GetRelatedPropertyString("FileNamePrefix") != "")
                {
                    aFileNamePrefix = aSubmittedFileDataObj.GetRelatedPropertyString("FileNamePrefix");
                }
                aUploadFileName = aSubmittedFileID + "_" + aFileNamePrefix;
                break;

            case "WfProject":
                aUploadFileName = aSubmittedFileID + "_" + aSourceFileName.Substring(0, aSourceFileName.IndexOf("."));
                cDataObjectList aWfProjectDOL = WebSession.DataObjectFactory.GetDataObjectListFromPrimaryKey("WfProject", aSubmittedFileDataObj.GetPropertyString("EntityID"));
                aDestinationFolder        = aWfProjectDOL[0].GetRelatedPropertyString("WfCompetition.CompetitionID") + "_" + TruncateSpecialCharacters(aSharePointDO, aWfProjectDOL[0].GetRelatedPropertyString("WfCompetition.ShortName")) + "/";
                aDestinationContextFolder = "Projects/";
                break;
            }

            aRemoteOrginalURL = cWebLib.TruncateFolderName(aSPUrl + aSiteName + aDestinationContextFolder + aDestinationFolder + aUploadFileName + "." + aSourceExt);
            aRemotePDFURL     = cWebLib.TruncateFolderName(aSPUrl + aSiteName + aDestinationContextFolder + aDestinationFolder + aUploadFileName + "." + "PDF");
        }
Exemple #11
0
 public string TruncateSpecialCharacters(cDataObject aSPIntegrationDO, String aFolderName)
 {
     //string pattern = "[^~\"#%&*:<>?\\//{|}.]*";
     return(Regex.Replace(aFolderName, aSPIntegrationDO.GetPropertyString("InvalidCharacterRegex", ""), ""));
 }
Exemple #12
0
/*----------------------------------------------------*/

        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();
                }
            }
        }
Exemple #13
0
/*====================================================*/

	public override void RaiseEvent(cDataObjectList aDataObjectList, int aUserID){
		cCorrespondenceJob aCorrespondenceJob = new cCorrespondenceJob(aUserID);
		aCorrespondenceJob.EmailArgs = new cEmailArgsDataObject(aDataObjectList);
		aCorrespondenceJob.CorrespondenceDefinition  = this.mEventData.GetRelatedPropertyDataObject("EventCorrespondence.CorrespondenceDefinition");
		aCorrespondenceJob.SendEmail(this.DataObjectFactory.Appl);
		
		cDataObject aRevAddInfoDO = aDataObjectList[0];
		aRevAddInfoDO["RequestDate"] = System.DateTime.Now.ToShortDateString();
		aRevAddInfoDO["ResponseDate"] = System.DBNull.Value;
		aRevAddInfoDO["ResponseComment"] = System.DBNull.Value;
		this.DataObjectFactory.SaveDataObject(aRevAddInfoDO);

		cDataObject aWfDO = DataObjectFactory.GetDataObjectFromPrimaryKey("WfTaskAssignment", aRevAddInfoDO.GetPropertyString("AppWfTaskAssignmentID"));
		aWfDO["WfTaskStatusID"] = 1; //Incomplete
		this.DataObjectFactory.SaveDataObject(aWfDO);
	}
		/*====================================================*/

		public void SetWfTaskOutcome(cXMLDoc aOutcomeConfigDoc, bool aUseEvaluateData, bool aRaiseSingleEvent, bool aRaiseEvents, string aRcptPersonIDPropertyKey) {
			/*This override of the SetWfTaskOutcome method exists so that both the
			old (EvaluateOutcome) and new (EvaluateOutcome_EvaluateData) models of
			outcome configuration file processing can be used at the same time. Existing
			pages that call SetWfTaskOutcome with no parameters will use the old model to
			which they were written. The old model may or may not eventually be done away with.
			Peter Larsen 3/25/04.
			*/
			XmlNodeList aTaskNodeList;
			XmlNodeList aUpdateDataList;
			XmlNodeList aEventNodeList;
			XmlNode aOutcomeNode;
			String aOutcomeID = "";

			int aUserID;
			aUserID = ((cPerson) this.GetRelatedPropertyDataObject("Person")).Get_EG_User();

			if (aUseEvaluateData) {
				aOutcomeID = EvaluateOutcome_EvaluateData(aOutcomeConfigDoc);
				aOutcomeNode = cXMLDoc.FindNode(aOutcomeConfigDoc.DocElement.SelectSingleNode("Outcomes"),
											"Outcome", "OutcomeKey", aOutcomeID.ToString());
			} else
				aOutcomeNode = EvaluateOutcome(aOutcomeConfigDoc);


			if (aOutcomeNode == null) {
				aOutcomeID = cXMLDoc.AttributeToString(aOutcomeConfigDoc.DocElement.SelectSingleNode("Outcomes"), "DefaultOutcomeKey");
				if (aOutcomeID != "") {
					this["WfTaskOutcomeID"] = aOutcomeID;
				}
				this.DataObjectList.DataObjectFactory.SaveDataObject(this);
			} else {
				String aOutcomeValue = OutcomeValue_GetArgumentValue(GetOutcomeNode(aOutcomeNode));
				if (aOutcomeValue != "")
					aOutcomeID = aOutcomeValue;
				else
					aOutcomeID = cXMLDoc.AttributeToString(aOutcomeNode, "OutcomeKey");

				if (Convert.ToInt32(aOutcomeID) > 0) {
					this["WfTaskOutcomeID"] = aOutcomeID;
					this.DataObjectList.DataObjectFactory.SaveDataObject(this);
				}
				
				XmlNode aProcessingEventsNode = aOutcomeNode.SelectSingleNode("ProcessingEvents");
				if (ContinueProcessing && aProcessingEventsNode != null)  {
					XmlNodeList aDataObjectNodeList = aProcessingEventsNode.SelectNodes("DataObject");
					if (aDataObjectNodeList != null && aDataObjectNodeList.Count > 0) {
						foreach (XmlNode aDataObjectNode in aDataObjectNodeList) {
							XmlNodeList aFilterArgsList = aDataObjectNode.SelectNodes("Filters/Argument");
							foreach (XmlNode aArgNode in aFilterArgsList) {
								WfTaskOutcome_SetRelatedDataObjectArgValues(null, aArgNode);
							}
							cProcessingEvent aProcessingEvent;
							aProcessingEvent = cProcessingEvent.CreateProcessingEventInstance(cXMLDoc.AttributeToString(aDataObjectNode, "DataObjectDefinitionKey"), this.DataObjectFactory);
							aProcessingEvent.ProcessEvent(aDataObjectNode);
							if (aProcessingEvent.StatusID < 1) {
								ContinueProcessing = false;
								break;
							}
						}
					}
				}

				if (!ContinueProcessing) return; //if the event processing failed, stopping continuing the process of creating the tasks or sending emails

				cDataObjectList aWftaReopenRequestDOL=DataObjectFactory.GetDataObjectListWithFilter("WftaReopenRequest","ReopenWfTaskAssignmentID",this.GetPropertyString("WfTaskAssignmentID"),"Active","True");
				if (aWftaReopenRequestDOL.Count > 0){
					cDataObject aRequestingWfTaskAssignmentDo = aWftaReopenRequestDOL[0].GetRelatedPropertyDataObject("RequestingWfTaskAssignment");
					aRequestingWfTaskAssignmentDo["WfTaskStatusID"] = "1"; //Incomplete
					aRequestingWfTaskAssignmentDo.SaveData();
					aWftaReopenRequestDOL[0]["Active"]="False";
					aWftaReopenRequestDOL[0].SaveData();			
				}
				else {
					XmlNode aTasksNode = aOutcomeNode.SelectSingleNode("Tasks");
						if (aTasksNode != null) {
							IndexNewWfTAs = cXMLDoc.AttributeToBool(aTasksNode, "Index", false);
							aTaskNodeList = aTasksNode.SelectNodes("Task");
							if (aTaskNodeList != null)
								//assign tasks associated with outcome
								ContinueProcessing = WfTaskOutcome_CreateNewTaskAssignments(aTaskNodeList);
						}
				}

				if (!ContinueProcessing) return; //if the pre and post assignment event processing failed, stopping continuing the process of updating and sending emails
				aUpdateDataList = aOutcomeNode.SelectNodes("UpdateData/Argument");
				if (aUpdateDataList != null)
					//update data related to the submitted WfTaskAssignment
					WfTaskOutcome_UpdateData(aUpdateDataList);

				if (aRaiseEvents)
				{
					aEventNodeList = aOutcomeNode.SelectNodes("Events/Event");
					if (aEventNodeList != null) {
						//raise events associated with task outcome
						foreach (XmlNode aEventNode in aEventNodeList) {
							XmlNode aEventDataObjectListNode = aEventNode.SelectSingleNode("EventDataObjectList");
							if (aEventDataObjectListNode == null) {
								if (aRaiseSingleEvent) {
									if (aRcptPersonIDPropertyKey != "") {
										RaiseSingleEvent(cXMLDoc.AttributeToInt(aEventNode, "EventKey"), aUserID, aRcptPersonIDPropertyKey);
									} else {
										RaiseSingleEvent(cXMLDoc.AttributeToInt(aEventNode, "EventKey"), aUserID);
									}
								} else
									RaiseEvent(cXMLDoc.AttributeToInt(aEventNode, "EventKey"), aUserID);
							}
							else {
								//Get the PersonID attribute of the EventDataObjectList node set in case this event is assigned to Grant Primary Staff, etc
								String aPersonPropertyKey = cXMLDoc.AttributeToString(aEventDataObjectListNode, "PersonID", "");
								if (aPersonPropertyKey != "") {
									String aPersonID = "";
									aPersonID = this.GetRelatedPropertyString(aPersonPropertyKey);
									if (aPersonID == "")
										continue;
								}
								XmlNodeList aFilterArgsList = aEventDataObjectListNode.SelectNodes("Filters/Argument");
								foreach (XmlNode aArgNode in aFilterArgsList) {
									WfTaskOutcome_SetRelatedDataObjectArgValues(null, aArgNode);
									//if email is assigned to a grant primary staff person and there is no primary staff person assigned
									//if (cXMLDoc.AttributeToBool(aArgNode, "Null", false) && cXMLDoc.AttributeToString(aArgNode, "TypeKey", "") == "GranteeProject.GranteeProjectPrimaryStaffAffiliation.StaffPersonID" ) {
									if (cXMLDoc.AttributeToBool(aArgNode, "Null", false)) {
										cDataObject aDefaultWorkgroupDO = DataObjectFactory.GetDataObjectListWithFilter("WorkGroup", "IsPrimary", "True")[0];
										if (aDefaultWorkgroupDO != null) {
											aEventDataObjectListNode.Attributes["DataObjectDefinitionKey"].Value = "WorkGroupMember";
											aArgNode.Attributes["TypeKey"].Value = "WorkGroupID";
											aArgNode.Attributes["PropertyKey"].Value = "WorkGroupID";
											aArgNode.Attributes["Value"].Value = aDefaultWorkgroupDO.GetPropertyString("WorkGroupID");
										}
									}
								}
								cDataObjectList aEventDataObjectList = DataObjectFactory.GetDataObjectList(aEventDataObjectListNode);
								if (aRaiseSingleEvent) {
									if (aRcptPersonIDPropertyKey != "") {
										RaiseSingleEvent(cXMLDoc.AttributeToInt(aEventNode, "EventKey"), aUserID, aEventDataObjectList, aRcptPersonIDPropertyKey);
									} else {
										RaiseSingleEvent(cXMLDoc.AttributeToInt(aEventNode, "EventKey"), aUserID, aEventDataObjectList);
									}
								}
								else
									RaiseEvent(cXMLDoc.AttributeToInt(aEventNode, "EventKey"), aUserID, aEventDataObjectList);
							}
						}
					}
				}
			}
		}
		/*----------------------------------------------------*/

		protected cDataObjectList GetEvents(ProcessType aProcessType, WorkflowEventType aWorkflowEventType)
		{
			cXMLDoc aXmlDoc;
			XmlNode aDataObjectNode, aFiltersNode, aSortNode;
			string aWfProjectTaskID = "";
			//if (aProcessType == ProcessType.PreAssignment) {
			//    cDataObject aGranteeProjectDO = this.DataObjectFactory.GetDataObjectFromPrimaryKey("GranteeProject", this.GetPropertyString("GranteeProjectID"));
			//    cDataObjectList aWfProjectTaskDOL = this.DataObjectFactory.GetDataObjectListWithFilter("WfProjectTask", "WfProjectID", aGranteeProjectDO.GetPropertyString("WfProjectID"), "WfTaskID", this.GetPropertyString("WfTaskID"));
			//    if (aWfProjectTaskDOL != null && aWfProjectTaskDOL.Count > 0)
			//        aWfProjectTaskID = aWfProjectTaskDOL[0].GetPropertyString("WfProjectTaskID");
			//}
			//else {
			//    aWfProjectTaskID = this.GetWfProjectTask().GetPropertyString("WfProjectTaskID");
			//}
			cDataObject aGranteeProjectDO = this.DataObjectFactory.GetDataObjectFromPrimaryKey("GranteeProject", this.GetPropertyString("GranteeProjectID"));
			cDataObjectList aWfProjectTaskDOL = this.DataObjectFactory.GetDataObjectListWithFilter("WfProjectTask", "WfProjectID", aGranteeProjectDO.GetPropertyString("WfProjectID"), "WfTaskID", this.GetPropertyString("WfTaskID"));
			if (aWfProjectTaskDOL != null && aWfProjectTaskDOL.Count > 0)
				aWfProjectTaskID = aWfProjectTaskDOL[0].GetPropertyString("WfProjectTaskID");
			
			aXmlDoc = this.DataObjectFactory.CreateDataObjectNode("WorkflowEvents", out aDataObjectNode, out aFiltersNode);
			aFiltersNode.AppendChild(this.DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "ProcessTypeID", Convert.ToString((Int32)aProcessType)));
			aFiltersNode.AppendChild(this.DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "WorkflowEventTypeID", Convert.ToString((Int32)aWorkflowEventType)));
			aFiltersNode.AppendChild(this.DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "WorkflowID", aWfProjectTaskID));
			aSortNode = aDataObjectNode.AppendChild(aXmlDoc.CreateSortNode());
			aSortNode.AppendChild(this.DataObjectFactory.CreateArgumentNode(aXmlDoc, "Data", "SortOrder", ""));
			return this.DataObjectFactory.GetDataObjectList(aDataObjectNode);
		}