/// <summary> /// Gives the user the option to update Gift Destination records if commitments have been added /// </summary> /// <param name="AInspectDS"></param> public bool UpdateGiftDestination(ref PartnerEditTDS AInspectDS) { PmStaffDataTable EligibleCommitments = new PmStaffDataTable(); FIndividualDataDS = new IndividualDataTDS(); FInspectDS = AInspectDS; FIndividualDataDS.Merge(AInspectDS); // return if no changes have been made to commitments if ((FIndividualDataDS.PmStaffData == null) || (FIndividualDataDS.PmStaffData.Rows.Count == 0)) { return(false); } // load original (currently saved) PmStaffData FOriginalCommitments = TRemote.MPersonnel.WebConnectors.LoadPersonellStaffData(AInspectDS.PPartner[0].PartnerKey).PmStaffData; if (!GetEligibleRowsForUpdatingGiftDestination(ref EligibleCommitments)) { // no eligible records return(false); } // iterate through each eligible row foreach (PmStaffDataRow EligibleCommitmentRow in EligibleCommitments.Rows) { UpdateGiftDestinationForSingleCommitment(EligibleCommitmentRow); } return(true); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); grdDetails.Columns.Clear(); grdDetails.AddDateColumn(Catalog.GetString("Date entered"), FMainDS.PmGeneralApplication.Columns[PmGeneralApplicationTable.GetDateCreatedDBName()]); grdDetails.AddTextColumn(Catalog.GetString("Applied for"), FMainDS.PmGeneralApplication.ColumnApplicationForEventOrField); grdDetails.AddTextColumn(Catalog.GetString("Field / Event Name"), FMainDS.PmGeneralApplication.ColumnEventOrFieldName); grdDetails.AddTextColumn(Catalog.GetString("Status"), FMainDS.PmGeneralApplication.Columns[PmGeneralApplicationTable.GetGenApplicationStatusDBName()], 100); // initialize tab controls ucoApplicationEvent.InitialiseUserControl(); ucoApplicationField.InitialiseUserControl(); // Hook up DataSavingStarted Event to be able to run code before SaveChanges is doing anything FPetraUtilsObject.DataSavingStarted += new TDataSavingStartHandler(this.DataSavingStarted); // enable grid to react to insert and delete keyboard keys //WB grdDetails.InsertKeyPressed += new TKeyPressedEventHandler(grdDetails_InsertKeyPressed); // enable grid to react to modified event or field key in details part ucoApplicationEvent.ApplicationEventChanged += new TUC_Application_Event.TDelegateApplicationEventChanged( ProcessApplicationEventOrFieldChanged); ucoApplicationField.ApplicationFieldChanged += new TUC_Application_Field.TDelegateApplicationFieldChanged( ProcessApplicationEventOrFieldChanged); if (grdDetails.Rows.Count <= 1) { pnlDetails.Visible = false; } }
/// <summary> /// Gives the user the option to update Gift Destination records if commitments have been added /// </summary> /// <param name="AInspectDS"></param> public bool UpdateGiftDestination(ref PartnerEditTDS AInspectDS) { PmStaffDataTable EligibleCommitments = new PmStaffDataTable(); FIndividualDataDS = new IndividualDataTDS(); FInspectDS = AInspectDS; FIndividualDataDS.Merge(AInspectDS); // return if no changes have been made to commitments if ((FIndividualDataDS.PmStaffData == null) || (FIndividualDataDS.PmStaffData.Rows.Count == 0)) { return false; } // load original (currently saved) PmStaffData FOriginalCommitments = TRemote.MPersonnel.WebConnectors.LoadPersonellStaffData(AInspectDS.PPartner[0].PartnerKey).PmStaffData; if (!GetEligibleRowsForUpdatingGiftDestination(ref EligibleCommitments)) { // no eligible records return false; } // iterate through each eligible row foreach (PmStaffDataRow EligibleCommitmentRow in EligibleCommitments.Rows) { UpdateGiftDestinationForSingleCommitment(EligibleCommitmentRow); } return true; }
/// <summary> /// Ensure that data is loaded and shown. /// </summary> /// <returns>void</returns> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); SpecialShowData(); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); //FDocumentCodeDT = (PDocumentTable)TDataCache.TMCommon.GetCacheableCommonTable(TCacheableCommonTablesEnum.DocumentCodeList); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); // make sure action can be taken when data is saved successfully FPetraUtilsObject.DataSaved += new TDataSavedHandler(FPetraUtilsObject_DataSaved); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); this.SizeChanged += TUC_IndividualData_CommitmentPeriods_SizeChanged; // Cannot resize the grid here because the grid columns have not been defined yet }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); chkProfSkill.Text = ""; // limit length of year field to 4 txtYearOfDegree.MaxLength = 4; }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); //FDocumentCodeDT = (PDocumentTable)TDataCache.TMCommon.GetCacheableCommonTable(TCacheableCommonTablesEnum.DocumentCodeList); this.SizeChanged += TUC_IndividualData_PersonalDocuments_SizeChanged; // Cannot resize the grid here because the grid columns have not been defined yet }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); // make sure action can be taken when data is saved successfully FPetraUtilsObject.DataSaved += new TDataSavedHandler(FPetraUtilsObject_DataSaved); this.SizeChanged += TUC_IndividualData_JobAssignments_SizeChanged; // Cannot resize the grid here because the grid columns have not been defined yet }
public static IndividualDataTDS GetData(Int64 APartnerKey, TIndividualDataItemEnum AIndivDataItem) { IndividualDataTDS ReturnValue = new IndividualDataTDS(); TDBTransaction Transaction = new TDBTransaction(); DBAccess.ReadTransaction( ref Transaction, delegate { ReturnValue = GetData(APartnerKey, AIndivDataItem, Transaction); }); return(ReturnValue); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); FAbilityAreaNameDT = (PtAbilityAreaTable)TDataCache.TMPersonnel.GetCacheablePersonnelTable(TCacheablePersonTablesEnum.AbilityAreaList); if (grdDetails.Rows.Count <= 1) { btnDelete.Enabled = false; pnlDetails.Visible = false; } }
public static IndividualDataTDS GetData(Int64 APartnerKey, TIndividualDataItemEnum AIndivDataItem) { IndividualDataTDS ReturnValue = new IndividualDataTDS(); TDBTransaction Transaction = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, ref Transaction, delegate { ReturnValue = GetData(APartnerKey, AIndivDataItem, Transaction); }); return(ReturnValue); }
public static IndividualDataTDS GetData(Int64 APartnerKey, TIndividualDataItemEnum AIndivDataItem) { IndividualDataTDS ReturnValue = new IndividualDataTDS(); TDBTransaction Transaction = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, ref Transaction, delegate { ReturnValue = GetData(APartnerKey, AIndivDataItem, Transaction); }); return ReturnValue; }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); chkProfSkill.Text = ""; // limit length of year field to 4 txtYearOfDegree.MaxLength = 4; this.SizeChanged += TUC_IndividualData_PersonSkills_SizeChanged; // Cannot resize the grid here because the grid columns have not been defined yet }
/// <summary> /// Sets up the screen logic, retrieves data, databinds the Grid and the Detail /// UserControl. /// </summary> /// <returns>void</returns> public void InitialiseUserControl() { FMainDS = new IndividualDataTDS(); // Merge DataTables which are held only in PartnerEditTDS into IndividualDataTDS so that we can access that data in here! FMainDS.Merge(FPartnerEditTDS); ucoApplications.PetraUtilsObject = FPetraUtilsObject; ucoApplications.MainDS = FMainDS; ucoApplications.PartnerEditUIConnector = FPartnerEditUIConnector; ucoApplications.SpecialInitUserControl(FMainDS); // Hook up RecalculateScreenParts Event ucoApplications.RecalculateScreenParts += new TRecalculateScreenPartsEventHandler(DoRecalculateScreenParts); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); if (FMainDS.PmSpecialNeed.Rows.Count == 0) { // There hasn't been data stored yet, so create a new Record FMainDS.PmSpecialNeed.Rows.Add(FMainDS.PmSpecialNeed.NewRowTyped(true)); // ... and set its Primary Key FMainDS.PmSpecialNeed[0].PartnerKey = FMainDS.PPerson[0].PartnerKey; } ShowData(FMainDS.PmSpecialNeed[0]); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); grdDetails.Columns.Clear(); grdDetails.AddTextColumn("Language", FMainDS.PmPersonLanguage.ColumnLanguageDescription); grdDetails.AddTextColumn("Language Level", FMainDS.PmPersonLanguage.ColumnLanguageLevel); grdDetails.AddTextColumn("Years Of Experience", FMainDS.PmPersonLanguage.ColumnYearsOfExperience); grdDetails.AddDateColumn("as of", FMainDS.PmPersonLanguage.ColumnYearsOfExperienceAsOf); FLanguageCodeDT = (PLanguageTable)TDataCache.TMCommon.GetCacheableCommonTable(TCacheableCommonTablesEnum.LanguageCodeList); // make sure action can be taken when data is saved successfully FPetraUtilsObject.DataSaved += new TDataSavedHandler(FPetraUtilsObject_DataSaved); }
public static bool GetSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS) { TDBTransaction Transaction = new TDBTransaction(); IndividualDataTDS IndividualDataDS = new IndividualDataTDS(); IndividualDataDS.Merge(AIndividualDataDS); DBAccess.ReadTransaction( ref Transaction, delegate { BuildSummaryData(APartnerKey, ref IndividualDataDS, Transaction); }); AIndividualDataDS.Merge(IndividualDataDS); return(true); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); grdDetails.Columns.Clear(); grdDetails.AddTextColumn("Passport Number", FMainDS.PmPassportDetails.ColumnPassportNumber); grdDetails.AddTextColumn("Type", FMainDS.PmPassportDetails.ColumnPassportDetailsType); grdDetails.AddTextColumn("Passport Nationality", FMainDS.PmPassportDetails.ColumnPassportNationalityName); grdDetails.AddDateColumn("Expiration Date", FMainDS.PmPassportDetails.ColumnDateOfExpiration); grdDetails.AddDateColumn("Issue Date", FMainDS.PmPassportDetails.ColumnDateOfIssue); //FPassportTypeDT = (PtPassportTypeTable)TDataCache.TMPersonnel.GetCacheablePersonnelTable(TCacheablePersonTablesEnum.PassportTypeList); // make sure action can be taken when data is saved successfully FPetraUtilsObject.DataSaved += new TDataSavedHandler(FPetraUtilsObject_DataSaved); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; // year information must not be longer than 4 digits txtBelieverSinceYear.MaxLength = 4; LoadDataOnDemand(); if (FMainDS.PmPersonalData.Rows.Count == 0) { // There hasn't been data stored yet, so create a new Record FMainDS.PmPersonalData.Rows.Add(FMainDS.PmPersonalData.NewRowTyped(true)); // ... and set its Primary Key FMainDS.PmPersonalData[0].PartnerKey = FMainDS.PPerson[0].PartnerKey; } ShowData(FMainDS.PmPersonalData[0]); }
public static bool GetSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS) { TDBTransaction Transaction = null; IndividualDataTDS IndividualDataDS = new IndividualDataTDS(); IndividualDataDS.Merge(AIndividualDataDS); DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction( Ict.Petra.Shared.MCommon.MCommonConstants.CACHEABLEDT_ISOLATIONLEVEL, TEnforceIsolationLevel.eilMinimum, ref Transaction, delegate { BuildSummaryData(APartnerKey, ref IndividualDataDS, Transaction); }); AIndividualDataDS.Merge(IndividualDataDS); return(true); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); grdDetails.Columns.Clear(); grdDetails.AddTextColumn("Language", FMainDS.PmPersonLanguage.ColumnLanguageDescription); grdDetails.AddTextColumn("Language Level", FMainDS.PmPersonLanguage.ColumnLanguageLevel); //grdDetails.AddTextColumn("Years Of Experience", FMainDS.PmPersonLanguage.ColumnYearsOfExperience); //grdDetails.AddDateColumn("as of", FMainDS.PmPersonLanguage.ColumnYearsOfExperienceAsOf); FLanguageCodeDT = (PLanguageTable)TDataCache.TMCommon.GetCacheableCommonTable(TCacheableCommonTablesEnum.LanguageCodeList); // make sure action can be taken when data is saved successfully FPetraUtilsObject.DataSaved += new TDataSavedHandler(FPetraUtilsObject_DataSaved); this.SizeChanged += TUC_IndividualData_PersonalLanguages_SizeChanged; // This can go here because InitUserControl does not mess with the columns grdDetails.AutoResizeGrid(); }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { int TmpTabIndex; FMainDS = AMainDS; LoadDataOnDemand(); if (FMainDS.PmPersonalData.Rows.Count == 0) { // There hasn't been data stored yet, so create a new Record FMainDS.PmPersonalData.Rows.Add(FMainDS.PmPersonalData.NewRowTyped(true)); // ... and set its Primary Key FMainDS.PmPersonalData[0].PartnerKey = FMainDS.PPerson[0].PartnerKey; } ShowData(FMainDS.PmPersonalData[0]); // Set default facial hair text to 'None' if person is female if ((FMainDS.PPerson[0].Gender == "Female") || (FMainDS.PPerson[0].Gender == "FEMALE")) { cmbFacialHair.SelectedText = "None"; } pnlEmergencyContacts.Top = 0; pnlEmergencyContacts.Width = 250; pnlEmergencyContacts.Height = 39; btnEmergencyContacts.Top = 6; btnEmergencyContacts.Left = 99; lblIdentMarks.Top = 37; txtIdentifyingMarks.Top = 57; pnlEmergencyDataRight.Height = 180; grpEmergencyData.Height = 200; // Alter Tab order of txtIdentifyingMarks and btnEmergencyContacts so that the TextBox comes // right after the other TextBox Controls TmpTabIndex = txtIdentifyingMarks.TabIndex; txtIdentifyingMarks.TabIndex = btnEmergencyContacts.TabIndex; btnEmergencyContacts.TabIndex = TmpTabIndex; }
/// <summary> /// todoComment /// </summary> public void SpecialInitUserControl(IndividualDataTDS AMainDS) { FMainDS = AMainDS; LoadDataOnDemand(); if (FMainDS.PmPersonalData.Rows.Count == 0) { // There hasn't been data stored yet, so create a new Record FMainDS.PmPersonalData.Rows.Add(FMainDS.PmPersonalData.NewRowTyped(true)); // ... and set its Primary Key FMainDS.PmPersonalData[0].PartnerKey = FMainDS.PPerson[0].PartnerKey; } ShowData(FMainDS.PmPersonalData[0]); // Set default facial hair text to 'None' if person is female if ((FMainDS.PPerson[0].Gender == "Female") || (FMainDS.PPerson[0].Gender == "FEMALE")) { cmbFacialHair.SelectedText = "None"; } }
public static bool GetSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS) { Boolean NewTransaction; TDBTransaction ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction( Ict.Petra.Server.MCommon.MCommonConstants.CACHEABLEDT_ISOLATIONLEVEL, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { BuildSummaryData(APartnerKey, ref AIndividualDataDS, ReadTransaction); } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TIndividualDataWebConnector.BuildSummaryData commited own transaction."); } } return(true); }
/// <summary> /// Retrieves data that will be shown on the 'Overview' UserControl and adds it to <paramref name="AIndividualDataDS" />. /// </summary> /// <param name="APartnerKey">PartnerKey of the Person to load data for.</param> /// <param name="AIndividualDataDS">Typed DataSet of Type <see cref="IndividualDataTDS" />. Needs to be instantiated already!</param> /// <param name="AReadTransaction">Open Database transaction.</param> /// <returns>void</returns> private static void BuildSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS, TDBTransaction AReadTransaction) { string StrNotAvailable = Catalog.GetString("Not Available"); IndividualDataTDSSummaryDataTable SummaryDT; IndividualDataTDSSummaryDataRow SummaryDR; IndividualDataTDSMiscellaneousDataRow MiscellaneousDataDR = AIndividualDataDS.MiscellaneousData[0]; PPersonTable PPersonDT; PPersonRow PersonDR = null; PmPassportDetailsTable PassportDetailsDT; PmStaffDataTable PmStaffDataDT; PmStaffDataRow PmStaffDataDR = null; PmJobAssignmentTable PmJobAssignmentDT = null; PUnitTable PUnitDT = null; PmJobAssignmentRow PmJobAssignmentDR; IndividualDataTDSJobAssignmentStaffDataCombinedRow JobAssiStaffDataCombDR; int JobAssiStaffDataCombKey = 0; TCacheable CommonCacheable = new TCacheable(); TPartnerCacheable PartnerCacheable = new TPartnerCacheable(); string MaritalStatusDescr; StringCollection PassportColumns; string Nationalities; PPartnerRelationshipTable PartnerRelationshipDT; PPartnerTable PartnerDT; PPartnerRow PartnerDR = null; PLocationRow LocationDR; PPartnerLocationRow PartnerLocationDR; string PhoneNumber; string PhoneExtension = String.Empty; Int64 ChurchPartnerKey; SummaryDT = new IndividualDataTDSSummaryDataTable(); SummaryDR = SummaryDT.NewRowTyped(false); SummaryDR.PartnerKey = APartnerKey; #region Person Info PPersonDT = PPersonAccess.LoadByPrimaryKey(APartnerKey, AReadTransaction); if (PPersonDT.Rows.Count == 1) { PersonDR = (PPersonRow)PPersonDT.Rows[0]; } if (PersonDR != null) { SummaryDR.DateOfBirth = PersonDR.DateOfBirth; SummaryDR.Gender = PersonDR.Gender; MaritalStatusDescr = PartnerCodeHelper.GetMaritalStatusDescription( @PartnerCacheable.GetCacheableTable, PersonDR.MaritalStatus); if (MaritalStatusDescr != String.Empty) { MaritalStatusDescr = " - " + MaritalStatusDescr; } SummaryDR.MaritalStatus = PersonDR.MaritalStatus + MaritalStatusDescr; } else { SummaryDR.SetDateOfBirthNull(); SummaryDR.Gender = StrNotAvailable; SummaryDR.MaritalStatus = StrNotAvailable; } #region Nationalities PassportColumns = StringHelper.StrSplit( PmPassportDetailsTable.GetDateOfIssueDBName() + "," + PmPassportDetailsTable.GetDateOfExpirationDBName() + "," + PmPassportDetailsTable.GetPassportNationalityCodeDBName() + "," + PmPassportDetailsTable.GetMainPassportDBName(), ","); PassportDetailsDT = PmPassportDetailsAccess.LoadViaPPerson(APartnerKey, PassportColumns, AReadTransaction, null, 0, 0); Nationalities = Ict.Petra.Shared.MPersonnel.Calculations.DeterminePersonsNationalities( @CommonCacheable.GetCacheableTable, PassportDetailsDT); if (Nationalities != String.Empty) { SummaryDR.Nationalities = Nationalities; } else { SummaryDR.Nationalities = StrNotAvailable; } #endregion #region Phone and Email (from 'Best Address') ServerCalculations.DetermineBestAddress(APartnerKey, out PartnerLocationDR, out LocationDR); if (LocationDR != null) { SummaryDR.EmailAddress = PartnerLocationDR.EmailAddress; if (PartnerLocationDR.TelephoneNumber != String.Empty) { PhoneNumber = PartnerLocationDR.TelephoneNumber; if (!PartnerLocationDR.IsExtensionNull()) { PhoneExtension = PartnerLocationDR.Extension.ToString(); } SummaryDR.TelephoneNumber = Calculations.FormatIntlPhoneNumber(PhoneNumber, PhoneExtension, LocationDR.CountryCode, @CommonCacheable.GetCacheableTable); } else if (PartnerLocationDR.MobileNumber != String.Empty) { SummaryDR.TelephoneNumber = Calculations.FormatIntlPhoneNumber(PartnerLocationDR.MobileNumber, String.Empty, LocationDR.CountryCode, @CommonCacheable.GetCacheableTable) + " " + Catalog.GetString("(Mobile)"); } else { SummaryDR.TelephoneNumber = StrNotAvailable; } } else { SummaryDR.TelephoneNumber = StrNotAvailable; SummaryDR.EmailAddress = StrNotAvailable; } #endregion #endregion #region Commitments/Jobs PmStaffDataDT = PmStaffDataAccess.LoadViaPPerson(APartnerKey, AReadTransaction); MiscellaneousDataDR.ItemsCountCommitmentPeriods = PmStaffDataDT.Rows.Count; // First check if the PERSON has got any Commitments if (PmStaffDataDT.Rows.Count > 0) { foreach (DataRow DR in PmStaffDataDT.Rows) { JobAssiStaffDataCombDR = AIndividualDataDS.JobAssignmentStaffDataCombined.NewRowTyped(false); JobAssiStaffDataCombDR.Key = JobAssiStaffDataCombKey++; JobAssiStaffDataCombDR.PartnerKey = APartnerKey; PmStaffDataDR = (PmStaffDataRow)DR; if (!(PmStaffDataDR.IsReceivingFieldNull()) && (PmStaffDataDR.ReceivingField != 0)) { PUnitDT = PUnitAccess.LoadByPrimaryKey(PmStaffDataDR.ReceivingField, AReadTransaction); JobAssiStaffDataCombDR.FieldKey = PmStaffDataDR.ReceivingField; JobAssiStaffDataCombDR.FieldName = PUnitDT[0].UnitName; } else { JobAssiStaffDataCombDR.FieldKey = 0; JobAssiStaffDataCombDR.FieldName = "[None]"; } JobAssiStaffDataCombDR.Position = PmStaffDataDR.JobTitle; JobAssiStaffDataCombDR.FromDate = PmStaffDataDR.StartOfCommitment; JobAssiStaffDataCombDR.ToDate = PmStaffDataDR.EndOfCommitment; AIndividualDataDS.JobAssignmentStaffDataCombined.Rows.Add(JobAssiStaffDataCombDR); } } else { // The PERSON hasn't got any Commitments, therefore check if the PERSON has any Job Assignments PmJobAssignmentDT = PmJobAssignmentAccess.LoadViaPPartner(APartnerKey, AReadTransaction); if (PmJobAssignmentDT.Rows.Count > 0) { foreach (DataRow DR in PmJobAssignmentDT.Rows) { JobAssiStaffDataCombDR = AIndividualDataDS.JobAssignmentStaffDataCombined.NewRowTyped(false); JobAssiStaffDataCombDR.Key = JobAssiStaffDataCombKey++; JobAssiStaffDataCombDR.PartnerKey = APartnerKey; PmJobAssignmentDR = (PmJobAssignmentRow)DR; if (PmJobAssignmentDR.UnitKey != 0) { PUnitDT = PUnitAccess.LoadByPrimaryKey(PmJobAssignmentDR.UnitKey, AReadTransaction); JobAssiStaffDataCombDR.FieldKey = PmJobAssignmentDR.UnitKey; JobAssiStaffDataCombDR.FieldName = PUnitDT[0].UnitName; } else { JobAssiStaffDataCombDR.FieldKey = 0; JobAssiStaffDataCombDR.FieldName = "[None]"; } JobAssiStaffDataCombDR.Position = PmJobAssignmentDR.PositionName; JobAssiStaffDataCombDR.FromDate = PmJobAssignmentDR.FromDate; JobAssiStaffDataCombDR.ToDate = PmJobAssignmentDR.ToDate; AIndividualDataDS.JobAssignmentStaffDataCombined.Rows.Add(JobAssiStaffDataCombDR); } } } #endregion #region Church Info SummaryDR.ChurchName = StrNotAvailable; SummaryDR.ChurchAddress = StrNotAvailable; SummaryDR.ChurchPhone = StrNotAvailable; SummaryDR.ChurchPastor = StrNotAvailable; SummaryDR.ChurchPastorsPhone = StrNotAvailable; SummaryDR.NumberOfShownSupportingChurchPastors = 0; // Find SUPPCHURCH Relationship PartnerRelationshipDT = PPartnerRelationshipAccess.LoadUsingTemplate(new TSearchCriteria[] { new TSearchCriteria(PPartnerRelationshipTable.GetRelationKeyDBName(), APartnerKey), new TSearchCriteria(PPartnerRelationshipTable.GetRelationNameDBName(), "SUPPCHURCH") }, AReadTransaction); SummaryDR.NumberOfShownSupportingChurches = PartnerRelationshipDT.Rows.Count; if (PartnerRelationshipDT.Rows.Count > 0) { ChurchPartnerKey = PartnerRelationshipDT[0].PartnerKey; // Load Church Partner PartnerDT = PPartnerAccess.LoadByPrimaryKey(ChurchPartnerKey, AReadTransaction); if (PartnerDT.Rows.Count > 0) { PartnerDR = PartnerDT[0]; // Church Name if (PartnerDR.PartnerShortName != String.Empty) { SummaryDR.ChurchName = PartnerDR.PartnerShortName; } #region Church Address and Phone ServerCalculations.DetermineBestAddress(PartnerRelationshipDT[0].PartnerKey, out PartnerLocationDR, out LocationDR); if (LocationDR != null) { SummaryDR.ChurchAddress = Calculations.DetermineLocationString(LocationDR, Calculations.TPartnerLocationFormatEnum.plfCommaSeparated); // Church Phone if (PartnerLocationDR.TelephoneNumber != String.Empty) { PhoneNumber = PartnerLocationDR.TelephoneNumber; if (!PartnerLocationDR.IsExtensionNull()) { PhoneExtension = PartnerLocationDR.Extension.ToString(); } SummaryDR.ChurchPhone = Calculations.FormatIntlPhoneNumber(PhoneNumber, PhoneExtension, LocationDR.CountryCode, @CommonCacheable.GetCacheableTable); } else if (PartnerLocationDR.MobileNumber != String.Empty) { SummaryDR.ChurchPhone = Calculations.FormatIntlPhoneNumber(PartnerLocationDR.MobileNumber, String.Empty, LocationDR.CountryCode, @CommonCacheable.GetCacheableTable) + " " + Catalog.GetString("(Mobile)"); } } #endregion #region Pastor // Find PASTOR Relationship PartnerRelationshipDT.Rows.Clear(); PartnerRelationshipDT = PPartnerRelationshipAccess.LoadUsingTemplate(new TSearchCriteria[] { new TSearchCriteria(PPartnerRelationshipTable.GetPartnerKeyDBName(), ChurchPartnerKey), new TSearchCriteria(PPartnerRelationshipTable.GetRelationNameDBName(), "PASTOR") }, AReadTransaction); SummaryDR.NumberOfShownSupportingChurchPastors = PartnerRelationshipDT.Rows.Count; if (PartnerRelationshipDT.Rows.Count > 0) { // Load PASTOR Partner PartnerDT = PPartnerAccess.LoadByPrimaryKey(PartnerRelationshipDT[0].RelationKey, AReadTransaction); if (PartnerDT.Rows.Count > 0) { PartnerDR = PartnerDT[0]; // Pastor's Name if (PartnerDR.PartnerShortName != String.Empty) { SummaryDR.ChurchPastor = PartnerDR.PartnerShortName; } #region Pastor's Phone ServerCalculations.DetermineBestAddress(PartnerRelationshipDT[0].RelationKey, out PartnerLocationDR, out LocationDR); if (LocationDR != null) { // Pastor's Phone if (PartnerLocationDR.TelephoneNumber != String.Empty) { PhoneNumber = PartnerLocationDR.TelephoneNumber; if (!PartnerLocationDR.IsExtensionNull()) { PhoneExtension = PartnerLocationDR.Extension.ToString(); } SummaryDR.ChurchPastorsPhone = Calculations.FormatIntlPhoneNumber(PhoneNumber, PhoneExtension, LocationDR.CountryCode, @CommonCacheable.GetCacheableTable); } else if (PartnerLocationDR.MobileNumber != String.Empty) { SummaryDR.ChurchPastorsPhone = Calculations.FormatIntlPhoneNumber(PartnerLocationDR.MobileNumber, String.Empty, LocationDR.CountryCode, @CommonCacheable.GetCacheableTable) + " " + Catalog.GetString("(Mobile)"); } } #endregion } } #endregion } } #endregion // Add Summary DataRow to Summary DataTable SummaryDT.Rows.Add(SummaryDR); // Add Row to 'SummaryData' DataTable in Typed DataSet 'IndividualDataTDS' AIndividualDataDS.Merge(SummaryDT); }
public static TSubmitChangesResult SubmitChangesServerSide(ref IndividualDataTDS AInspectDS, ref PartnerEditTDS APartnerEditInspectDS, TDBTransaction ASubmitChangesTransaction, out TVerificationResultCollection AVerificationResult) { TSubmitChangesResult SubmissionResult; PmJobAssignmentTable PmJobAssignmentTableSubmit; AVerificationResult = new TVerificationResultCollection(); if (AInspectDS != null) { SubmissionResult = TSubmitChangesResult.scrOK; // Job Assignments: make sure that jobs exist for assignments if (AInspectDS.Tables.Contains(PmJobAssignmentTable.GetTableName()) && (AInspectDS.PmJobAssignment.Rows.Count > 0)) { UmJobTable JobTableTemp = new UmJobTable(); UmJobTable JobTableSubmit = new UmJobTable(); UmJobRow JobRow; PmJobAssignmentTableSubmit = AInspectDS.PmJobAssignment; // every job_assignment_row needs to have a row that it references in um_job foreach (PmJobAssignmentRow JobAssignmentRow in PmJobAssignmentTableSubmit.Rows) { if (JobAssignmentRow.RowState != DataRowState.Deleted) { JobTableTemp = UmJobAccess.LoadByPrimaryKey(JobAssignmentRow.UnitKey, JobAssignmentRow.PositionName, JobAssignmentRow.PositionScope, JobAssignmentRow.JobKey, ASubmitChangesTransaction); // if no corresponding job record found then we need to create one // (job key was already set on client side to new value so merging back to the // client does not cause problems because of primary key change) if (JobTableTemp.Count == 0) { JobRow = (UmJobRow)JobTableSubmit.NewRow(); JobRow.UnitKey = JobAssignmentRow.UnitKey; JobRow.PositionName = JobAssignmentRow.PositionName; JobRow.PositionScope = JobAssignmentRow.PositionScope; JobRow.JobKey = JobAssignmentRow.JobKey; JobRow.FromDate = JobAssignmentRow.FromDate; JobRow.ToDate = JobAssignmentRow.ToDate; JobRow.CommitmentPeriod = "None"; JobRow.TrainingPeriod = "None"; // Need to update the JobKey field in job assignment table record from job record JobAssignmentRow.JobKey = JobRow.JobKey; JobTableSubmit.Rows.Add(JobRow); } else { // job record exists: in this case we need to update JobKey in // the Job Assignment Record from Job Row JobAssignmentRow.JobKey = ((UmJobRow)JobTableTemp.Rows[0]).JobKey; } } } // submit table with newly created jobs if (JobTableSubmit.Rows.Count > 0) { UmJobAccess.SubmitChanges(JobTableSubmit, ASubmitChangesTransaction); } } // now submit the whole dataset at once IndividualDataTDSAccess.SubmitChanges(AInspectDS); // Need to merge tables back into APartnerEditInspectDS so the updated s_modification_id_t is returned // correctly to the Partner Edit. // Unfortunately this can't be done simply by using merge method of the dataset since they are two different // types but has to be done per table. if (AInspectDS.Tables.Contains(PmSpecialNeedTable.GetTableName()) && (AInspectDS.PmSpecialNeed.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmSpecialNeedTable.GetTableName()].Merge(AInspectDS.PmSpecialNeed); } if (AInspectDS.Tables.Contains(PmPersonAbilityTable.GetTableName()) && (AInspectDS.PmPersonAbility.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonAbilityTable.GetTableName()].Merge(AInspectDS.PmPersonAbility); } if (AInspectDS.Tables.Contains(PmPassportDetailsTable.GetTableName()) && (AInspectDS.PmPassportDetails.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPassportDetailsTable.GetTableName()].Merge(AInspectDS.PmPassportDetails); } if (AInspectDS.Tables.Contains(PmPersonalDataTable.GetTableName()) && (AInspectDS.PmPersonalData.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonalDataTable.GetTableName()].Merge(AInspectDS.PmPersonalData); } if (AInspectDS.Tables.Contains(PmPersonLanguageTable.GetTableName()) && (AInspectDS.PmPersonLanguage.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonLanguageTable.GetTableName()].Merge(AInspectDS.PmPersonLanguage); } if (AInspectDS.Tables.Contains(PmPersonEvaluationTable.GetTableName()) && (AInspectDS.PmPersonEvaluation.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonEvaluationTable.GetTableName()].Merge(AInspectDS.PmPersonEvaluation); } if (AInspectDS.Tables.Contains(PmStaffDataTable.GetTableName()) && (AInspectDS.PmStaffData.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmStaffDataTable.GetTableName()].Merge(AInspectDS.PmStaffData); } if (AInspectDS.Tables.Contains(PmPersonSkillTable.GetTableName()) && (AInspectDS.PmPersonSkill.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonSkillTable.GetTableName()].Merge(AInspectDS.PmPersonSkill); } if (AInspectDS.Tables.Contains(PmPastExperienceTable.GetTableName()) && (AInspectDS.PmPastExperience.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPastExperienceTable.GetTableName()].Merge(AInspectDS.PmPastExperience); } if (AInspectDS.Tables.Contains(PmDocumentTable.GetTableName()) && (AInspectDS.PmDocument.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmDocumentTable.GetTableName()].Merge(AInspectDS.PmDocument); } if (AInspectDS.Tables.Contains(PmJobAssignmentTable.GetTableName()) && (AInspectDS.PmJobAssignment.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmJobAssignmentTable.GetTableName()].Merge(AInspectDS.PmJobAssignment); } if (AInspectDS.Tables.Contains(PmGeneralApplicationTable.GetTableName()) && (AInspectDS.PmGeneralApplication.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmGeneralApplicationTable.GetTableName()].Merge(AInspectDS.PmGeneralApplication); } if (AInspectDS.Tables.Contains(PmShortTermApplicationTable.GetTableName()) && (AInspectDS.PmShortTermApplication.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmShortTermApplicationTable.GetTableName()].Merge(AInspectDS.PmShortTermApplication); } if (AInspectDS.Tables.Contains(PmYearProgramApplicationTable.GetTableName()) && (AInspectDS.PmYearProgramApplication.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmYearProgramApplicationTable.GetTableName()].Merge(AInspectDS.PmYearProgramApplication); } } else { TLogging.LogAtLevel(8, "TIndividualDataWebConnector.SubmitChangesServerSide: AInspectDS = nil!"); SubmissionResult = TSubmitChangesResult.scrNothingToBeSaved; } return SubmissionResult; }
/// <summary> /// Passes data as a Typed DataSet to the caller, containing a DataTable that corresponds with <paramref name="AIndivDataItem"></paramref>. /// </summary> /// <param name="APartnerKey">PartnerKey of the Person to load data for.</param> /// <param name="AIndivDataItem">The Individual Data Item for which data should be returned.</param> /// <param name="AReadTransaction">Open Database transaction.</param> /// <returns>A Typed DataSet containing a DataTable that corresponds with <paramref name="AIndivDataItem"></paramref>.</returns> private static IndividualDataTDS GetData(Int64 APartnerKey, TIndividualDataItemEnum AIndivDataItem, TDBTransaction AReadTransaction) { IndividualDataTDS IndividualDataDS = new IndividualDataTDS("IndividualData"); // create the IndividualDataTDS DataSet that will later be passed to the Client IndividualDataTDSMiscellaneousDataTable MiscellaneousDataDT; IndividualDataTDSMiscellaneousDataRow MiscellaneousDataDR; #region Create 'Miscellaneous' DataRow MiscellaneousDataDT = IndividualDataDS.MiscellaneousData; MiscellaneousDataDR = MiscellaneousDataDT.NewRowTyped(false); MiscellaneousDataDR.PartnerKey = APartnerKey; MiscellaneousDataDT.Rows.Add(MiscellaneousDataDR); #endregion switch (AIndivDataItem) { case TIndividualDataItemEnum.idiSummary: BuildSummaryData(APartnerKey, ref IndividualDataDS, AReadTransaction); DetermineItemCounts(MiscellaneousDataDR, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonalLanguages: PmPersonLanguageAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PLanguageTable LanguageTable = (PLanguageTable)TSharedDataCache.TMCommon.GetCacheableCommonTable( TCacheableCommonTablesEnum.LanguageCodeList); PLanguageRow LanguageRow; foreach (IndividualDataTDSPmPersonLanguageRow PersonLanguageRow in IndividualDataDS.PmPersonLanguage.Rows) { LanguageRow = (PLanguageRow)LanguageTable.Rows.Find(new object[] { PersonLanguageRow.LanguageCode }); if (LanguageRow != null) { PersonLanguageRow.LanguageDescription = LanguageRow.LanguageDescription; } } break; case TIndividualDataItemEnum.idiSpecialNeeds: PmSpecialNeedAccess.LoadByPrimaryKey(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPreviousExperiences: PmPastExperienceAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonalDocuments: PmDocumentAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiJobAssignments: PmJobAssignmentAccess.LoadViaPPartner(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiLocalPersonnelData: // TODO: Fix this so LocalPersonnelData can actually load some data bool labelsAvailable; TOfficeSpecificDataLabelsUIConnector OfficeSpecificDataLabelsUIConnector; OfficeSpecificDataLabelsUIConnector = new TOfficeSpecificDataLabelsUIConnector(APartnerKey, TOfficeSpecificDataLabelUseEnum.Personnel); IndividualDataDS.Merge(OfficeSpecificDataLabelsUIConnector.GetDataLocalPartnerDataValues(APartnerKey, out labelsAvailable, false, AReadTransaction)); break; case TIndividualDataItemEnum.idiProgressReports: PmPersonEvaluationAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiCommitmentPeriods: PmStaffDataAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonSkills: PmPersonSkillAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonalAbilities: PmPersonAbilityAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPassportDetails: PmPassportDetailsAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PCountryTable CountryTable = (PCountryTable)TSharedDataCache.TMCommon.GetCacheableCommonTable( TCacheableCommonTablesEnum.CountryList); PCountryRow CountryRow; foreach (IndividualDataTDSPmPassportDetailsRow PassportRow in IndividualDataDS.PmPassportDetails.Rows) { CountryRow = (PCountryRow)CountryTable.Rows.Find(new object[] { PassportRow.PassportNationalityCode }); if (CountryRow != null) { PassportRow.PassportNationalityName = CountryRow.CountryName; } } break; case TIndividualDataItemEnum.idiPersonalData: PmPersonalDataAccess.LoadByPrimaryKey(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiEmergencyData: PmPersonalDataAccess.LoadByPrimaryKey(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiApplications: PmGeneralApplicationAccess.LoadViaPPersonPartnerKey(IndividualDataDS, APartnerKey, AReadTransaction); PmShortTermApplicationAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PmYearProgramApplicationAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); IndividualDataTDSPmGeneralApplicationRow GenAppRow; TPartnerClass PartnerClass; TStdPartnerStatusCode PartnerStatus; String EventOrFieldName; //TODO: now go through all short and long term apps and set the // two fields in general app for EventOrFieldName and ApplicationForEventOrField foreach (PmShortTermApplicationRow ShortTermRow in IndividualDataDS.PmShortTermApplication.Rows) { GenAppRow = (IndividualDataTDSPmGeneralApplicationRow)IndividualDataDS.PmGeneralApplication.Rows.Find (new object[] { ShortTermRow.PartnerKey, ShortTermRow.ApplicationKey, ShortTermRow.RegistrationOffice }); GenAppRow.ApplicationForEventOrField = Catalog.GetString("Event"); if (!ShortTermRow.IsStConfirmedOptionNull()) { Ict.Petra.Server.MCommon.MCommonMain.RetrievePartnerShortName (ShortTermRow.StConfirmedOption, out EventOrFieldName, out PartnerClass, out PartnerStatus); GenAppRow.EventOrFieldName = EventOrFieldName; } } foreach (PmYearProgramApplicationRow LongTermRow in IndividualDataDS.PmYearProgramApplication.Rows) { GenAppRow = (IndividualDataTDSPmGeneralApplicationRow)IndividualDataDS.PmGeneralApplication.Rows.Find (new object[] { LongTermRow.PartnerKey, LongTermRow.ApplicationKey, LongTermRow.RegistrationOffice }); GenAppRow.ApplicationForEventOrField = Catalog.GetString("Field"); if (!GenAppRow.IsGenAppPossSrvUnitKeyNull()) { Ict.Petra.Server.MCommon.MCommonMain.RetrievePartnerShortName (GenAppRow.GenAppPossSrvUnitKey, out EventOrFieldName, out PartnerClass, out PartnerStatus); GenAppRow.EventOrFieldName = EventOrFieldName; } } break; // TODO: work on all cases/load data for all Individual Data items } return IndividualDataDS; }
public static bool GetSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS) { Boolean NewTransaction; TDBTransaction ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction( Ict.Petra.Server.MCommon.MCommonConstants.CACHEABLEDT_ISOLATIONLEVEL, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { BuildSummaryData(APartnerKey, ref AIndividualDataDS, ReadTransaction); } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TIndividualDataWebConnector.BuildSummaryData commited own transaction."); } } return true; }
private bool SubmitChangesPersonnelData(ref PartnerEditTDS AInspectDS, TDBTransaction ASubmitChangesTransaction, out TVerificationResultCollection AVerificationResult) { TVerificationResultCollection SingleVerificationResultCollection; AVerificationResult = null; // TLogging.LogAtLevel(7, "TPartnerEditUIConnector.SubmitChangesPersonnelData: Instance hash is " + this.GetHashCode().ToString()); bool AllSubmissionsOK = true; if (AInspectDS != null) { AVerificationResult = new TVerificationResultCollection(); #region Individual Data (Personnel Tab) IndividualDataTDS TempDS = new IndividualDataTDS(); TempDS.Merge(AInspectDS); TSubmitChangesResult IndividualDataResult; // can remove tables PPerson, PDataLabelValuePartner and PDataLabelValueApplication here // as this is part of both PartnerEditTDS and IndividualDataTDS and // so the relevant data was already saved when PartnerEditTDS was saved TempDS.RemoveTable(PPersonTable.GetTableName()); TempDS.RemoveTable(PDataLabelValuePartnerTable.GetTableName()); TempDS.RemoveTable(PDataLabelValueApplicationTable.GetTableName()); TempDS.InitVars(); IndividualDataResult = TIndividualDataWebConnector.SubmitChangesServerSide(ref TempDS, ref AInspectDS, ASubmitChangesTransaction, out SingleVerificationResultCollection); if ((IndividualDataResult != TSubmitChangesResult.scrOK) && (IndividualDataResult != TSubmitChangesResult.scrNothingToBeSaved)) { AllSubmissionsOK = false; AVerificationResult.AddCollection(SingleVerificationResultCollection); } #endregion // Note: Locations and PartnerLocations are done sepearately in SubmitChangesAddresses! if (AllSubmissionsOK == false) { // TLogging.LogAtLevel(9, Messages.BuildMessageFromVerificationResult( // "TPartnerEditUIConnector.SubmitChangesPersonnelData AVerificationResult: ", AVerificationResult)); } } else { TLogging.LogAtLevel(8, "TPartnerEditUIConnector.SubmitChangesPersonnelData AInspectDS = null!"); AllSubmissionsOK = false; } return AllSubmissionsOK; }
/// <summary> /// Sets up the screen logic, retrieves data, databinds the Grid and the Detail /// UserControl. /// </summary> /// <returns>void</returns> public void InitialiseUserControl() { FMainDS = new IndividualDataTDS(); // Merge DataTables which are held only in PartnerEditTDS into IndividualDataTDS so that we can access that data in here! FMainDS.Merge(FPartnerEditTDS); // In regards to local personnel data items: this will automatically be loaded in // TUC_IndividualData_LocalPersonnelData.LoadDataOnDemand so we can empty the table here // to make sure we have no data items in there that are not personnel related if (FMainDS.PDataLabelValuePartner != null) { FMainDS.PDataLabelValuePartner.Rows.Clear(); } ucoSummaryData.PetraUtilsObject = FPetraUtilsObject; ucoSummaryData.MainDS = FMainDS; ucoSummaryData.PartnerEditUIConnector = FPartnerEditUIConnector; ucoSummaryData.SpecialInitUserControl(FMainDS); // Hook up ColumnChanging Event of the FPartnerEditTDS's PPerson Table FPartnerEditTDS.PPerson.ColumnChanged += delegate { ucoSummaryData.FMainDS_PPerson_ColumnChanged(FPartnerEditTDS.PPerson[0]); }; // Store the text that the LinkLabels show originally (used for repeated updating the numbers in the strings) FUserControlSetup = new SortedList <TDynamicLoadableUserControls, UserControl>(); StoreLinkLablesOrigText(); // Initialise the numbers in the strings of the LinkLabels CalculateLinkLabelCounters(this); // highlight Overview LinkLabel as this is always initially selected llbOverview.BackColor = PanelHelperBackGround; }
/// <summary> /// Retrieves data that will be shown on the 'Overview' UserControl and adds it to <paramref name="AIndividualDataDS" />. /// </summary> /// <param name="APartnerKey">PartnerKey of the Person to load data for.</param> /// <param name="AIndividualDataDS">Typed DataSet of Type <see cref="IndividualDataTDS" />. Needs to be instantiated already!</param> /// <param name="AReadTransaction">Open Database transaction.</param> /// <returns>void</returns> private static void BuildSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS, TDBTransaction AReadTransaction) { string StrNotAvailable = Catalog.GetString("Not Available"); IndividualDataTDSSummaryDataTable SummaryDT; IndividualDataTDSSummaryDataRow SummaryDR; IndividualDataTDSMiscellaneousDataRow MiscellaneousDataDR = AIndividualDataDS.MiscellaneousData[0]; PPersonTable PPersonDT; PPersonRow PersonDR = null; PmPassportDetailsTable PassportDetailsDT; PmStaffDataTable PmStaffDataDT; PmStaffDataRow PmStaffDataDR = null; PmJobAssignmentTable PmJobAssignmentDT = null; PUnitTable PUnitDT = null; PmJobAssignmentRow PmJobAssignmentDR; IndividualDataTDSJobAssignmentStaffDataCombinedRow JobAssiStaffDataCombDR; int JobAssiStaffDataCombKey = 0; TCacheable CommonCacheable = new TCacheable(); TPartnerCacheable PartnerCacheable = new TPartnerCacheable(); string MaritalStatusDescr; StringCollection PassportColumns; string Nationalities; PPartnerRelationshipTable PartnerRelationshipDT; PPartnerTable PartnerDT; PPartnerRow PartnerDR = null; PLocationRow LocationDR; PPartnerLocationRow PartnerLocationDR; string PhoneNumber; string EmailAddress; Int64 ChurchPartnerKey; SummaryDT = new IndividualDataTDSSummaryDataTable(); SummaryDR = SummaryDT.NewRowTyped(false); SummaryDR.PartnerKey = APartnerKey; #region Person Info PPersonDT = PPersonAccess.LoadByPrimaryKey(APartnerKey, AReadTransaction); if (PPersonDT.Rows.Count == 1) { PersonDR = (PPersonRow)PPersonDT.Rows[0]; } if (PersonDR != null) { SummaryDR.DateOfBirth = PersonDR.DateOfBirth; SummaryDR.Gender = PersonDR.Gender; MaritalStatusDescr = PartnerCodeHelper.GetMaritalStatusDescription( @PartnerCacheable.GetCacheableTable, PersonDR.MaritalStatus); if (MaritalStatusDescr != String.Empty) { MaritalStatusDescr = " - " + MaritalStatusDescr; } SummaryDR.MaritalStatus = PersonDR.MaritalStatus + MaritalStatusDescr; } else { SummaryDR.SetDateOfBirthNull(); SummaryDR.Gender = StrNotAvailable; SummaryDR.MaritalStatus = StrNotAvailable; } #region Nationalities PassportColumns = StringHelper.StrSplit( PmPassportDetailsTable.GetDateOfIssueDBName() + "," + PmPassportDetailsTable.GetDateOfExpirationDBName() + "," + PmPassportDetailsTable.GetPassportNationalityCodeDBName() + "," + PmPassportDetailsTable.GetMainPassportDBName(), ","); PassportDetailsDT = PmPassportDetailsAccess.LoadViaPPerson(APartnerKey, PassportColumns, AReadTransaction, null, 0, 0); Nationalities = Ict.Petra.Shared.MPersonnel.Calculations.DeterminePersonsNationalities( @CommonCacheable.GetCacheableTable, PassportDetailsDT); if (Nationalities != String.Empty) { SummaryDR.Nationalities = Nationalities; } else { SummaryDR.Nationalities = StrNotAvailable; } #endregion #region Phone and Email (from 'Best Address') if (TContactDetailsAggregate.GetPrimaryEmailAndPrimaryPhone(APartnerKey, out PhoneNumber, out EmailAddress)) { SummaryDR.PrimaryPhoneNumber = PhoneNumber ?? StrNotAvailable; SummaryDR.PrimaryEmailAddress = EmailAddress ?? StrNotAvailable; } else { SummaryDR.PrimaryPhoneNumber = StrNotAvailable; SummaryDR.PrimaryEmailAddress = StrNotAvailable; } #endregion #endregion #region Commitments/Jobs PmStaffDataDT = PmStaffDataAccess.LoadViaPPerson(APartnerKey, AReadTransaction); MiscellaneousDataDR.ItemsCountCommitmentPeriods = PmStaffDataDT.Rows.Count; // First check if the PERSON has got any Commitments if (PmStaffDataDT.Rows.Count > 0) { foreach (DataRow DR in PmStaffDataDT.Rows) { JobAssiStaffDataCombDR = AIndividualDataDS.JobAssignmentStaffDataCombined.NewRowTyped(false); JobAssiStaffDataCombDR.Key = JobAssiStaffDataCombKey++; JobAssiStaffDataCombDR.PartnerKey = APartnerKey; PmStaffDataDR = (PmStaffDataRow)DR; if (!(PmStaffDataDR.IsReceivingFieldNull()) && (PmStaffDataDR.ReceivingField != 0)) { PUnitDT = PUnitAccess.LoadByPrimaryKey(PmStaffDataDR.ReceivingField, AReadTransaction); JobAssiStaffDataCombDR.FieldKey = PmStaffDataDR.ReceivingField; JobAssiStaffDataCombDR.FieldName = PUnitDT[0].UnitName; } else { JobAssiStaffDataCombDR.FieldKey = 0; JobAssiStaffDataCombDR.FieldName = "[None]"; } JobAssiStaffDataCombDR.Position = PmStaffDataDR.JobTitle; JobAssiStaffDataCombDR.FromDate = PmStaffDataDR.StartOfCommitment; JobAssiStaffDataCombDR.ToDate = PmStaffDataDR.EndOfCommitment; AIndividualDataDS.JobAssignmentStaffDataCombined.Rows.Add(JobAssiStaffDataCombDR); } } else { // The PERSON hasn't got any Commitments, therefore check if the PERSON has any Job Assignments PmJobAssignmentDT = PmJobAssignmentAccess.LoadViaPPartner(APartnerKey, AReadTransaction); if (PmJobAssignmentDT.Rows.Count > 0) { foreach (DataRow DR in PmJobAssignmentDT.Rows) { JobAssiStaffDataCombDR = AIndividualDataDS.JobAssignmentStaffDataCombined.NewRowTyped(false); JobAssiStaffDataCombDR.Key = JobAssiStaffDataCombKey++; JobAssiStaffDataCombDR.PartnerKey = APartnerKey; PmJobAssignmentDR = (PmJobAssignmentRow)DR; if (PmJobAssignmentDR.UnitKey != 0) { PUnitDT = PUnitAccess.LoadByPrimaryKey(PmJobAssignmentDR.UnitKey, AReadTransaction); JobAssiStaffDataCombDR.FieldKey = PmJobAssignmentDR.UnitKey; JobAssiStaffDataCombDR.FieldName = PUnitDT[0].UnitName; } else { JobAssiStaffDataCombDR.FieldKey = 0; JobAssiStaffDataCombDR.FieldName = "[None]"; } JobAssiStaffDataCombDR.Position = PmJobAssignmentDR.PositionName; JobAssiStaffDataCombDR.FromDate = PmJobAssignmentDR.FromDate; JobAssiStaffDataCombDR.ToDate = PmJobAssignmentDR.ToDate; AIndividualDataDS.JobAssignmentStaffDataCombined.Rows.Add(JobAssiStaffDataCombDR); } } } #endregion #region Church Info SummaryDR.ChurchName = StrNotAvailable; SummaryDR.ChurchAddress = StrNotAvailable; SummaryDR.ChurchPrimaryPhoneNumber = StrNotAvailable; SummaryDR.ChurchPastor = StrNotAvailable; SummaryDR.ChurchPastorsPrimaryPhoneNumber = StrNotAvailable; SummaryDR.NumberOfShownSupportingChurchPastors = 0; // Find SUPPCHURCH Relationship PartnerRelationshipDT = PPartnerRelationshipAccess.LoadUsingTemplate(new TSearchCriteria[] { new TSearchCriteria(PPartnerRelationshipTable.GetRelationKeyDBName(), APartnerKey), new TSearchCriteria(PPartnerRelationshipTable.GetRelationNameDBName(), "SUPPCHURCH") }, AReadTransaction); SummaryDR.NumberOfShownSupportingChurches = PartnerRelationshipDT.Rows.Count; if (PartnerRelationshipDT.Rows.Count > 0) { ChurchPartnerKey = PartnerRelationshipDT[0].PartnerKey; // Load Church Partner PartnerDT = PPartnerAccess.LoadByPrimaryKey(ChurchPartnerKey, AReadTransaction); if (PartnerDT.Rows.Count > 0) { PartnerDR = PartnerDT[0]; // Church Name if (PartnerDR.PartnerShortName != String.Empty) { SummaryDR.ChurchName = PartnerDR.PartnerShortName; } #region Church Address and Phone ServerCalculations.DetermineBestAddress(PartnerRelationshipDT[0].PartnerKey, out PartnerLocationDR, out LocationDR); if (LocationDR != null) { SummaryDR.ChurchAddress = Calculations.DetermineLocationString(LocationDR, Calculations.TPartnerLocationFormatEnum.plfCommaSeparated); } if (TContactDetailsAggregate.GetPrimaryPhoneNumber(PartnerRelationshipDT[0].PartnerKey, out PhoneNumber)) { SummaryDR.ChurchPrimaryPhoneNumber = PhoneNumber ?? StrNotAvailable; } else { SummaryDR.ChurchPrimaryPhoneNumber = StrNotAvailable; } #endregion #region Pastor // Find PASTOR Relationship PartnerRelationshipDT.Rows.Clear(); PartnerRelationshipDT = PPartnerRelationshipAccess.LoadUsingTemplate(new TSearchCriteria[] { new TSearchCriteria(PPartnerRelationshipTable.GetPartnerKeyDBName(), ChurchPartnerKey), new TSearchCriteria(PPartnerRelationshipTable.GetRelationNameDBName(), "PASTOR") }, AReadTransaction); SummaryDR.NumberOfShownSupportingChurchPastors = PartnerRelationshipDT.Rows.Count; if (PartnerRelationshipDT.Rows.Count > 0) { // Load PASTOR Partner PartnerDT = PPartnerAccess.LoadByPrimaryKey(PartnerRelationshipDT[0].RelationKey, AReadTransaction); if (PartnerDT.Rows.Count > 0) { PartnerDR = PartnerDT[0]; // Pastor's Name if (PartnerDR.PartnerShortName != String.Empty) { SummaryDR.ChurchPastor = PartnerDR.PartnerShortName; } #region Pastor's Phone if (TContactDetailsAggregate.GetPrimaryPhoneNumber(PartnerRelationshipDT[0].RelationKey, out PhoneNumber)) { SummaryDR.ChurchPastorsPrimaryPhoneNumber = PhoneNumber ?? StrNotAvailable; } else { SummaryDR.ChurchPastorsPrimaryPhoneNumber = StrNotAvailable; } #endregion } } #endregion } } #endregion // Add Summary DataRow to Summary DataTable SummaryDT.Rows.Add(SummaryDR); // Add Row to 'SummaryData' DataTable in Typed DataSet 'IndividualDataTDS' AIndividualDataDS.Merge(SummaryDT); }
/// <summary> /// Test that the data was merged correctly! /// </summary> /// <param name="AFromPartnerKey">Partner Key of the Person Partner that is the 'From' Partner in the Partner Merge Test.</param> /// <param name="AToPartnerKey">Partner Key of the Person Partner that is the 'To' Partner in the Partner Merge Test.</param> /// <param name="ADataLabelKey">Key for PDataLabel that is created for testing.</param> /// <param name="AConnector">Instantiated Partner Edit UIConnector.</param> void TestMergePMData_SecondaryAsserts(long AFromPartnerKey, long AToPartnerKey, int ADataLabelKey, ref TPartnerEditUIConnector AConnector) { PartnerEditTDS MainDS = new PartnerEditTDS(); IndividualDataTDS IndividualDS = new IndividualDataTDS(); // Read Partners from the database after they have been merged MainDS.PPartner.Merge(PPartnerAccess.LoadAll(DBAccess.GDBAccessObj.Transaction)); MainDS.PPerson.Merge(PPersonAccess.LoadAll(DBAccess.GDBAccessObj.Transaction)); IndividualDS.PDataLabelValuePartner.Merge(PDataLabelValuePartnerAccess.LoadViaPDataLabel(ADataLabelKey, DBAccess.GDBAccessObj.Transaction)); IndividualDS.PmPassportDetails.Merge(PmPassportDetailsAccess.LoadViaPPerson(AToPartnerKey, DBAccess.GDBAccessObj.Transaction)); IndividualDS.PmPersonalData.Merge(PmPersonalDataAccess.LoadViaPPerson(AToPartnerKey, DBAccess.GDBAccessObj.Transaction)); PPartnerMergeTable MergeTable = PPartnerMergeAccess.LoadByPrimaryKey(AFromPartnerKey, DBAccess.GDBAccessObj.Transaction); PPartnerRow FromPartnerRow = (PPartnerRow)MainDS.PPartner.Rows.Find(new object[] { AFromPartnerKey }); PPartnerRow ToPartnerRow = (PPartnerRow)MainDS.PPartner.Rows.Find(new object[] { AToPartnerKey }); PDataLabelValuePartnerRow DataLabelValuePartnerRow = (PDataLabelValuePartnerRow)IndividualDS.PDataLabelValuePartner.Rows[0]; PmPassportDetailsRow PassportDetailsRow = (PmPassportDetailsRow)IndividualDS.PmPassportDetails.Rows[0]; PmPersonalDataRow PersonalDataRow = (PmPersonalDataRow)IndividualDS.PmPersonalData.Rows[0]; // Check that what we are about to check is there... Assert.That(MergeTable, Is.Not.Null); Assert.That(FromPartnerRow, Is.Not.Null); Assert.That(ToPartnerRow, Is.Not.Null); Assert.That(DataLabelValuePartnerRow, Is.Not.Null); Assert.That(PassportDetailsRow, Is.Not.Null); Assert.That(PersonalDataRow, Is.Not.Null); // // Check that Partners have been merged correctly // // Checking the two Persons Assert.AreEqual("MERGED", FromPartnerRow.StatusCode, "merge PM data"); Assert.AreEqual("ACTIVE", ToPartnerRow.StatusCode, "merge PM data"); Assert.AreEqual(AToPartnerKey, DataLabelValuePartnerRow.PartnerKey, "merge PM data"); Assert.AreEqual(175, PersonalDataRow.HeightCm, "merge PM data"); Assert.AreEqual(95, PersonalDataRow.WeightKg, "merge PM data"); // Checking the MergeTable Assert.IsNotNull(MergeTable.Rows[0], "merge PM data"); }
/// <summary> /// Called when data got saved in the screen. Performs a check whether reloading /// of the 'SummaryData' is necessary to reflect changes that were done elsewhere /// in the Partner Edit screen and which just got saved. /// </summary> /// <returns>void</returns> public void CheckForRefreshOfDisplayedData(bool AJobAndStaffDataGridNeedsRefresh) { bool RefreshNecessary = false; string PhoneOfPerson; string EmailOfPerson; if (!AJobAndStaffDataGridNeedsRefresh) { Int64[] SupportingChurchesPartnerKeys = new long[0]; if (FMainDS.Tables[PPartnerAttributeTable.GetTableName()] != null) { // Check for change of the 'Primary Phone Number' and the 'Primary E-mail Address' of the PERSON DeterminePrimaryEmailAndPrimaryPhone(out PhoneOfPerson, out EmailOfPerson); if ((PhoneOfPerson != FPhoneOfPerson) || (EmailOfPerson != FEmailOfPerson)) { RefreshNecessary = true; } } if (FMainDS.Tables[PPartnerRelationshipTable.GetTableName()] != null) { // Check for change in supporting Church/es relationship(s) DetermineChurchRelationships(out SupportingChurchesPartnerKeys); if ((FSupportingChurchesPartnerKeys == null) || (FSupportingChurchesPartnerKeys.Length != SupportingChurchesPartnerKeys.Length)) { RefreshNecessary = true; } else { for (int Counter = 0; Counter < SupportingChurchesPartnerKeys.Length; Counter++) { if (SupportingChurchesPartnerKeys[Counter] != FSupportingChurchesPartnerKeys[Counter]) { RefreshNecessary = true; } } } } } else { RefreshNecessary = true; } if (RefreshNecessary) { // Call WebConnector to retrieve SummaryData afresh! IndividualDataTDS FillDS = new IndividualDataTDS(); FillDS.Merge(FMainDS.MiscellaneousData); TRemote.MPersonnel.Person.DataElements.WebConnectors.GetSummaryData(FMainDS.PPerson[0].PartnerKey, ref FillDS); FMainDS.SummaryData.Rows.Clear(); FMainDS.Merge(FillDS.SummaryData); FMainDS.JobAssignmentStaffDataCombined.Rows.Clear(); FMainDS.Merge(FillDS.JobAssignmentStaffDataCombined); // Refresh the displayed data SpecialShowData(); } }
public static bool GetSummaryData(Int64 APartnerKey, ref IndividualDataTDS AIndividualDataDS) { TDBTransaction Transaction = null; IndividualDataTDS IndividualDataDS = new IndividualDataTDS(); IndividualDataDS.Merge(AIndividualDataDS); DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction( Ict.Petra.Shared.MCommon.MCommonConstants.CACHEABLEDT_ISOLATIONLEVEL, TEnforceIsolationLevel.eilMinimum, ref Transaction, delegate { BuildSummaryData(APartnerKey, ref IndividualDataDS, Transaction); }); AIndividualDataDS.Merge(IndividualDataDS); return true; }
public static TSubmitChangesResult SubmitChangesServerSide(ref IndividualDataTDS AInspectDS, ref PartnerEditTDS APartnerEditInspectDS, TDBTransaction ASubmitChangesTransaction, out TVerificationResultCollection AVerificationResult) { TSubmitChangesResult SubmissionResult; PmJobAssignmentTable PmJobAssignmentTableSubmit; AVerificationResult = new TVerificationResultCollection(); if (AInspectDS != null) { SubmissionResult = TSubmitChangesResult.scrOK; // Job Assignments: make sure that jobs exist for assignments if (AInspectDS.Tables.Contains(PmJobAssignmentTable.GetTableName()) && (AInspectDS.PmJobAssignment.Rows.Count > 0)) { UmJobTable JobTableTemp = new UmJobTable(); UmJobTable JobTableSubmit = new UmJobTable(); UmJobRow JobRow; PmJobAssignmentTableSubmit = AInspectDS.PmJobAssignment; // every job_assignment_row needs to have a row that it references in um_job foreach (PmJobAssignmentRow JobAssignmentRow in PmJobAssignmentTableSubmit.Rows) { if (JobAssignmentRow.RowState != DataRowState.Deleted) { JobTableTemp = UmJobAccess.LoadByPrimaryKey(JobAssignmentRow.UnitKey, JobAssignmentRow.PositionName, JobAssignmentRow.PositionScope, JobAssignmentRow.JobKey, ASubmitChangesTransaction); // if no corresponding job record found then we need to create one // (job key was already set on client side to new value so merging back to the // client does not cause problems because of primary key change) if (JobTableTemp.Count == 0) { JobRow = (UmJobRow)JobTableSubmit.NewRow(); JobRow.UnitKey = JobAssignmentRow.UnitKey; JobRow.PositionName = JobAssignmentRow.PositionName; JobRow.PositionScope = JobAssignmentRow.PositionScope; JobRow.JobKey = JobAssignmentRow.JobKey; JobRow.FromDate = JobAssignmentRow.FromDate; JobRow.ToDate = JobAssignmentRow.ToDate; JobRow.CommitmentPeriod = "None"; JobRow.TrainingPeriod = "None"; // Need to update the JobKey field in job assignment table record from job record JobAssignmentRow.JobKey = JobRow.JobKey; JobTableSubmit.Rows.Add(JobRow); } else { // job record exists: in this case we need to update JobKey in // the Job Assignment Record from Job Row JobAssignmentRow.JobKey = ((UmJobRow)JobTableTemp.Rows[0]).JobKey; } } } // submit table with newly created jobs if (JobTableSubmit.Rows.Count > 0) { UmJobAccess.SubmitChanges(JobTableSubmit, ASubmitChangesTransaction); } } // now submit the whole dataset at once IndividualDataTDSAccess.SubmitChanges(AInspectDS); // Need to merge tables back into APartnerEditInspectDS so the updated s_modification_id_t is returned // correctly to the Partner Edit. // Unfortunately this can't be done simply by using merge method of the dataset since they are two different // types but has to be done per table. if (AInspectDS.Tables.Contains(PmSpecialNeedTable.GetTableName()) && (AInspectDS.PmSpecialNeed.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmSpecialNeedTable.GetTableName()].Merge(AInspectDS.PmSpecialNeed); } if (AInspectDS.Tables.Contains(PmPersonAbilityTable.GetTableName()) && (AInspectDS.PmPersonAbility.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonAbilityTable.GetTableName()].Merge(AInspectDS.PmPersonAbility); } if (AInspectDS.Tables.Contains(PmPassportDetailsTable.GetTableName()) && (AInspectDS.PmPassportDetails.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPassportDetailsTable.GetTableName()].Merge(AInspectDS.PmPassportDetails); } if (AInspectDS.Tables.Contains(PmPersonalDataTable.GetTableName()) && (AInspectDS.PmPersonalData.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonalDataTable.GetTableName()].Merge(AInspectDS.PmPersonalData); } if (AInspectDS.Tables.Contains(PmPersonLanguageTable.GetTableName()) && (AInspectDS.PmPersonLanguage.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonLanguageTable.GetTableName()].Merge(AInspectDS.PmPersonLanguage); } if (AInspectDS.Tables.Contains(PmPersonEvaluationTable.GetTableName()) && (AInspectDS.PmPersonEvaluation.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonEvaluationTable.GetTableName()].Merge(AInspectDS.PmPersonEvaluation); } if (AInspectDS.Tables.Contains(PmStaffDataTable.GetTableName()) && (AInspectDS.PmStaffData.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmStaffDataTable.GetTableName()].Merge(AInspectDS.PmStaffData); } if (AInspectDS.Tables.Contains(PmPersonSkillTable.GetTableName()) && (AInspectDS.PmPersonSkill.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPersonSkillTable.GetTableName()].Merge(AInspectDS.PmPersonSkill); } if (AInspectDS.Tables.Contains(PmPastExperienceTable.GetTableName()) && (AInspectDS.PmPastExperience.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmPastExperienceTable.GetTableName()].Merge(AInspectDS.PmPastExperience); } if (AInspectDS.Tables.Contains(PmDocumentTable.GetTableName()) && (AInspectDS.PmDocument.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmDocumentTable.GetTableName()].Merge(AInspectDS.PmDocument); } if (AInspectDS.Tables.Contains(PmJobAssignmentTable.GetTableName()) && (AInspectDS.PmJobAssignment.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmJobAssignmentTable.GetTableName()].Merge(AInspectDS.PmJobAssignment); } if (AInspectDS.Tables.Contains(PmGeneralApplicationTable.GetTableName()) && (AInspectDS.PmGeneralApplication.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmGeneralApplicationTable.GetTableName()].Merge(AInspectDS.PmGeneralApplication); } if (AInspectDS.Tables.Contains(PmShortTermApplicationTable.GetTableName()) && (AInspectDS.PmShortTermApplication.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmShortTermApplicationTable.GetTableName()].Merge(AInspectDS.PmShortTermApplication); } if (AInspectDS.Tables.Contains(PmYearProgramApplicationTable.GetTableName()) && (AInspectDS.PmYearProgramApplication.Rows.Count > 0)) { APartnerEditInspectDS.Tables[PmYearProgramApplicationTable.GetTableName()].Merge(AInspectDS.PmYearProgramApplication); } } else { TLogging.LogAtLevel(8, "TIndividualDataWebConnector.SubmitChangesServerSide: AInspectDS = nil!"); SubmissionResult = TSubmitChangesResult.scrNothingToBeSaved; } return(SubmissionResult); }
/// <summary> /// Creates two Person Partners, a Family Partner and AP Info for the From Partner. /// </summary> /// <param name="AFromPartnerKey">Partner Key of the Person Partner that is the 'From' Partner in the Partner Merge Test.</param> /// <param name="AToPartnerKey">Partner Key of the Person Partner that is the 'To' Partner in the Partner Merge Test.</param> /// <param name="AFamilyPartnerKey">Partner Key of the Family Partner that is in the Partner Merge Test.</param> /// <param name="ADataLabelKey">Key for PDataLabel that is created for testing.</param> /// <param name="AConnector">Instantiated Partner Edit UIConnector.</param> private void TestMergePMData_Arrange(out long AFromPartnerKey, out long AToPartnerKey, out long AFamilyPartnerKey, out int ADataLabelKey, TPartnerEditUIConnector AConnector) { TVerificationResultCollection VerificationResult; TSubmitChangesResult Result; DataSet ResponseDS; PartnerEditTDS MainDS = new PartnerEditTDS(); IndividualDataTDS IndividualDS = new IndividualDataTDS(); // create two new Person Partners, one family and PM Data for both Partners TCreateTestPartnerData.CreateFamilyWithTwoPersonRecords(MainDS); PPartnerRow FamilyPartnerRow = (PPartnerRow)MainDS.PPartner.Rows[0]; PPartnerRow FromPartnerRow = (PPartnerRow)MainDS.PPartner.Rows[1]; PPartnerRow ToPartnerRow = (PPartnerRow)MainDS.PPartner.Rows[2]; PDataLabelTable DataLabel = TCreateTestPartnerData.CreateNewPMData(FromPartnerRow.PartnerKey, ToPartnerRow.PartnerKey, IndividualDS); PmPassportDetailsRow row = (PmPassportDetailsRow)IndividualDS.PmPassportDetails.Rows[0]; // Guard Assertions Assert.That(FamilyPartnerRow, Is.Not.Null); Assert.That(FromPartnerRow, Is.Not.Null); Assert.That(ToPartnerRow, Is.Not.Null); Assert.That(DataLabel, Is.Not.Null); Assert.AreEqual(1, IndividualDS.PDataLabelValuePartner.Rows.Count); Assert.AreEqual(1, IndividualDS.PmPassportDetails.Rows.Count); Assert.AreEqual(2, IndividualDS.PmPersonalData.Rows.Count); AFamilyPartnerKey = FamilyPartnerRow.PartnerKey; AFromPartnerKey = FromPartnerRow.PartnerKey; AToPartnerKey = ToPartnerRow.PartnerKey; ADataLabelKey = ((PDataLabelRow)DataLabel.Rows[0]).Key; // Submit the new records to the database ResponseDS = new PartnerEditTDS(); Result = AConnector.SubmitChanges(ref MainDS, ref ResponseDS, out VerificationResult); // Guard Assertion Assert.That(Result, Is.EqualTo( TSubmitChangesResult.scrOK), "SubmitChanges for two Persons failed: " + VerificationResult.BuildVerificationResultString()); // Submit the new DataLabel record to the database PDataLabelAccess.SubmitChanges(DataLabel, DBAccess.GDBAccessObj.Transaction); // Submit the new Document record to the database MainDS.Merge(IndividualDS); Result = TIndividualDataWebConnector.SubmitChangesServerSide(ref IndividualDS, ref MainDS, DBAccess.GDBAccessObj.Transaction, out VerificationResult); // Guard Assertion Assert.That(Result, Is.EqualTo( TSubmitChangesResult.scrOK), "SubmitChanges for PM Data failed: " + VerificationResult.BuildVerificationResultString()); }
/// <summary> /// Passes data as a Typed DataSet to the caller, containing a DataTable that corresponds with <paramref name="AIndivDataItem"></paramref>. /// </summary> /// <param name="APartnerKey">PartnerKey of the Person to load data for.</param> /// <param name="AIndivDataItem">The Individual Data Item for which data should be returned.</param> /// <param name="AReadTransaction">Open Database transaction.</param> /// <returns>A Typed DataSet containing a DataTable that corresponds with <paramref name="AIndivDataItem"></paramref>.</returns> private static IndividualDataTDS GetData(Int64 APartnerKey, TIndividualDataItemEnum AIndivDataItem, TDBTransaction AReadTransaction) { IndividualDataTDS IndividualDataDS = new IndividualDataTDS("IndividualData"); // create the IndividualDataTDS DataSet that will later be passed to the Client IndividualDataTDSMiscellaneousDataTable MiscellaneousDataDT; IndividualDataTDSMiscellaneousDataRow MiscellaneousDataDR; #region Create 'Miscellaneous' DataRow MiscellaneousDataDT = IndividualDataDS.MiscellaneousData; MiscellaneousDataDR = MiscellaneousDataDT.NewRowTyped(false); MiscellaneousDataDR.PartnerKey = APartnerKey; MiscellaneousDataDT.Rows.Add(MiscellaneousDataDR); #endregion switch (AIndivDataItem) { case TIndividualDataItemEnum.idiSummary: BuildSummaryData(APartnerKey, ref IndividualDataDS, AReadTransaction); DetermineItemCounts(MiscellaneousDataDR, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonalLanguages: PmPersonLanguageAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PLanguageTable LanguageTable = (PLanguageTable)TSharedDataCache.TMCommon.GetCacheableCommonTable( TCacheableCommonTablesEnum.LanguageCodeList); PLanguageRow LanguageRow; foreach (IndividualDataTDSPmPersonLanguageRow PersonLanguageRow in IndividualDataDS.PmPersonLanguage.Rows) { LanguageRow = (PLanguageRow)LanguageTable.Rows.Find(new object[] { PersonLanguageRow.LanguageCode }); if (LanguageRow != null) { PersonLanguageRow.LanguageDescription = LanguageRow.LanguageDescription; } } break; case TIndividualDataItemEnum.idiSpecialNeeds: PmSpecialNeedAccess.LoadByPrimaryKey(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPreviousExperiences: PmPastExperienceAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PUnitTable UnitTable; PUnitRow UnitRow; // For outreaches the event code is currently stored in the location field. Try to retrieve the correct // outreach event and return it's actual name (as the event does not mean much to anybody). foreach (IndividualDataTDSPmPastExperienceRow PastExpRow in IndividualDataDS.PmPastExperience.Rows) { PUnitRow template = new PUnitTable().NewRowTyped(false); template.OutreachCode = PastExpRow.PrevLocation; UnitTable = PUnitAccess.LoadUsingTemplate(template, AReadTransaction); if (UnitTable.Rows.Count > 0) { UnitRow = (PUnitRow)UnitTable.Rows[0]; PastExpRow.EventName = UnitRow.UnitName; } } break; case TIndividualDataItemEnum.idiPersonalDocuments: PmDocumentAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiJobAssignments: PmJobAssignmentAccess.LoadViaPPartner(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiLocalPersonnelData: // TODO: Fix this so LocalPersonnelData can actually load some data bool labelsAvailable; TOfficeSpecificDataLabelsUIConnector OfficeSpecificDataLabelsUIConnector; OfficeSpecificDataLabelsUIConnector = new TOfficeSpecificDataLabelsUIConnector(APartnerKey, TOfficeSpecificDataLabelUseEnum.Personnel); IndividualDataDS.Merge(OfficeSpecificDataLabelsUIConnector.GetDataLocalPartnerDataValues(APartnerKey, out labelsAvailable, false, AReadTransaction)); break; case TIndividualDataItemEnum.idiProgressReports: PmPersonEvaluationAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiCommitmentPeriods: PmStaffDataAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonSkills: PmPersonSkillAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPersonalAbilities: PmPersonAbilityAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiPassportDetails: PmPassportDetailsAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PCountryTable CountryTable = (PCountryTable)TSharedDataCache.TMCommon.GetCacheableCommonTable( TCacheableCommonTablesEnum.CountryList); PCountryRow CountryRow; foreach (IndividualDataTDSPmPassportDetailsRow PassportRow in IndividualDataDS.PmPassportDetails.Rows) { CountryRow = (PCountryRow)CountryTable.Rows.Find(new object[] { PassportRow.PassportNationalityCode }); if (CountryRow != null) { PassportRow.PassportNationalityName = CountryRow.CountryName; } } break; case TIndividualDataItemEnum.idiPersonalData: PmPersonalDataAccess.LoadByPrimaryKey(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiEmergencyData: PmPersonalDataAccess.LoadByPrimaryKey(IndividualDataDS, APartnerKey, AReadTransaction); break; case TIndividualDataItemEnum.idiApplications: PmGeneralApplicationAccess.LoadViaPPersonPartnerKey(IndividualDataDS, APartnerKey, AReadTransaction); PmShortTermApplicationAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); PmYearProgramApplicationAccess.LoadViaPPerson(IndividualDataDS, APartnerKey, AReadTransaction); IndividualDataTDSPmGeneralApplicationRow GenAppRow; TPartnerClass PartnerClass; TStdPartnerStatusCode PartnerStatus; String EventOrFieldName; //TODO: now go through all short and long term apps and set the // two fields in general app for EventOrFieldName and ApplicationForEventOrField foreach (PmShortTermApplicationRow ShortTermRow in IndividualDataDS.PmShortTermApplication.Rows) { GenAppRow = (IndividualDataTDSPmGeneralApplicationRow)IndividualDataDS.PmGeneralApplication.Rows.Find (new object[] { ShortTermRow.PartnerKey, ShortTermRow.ApplicationKey, ShortTermRow.RegistrationOffice }); GenAppRow.ApplicationForEventOrField = Catalog.GetString("Event"); if (!ShortTermRow.IsStConfirmedOptionNull()) { Ict.Petra.Server.MCommon.MCommonMain.RetrievePartnerShortName (ShortTermRow.StConfirmedOption, out EventOrFieldName, out PartnerClass, out PartnerStatus); GenAppRow.EventOrFieldName = EventOrFieldName; } } foreach (PmYearProgramApplicationRow LongTermRow in IndividualDataDS.PmYearProgramApplication.Rows) { GenAppRow = (IndividualDataTDSPmGeneralApplicationRow)IndividualDataDS.PmGeneralApplication.Rows.Find (new object[] { LongTermRow.PartnerKey, LongTermRow.ApplicationKey, LongTermRow.RegistrationOffice }); GenAppRow.ApplicationForEventOrField = Catalog.GetString("Field"); if (!GenAppRow.IsGenAppPossSrvUnitKeyNull()) { Ict.Petra.Server.MCommon.MCommonMain.RetrievePartnerShortName (GenAppRow.GenAppPossSrvUnitKey, out EventOrFieldName, out PartnerClass, out PartnerStatus); GenAppRow.EventOrFieldName = EventOrFieldName; } } break; // TODO: work on all cases/load data for all Individual Data items } return(IndividualDataDS); }
/// create new PM data public static PDataLabelTable CreateNewPMData(long AFromPartnerKey, long AToPartnerKey, IndividualDataTDS AMainDS) { // Create a new DataLabel record PDataLabelTable AllDataLabelTable = PDataLabelAccess.LoadAll(DBAccess.GDBAccessObj.Transaction); PDataLabelTable DataLabelTable = new PDataLabelTable(); PDataLabelRow DataLabelRow = DataLabelTable.NewRowTyped(); // Get the first available key, which is our unique primary key field Int32 Key = 1; while (AllDataLabelTable.Rows.Find(new object[] { Key }) != null) { Key++; } DataLabelRow.Key = Key; DataLabelRow.DataType = "char"; DataLabelTable.Rows.Add(DataLabelRow); // Create a new DataLabelValuePartner record PDataLabelValuePartnerRow DataLabelValuePartner = AMainDS.PDataLabelValuePartner.NewRowTyped(); DataLabelValuePartner.PartnerKey = AFromPartnerKey; DataLabelValuePartner.DataLabelKey = DataLabelRow.Key; AMainDS.PDataLabelValuePartner.Rows.Add(DataLabelValuePartner); // Create a new PassportDetails record IndividualDataTDSPmPassportDetailsRow PassportDetails = AMainDS.PmPassportDetails.NewRowTyped(); PassportDetails.PartnerKey = AFromPartnerKey; PassportDetails.PassportNumber = "0"; PassportDetails.PassportNationalityName = "IRELAND"; AMainDS.PmPassportDetails.Rows.Add(PassportDetails); // Create two new PersonalData records PmPersonalDataRow FromPersonalData = AMainDS.PmPersonalData.NewRowTyped(); FromPersonalData.PartnerKey = AFromPartnerKey; FromPersonalData.HeightCm = 175; FromPersonalData.WeightKg = 80; AMainDS.PmPersonalData.Rows.Add(FromPersonalData); PmPersonalDataRow ToPersonalData = AMainDS.PmPersonalData.NewRowTyped(); ToPersonalData.PartnerKey = AToPartnerKey; ToPersonalData.WeightKg = 95; AMainDS.PmPersonalData.Rows.Add(ToPersonalData); return DataLabelTable; }
/// create new PM data public static PDataLabelTable CreateNewPMData(long AFromPartnerKey, long AToPartnerKey, IndividualDataTDS AMainDS) { // Create a new DataLabel record PDataLabelTable AllDataLabelTable = PDataLabelAccess.LoadAll(DBAccess.GDBAccessObj.Transaction); PDataLabelTable DataLabelTable = new PDataLabelTable(); PDataLabelRow DataLabelRow = DataLabelTable.NewRowTyped(); // Get the first available key, which is our unique primary key field Int32 Key = 1; while (AllDataLabelTable.Rows.Find(new object[] { Key }) != null) { Key++; } DataLabelRow.Key = Key; DataLabelRow.DataType = "char"; DataLabelTable.Rows.Add(DataLabelRow); // Create a new DataLabelValuePartner record PDataLabelValuePartnerRow DataLabelValuePartner = AMainDS.PDataLabelValuePartner.NewRowTyped(); DataLabelValuePartner.PartnerKey = AFromPartnerKey; DataLabelValuePartner.DataLabelKey = DataLabelRow.Key; AMainDS.PDataLabelValuePartner.Rows.Add(DataLabelValuePartner); // Create a new PassportDetails record IndividualDataTDSPmPassportDetailsRow PassportDetails = AMainDS.PmPassportDetails.NewRowTyped(); PassportDetails.PartnerKey = AFromPartnerKey; PassportDetails.PassportNumber = "0"; PassportDetails.PassportNationalityName = "IRELAND"; AMainDS.PmPassportDetails.Rows.Add(PassportDetails); // Create two new PersonalData records PmPersonalDataRow FromPersonalData = AMainDS.PmPersonalData.NewRowTyped(); FromPersonalData.PartnerKey = AFromPartnerKey; FromPersonalData.HeightCm = 175; FromPersonalData.WeightKg = 80; AMainDS.PmPersonalData.Rows.Add(FromPersonalData); PmPersonalDataRow ToPersonalData = AMainDS.PmPersonalData.NewRowTyped(); ToPersonalData.PartnerKey = AToPartnerKey; ToPersonalData.WeightKg = 95; AMainDS.PmPersonalData.Rows.Add(ToPersonalData); return(DataLabelTable); }