Ejemplo n.º 1
0
        /// 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;
            }
        }