/// create new PM data public static PDataLabelTable CreateNewPMData(long AFromPartnerKey, long AToPartnerKey, IndividualDataTDS AMainDS, TDataBase ADataBase = null) { TDataBase db = DBAccess.Connect("CreateNewPMData", ADataBase); TDBTransaction Transaction = db.BeginTransaction(IsolationLevel.ReadCommitted); // Create a new DataLabel record PDataLabelTable AllDataLabelTable = PDataLabelAccess.LoadAll(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); Transaction.Rollback(); return(DataLabelTable); }
/// <summary> /// Get or create a data column for a given data label /// /// </summary> /// <returns>void</returns> private void GetOrCreateDataLabelValueRow(Boolean ACreateIfNotExisting, PDataLabelRow ADataLabelRow, out PDataLabelValuePartnerRow ADataLabelValuePartnerRow, out PDataLabelValueApplicationRow ADataLabelValueApplicationRow) { // Find out whether this Partner has already got a value for this Label and put // it into the corresponding table or create a new row if it does not exist yet ADataLabelValuePartnerRow = null; ADataLabelValueApplicationRow = null; switch (FOfficeSpecificDataLabelUse) { case TOfficeSpecificDataLabelUseEnum.Person: case TOfficeSpecificDataLabelUseEnum.Family: case TOfficeSpecificDataLabelUseEnum.Church: case TOfficeSpecificDataLabelUseEnum.Organisation: case TOfficeSpecificDataLabelUseEnum.Unit: case TOfficeSpecificDataLabelUseEnum.Bank: case TOfficeSpecificDataLabelUseEnum.Venue: case TOfficeSpecificDataLabelUseEnum.Personnel: ADataLabelValuePartnerRow = (PDataLabelValuePartnerRow)FDataLabelValuePartnerDT.Rows.Find(new Object[] { FPartnerKey, ADataLabelRow.Key }); // if value record does not exist yet then create it here if ((ADataLabelValuePartnerRow == null) && ACreateIfNotExisting) { ADataLabelValuePartnerRow = FDataLabelValuePartnerDT.NewRowTyped(true); ADataLabelValuePartnerRow.PartnerKey = FPartnerKey; ADataLabelValuePartnerRow.DataLabelKey = (int)ADataLabelRow.Key; FDataLabelValuePartnerDT.Rows.Add(ADataLabelValuePartnerRow); } break; case TOfficeSpecificDataLabelUseEnum.LongTermApp: case TOfficeSpecificDataLabelUseEnum.ShortTermApp: ADataLabelValueApplicationRow = (PDataLabelValueApplicationRow)FDataLabelValueApplicationDT.Rows.Find(new Object[] { FPartnerKey, FApplicationKey, FRegistrationOffice, ADataLabelRow.Key }); // if value record does not exist yet then create it here if ((ADataLabelValueApplicationRow == null) && ACreateIfNotExisting) { ADataLabelValueApplicationRow = FDataLabelValueApplicationDT.NewRowTyped(true); ADataLabelValueApplicationRow.PartnerKey = FPartnerKey; ADataLabelValueApplicationRow.ApplicationKey = FApplicationKey; ADataLabelValueApplicationRow.RegistrationOffice = FRegistrationOffice; ADataLabelValueApplicationRow.DataLabelKey = (int)ADataLabelRow.Key; FDataLabelValueApplicationDT.Rows.Add(ADataLabelValueApplicationRow); } break; } }