Exemple #1
0
        public static String ExportAllPartnersExt()
        {
            TDBTransaction ReadTransaction = null;
            String ExtText = GetExtFileHeader();
            TPartnerFileExport Exporter = new TPartnerFileExport();
            PartnerImportExportTDS MainDS;
            PPartnerTable Partners = new PPartnerTable();

            DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum,
                ref ReadTransaction,
                delegate
                {
                    Partners = PPartnerAccess.LoadAll(ReadTransaction);
                });

            foreach (PPartnerRow Partner in Partners.Rows)
            {
                if ((Partner.PartnerKey != 0) && (Partner.PartnerKey != 1000000)) // skip organization root and 0 when exporting
                {
                    MainDS = TExportAllPartnerData.ExportPartner(Partner.PartnerKey);
                    ExtText += Exporter.ExportPartnerExt(MainDS, /*ASiteKey*/ 0, /*ALocationKey*/ 0, null);
                }
            }

            ExtText += GetExtFileFooter();
            return ExtText;
        }
Exemple #2
0
        public static String ExportExtractPartnersExt(int AExtractId, Boolean AIncludeFamilyMembers)
        {
            TDBTransaction ReadTransaction = null;
            String ExtText = GetExtFileHeader();
            TPartnerFileExport Exporter = new TPartnerFileExport();
            PartnerImportExportTDS MainDS;
            MExtractTable ExtractPartners = new MExtractTable();

            DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum,
                ref ReadTransaction,
                delegate
                {
                    ExtractPartners = MExtractAccess.LoadViaMExtractMaster(AExtractId, ReadTransaction);
                });

            foreach (MExtractRow ExtractPartner in ExtractPartners.Rows)
            {
                if (ExtractPartner.PartnerKey != 0)
                {
                    MainDS = TExportAllPartnerData.ExportPartner(ExtractPartner.PartnerKey);
                    ExtText += Exporter.ExportPartnerExt(MainDS, /*ASiteKey*/ 0, /*ALocationKey*/ 0, null);
                }
            }

            ExtText += GetExtFileFooter();
            return ExtText;
        }
Exemple #3
0
        public static string GetExtFileHeader()
        {
            TPartnerFileExport Exporter = new TPartnerFileExport();

            return Exporter.ExtFileHeader();
        }
Exemple #4
0
        public static string ExportPartnerExt(Int64 APartnerKey,
            Int64 ASiteKey,
            Int32 ALocationKey,
            Boolean ANoFamily,
            StringCollection ASpecificBuildingInfo)
        {
            String extRecord = "";
            //
            // First I'm going to check that I can access this partner OK..
            Boolean PartnerAccessOk = false;
            String ShortName;
            TPartnerClass PartnerClass;
            Boolean IsMergedPartner = false;
            Boolean UserCanAccessPartner = false;

            if (APartnerKey != 0)
            {
                PartnerAccessOk = TPartnerServerLookups.VerifyPartner(APartnerKey,
                    out ShortName, out PartnerClass,
                    out IsMergedPartner, out UserCanAccessPartner);
            }

            if (!PartnerAccessOk || !UserCanAccessPartner)
            {
                return extRecord;  // This is empty - TODO: I'm not returning any error code here.
            }

            TPartnerFileExport Exporter = new TPartnerFileExport();
            PartnerImportExportTDS AMainDS = TExportAllPartnerData.ExportPartner(APartnerKey);

            if (!ANoFamily)  // I'll check whether there's a FAMILY to go with this Partner.
            {
                PPartnerRow PartnerRow = AMainDS.PPartner[0];

                if (PartnerRow.PartnerClass == MPartnerConstants.PARTNERCLASS_PERSON)
                {
                    PPersonRow PersonRow = AMainDS.PPerson[0];
                    long FamilyKey = PersonRow.FamilyKey;
                    PartnerAccessOk = TPartnerServerLookups.VerifyPartner(FamilyKey,
                        out ShortName, out PartnerClass,
                        out IsMergedPartner, out UserCanAccessPartner);

                    if ((FamilyKey > 0) && PartnerAccessOk && UserCanAccessPartner)
                    {
                        PartnerImportExportTDS FamilyDS = TExportAllPartnerData.ExportPartner(FamilyKey);
                        extRecord += Exporter.ExportPartnerExt(FamilyDS, ASiteKey, ALocationKey, ASpecificBuildingInfo);
                    }

                    // TODO: If I couldn't access the FAMILY for a PERSON, I should perhaps stop exporting?
                }
            }

            extRecord += Exporter.ExportPartnerExt(AMainDS, ASiteKey, ALocationKey, ASpecificBuildingInfo);
            return extRecord;
        }
Exemple #5
0
        public static String ExportExtractPartnersExt(int AExtractId, Boolean AIncludeFamilyMembers)
        {
            TDBTransaction ReadTransaction = null;
            String ExtText = GetExtFileHeader();
            TPartnerFileExport Exporter = new TPartnerFileExport();
            PartnerImportExportTDS MainDS;
            DataTable ExtractPartners = new MExtractTable();

            ExtractPartners.Columns.Add("p_partner_class_c", typeof(string));

            TProgressTracker.InitProgressTracker(DomainManager.GClientID.ToString(), Catalog.GetString("Exporting Extract"));

            string Query = "SELECT m_extract.*, p_partner.p_partner_class_c" +
                           " FROM m_extract, p_partner" +
                           " WHERE m_extract.m_extract_id_i = " + AExtractId +
                           " AND p_partner.p_partner_key_n = m_extract.p_partner_key_n";

            DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.ReadCommitted, ref ReadTransaction,
                delegate
                {
                    ExtractPartners = DBAccess.GDBAccessObj.SelectDT(Query, ExtractPartners.TableName, ReadTransaction);
                    int i = 0;
                    int Total = ExtractPartners.Rows.Count;
                    decimal PercentCompleted = 0;

                    foreach (DataRow ExtractPartner in ExtractPartners.Rows)
                    {
                        // stop if user cancels operation
                        if (TProgressTracker.GetCurrentState(DomainManager.GClientID.ToString()).CancelJob)
                        {
                            ExtText = null;
                            break;
                        }

                        if (i > 0)
                        {
                            PercentCompleted = decimal.Divide(i, Total) * 100;
                        }

                        i++;

                        TProgressTracker.SetCurrentState(DomainManager.GClientID.ToString(),
                            string.Format(Catalog.GetString("Exporting partner {0} out of {1}."), i, Total),
                            PercentCompleted);

                        // get keys
                        Int64 PartnerKey = (Int64)ExtractPartner[MExtractTable.GetPartnerKeyDBName()];
                        Int64 SiteKey = (Int64)ExtractPartner[MExtractTable.GetSiteKeyDBName()];
                        int LocationKey = 0;

                        if ((ExtractPartner[MExtractTable.GetLocationKeyDBName()] != System.DBNull.Value)
                            && (ExtractPartner[MExtractTable.GetLocationKeyDBName()] != null))
                        {
                            LocationKey = (Int32)ExtractPartner[MExtractTable.GetLocationKeyDBName()];
                        }

                        if (PartnerKey != 0)
                        {
                            // if row is a family partner and the user wants to also export the family's person members
                            if (AIncludeFamilyMembers && (ExtractPartner["p_partner_class_c"].ToString() == MPartnerConstants.PARTNERCLASS_FAMILY))
                            {
                                // export the family partner in the extract
                                MainDS = TExportAllPartnerData.ExportPartner(PartnerKey, TPartnerClass.FAMILY);
                                ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);

                                PPersonTable Persons = PPersonAccess.LoadViaPFamily(PartnerKey, ReadTransaction);

                                foreach (PPersonRow Row in Persons.Rows)
                                {
                                    // do not export if already in extract
                                    if (ExtractPartners.Select(MExtractTable.GetPartnerKeyDBName() + " = " + Row.PartnerKey).Length > 0)
                                    {
                                        continue;
                                    }

                                    MainDS = TExportAllPartnerData.ExportPartner(Row.PartnerKey, TPartnerClass.PERSON);

                                    // if member has same address as family
                                    if (PPartnerLocationAccess.Exists(Row.PartnerKey, SiteKey, LocationKey, ReadTransaction))
                                    {
                                        // export the person member with the same address as family partner
                                        ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);
                                    }
                                    else
                                    {
                                        PLocationTable LocationTable;
                                        string CountryName;

                                        TAddressTools.GetBestAddress(Row.PartnerKey, out LocationTable, out CountryName, ReadTransaction);

                                        if ((LocationTable != null) && (LocationTable.Rows.Count > 0))
                                        {
                                            // export the person member with the person partner's best address
                                            ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);
                                        }
                                    }
                                }
                            }
                            else if (ExtractPartner["p_partner_class_c"].ToString() == MPartnerConstants.PARTNERCLASS_PERSON) // if person partner
                            {
                                PPersonRow PersonRecord = PPersonAccess.LoadByPrimaryKey(PartnerKey, ReadTransaction)[0];

                                // do not export family if already in extract
                                if (ExtractPartners.Select(MExtractTable.GetPartnerKeyDBName() + " = " + PersonRecord.FamilyKey).Length == 0)
                                {
                                    // export the family record first.
                                    MainDS = TExportAllPartnerData.ExportPartner(PersonRecord.FamilyKey, TPartnerClass.FAMILY);

                                    // if family has same address as person member
                                    if (PPartnerLocationAccess.Exists(PersonRecord.FamilyKey, SiteKey, LocationKey, ReadTransaction))
                                    {
                                        // export the family member with the same address as person member
                                        ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);
                                    }
                                    else
                                    {
                                        PLocationTable LocationTable;
                                        string CountryName;

                                        TAddressTools.GetBestAddress(PersonRecord.FamilyKey, out LocationTable, out CountryName, ReadTransaction);

                                        if ((LocationTable != null) && (LocationTable.Rows.Count > 0))
                                        {
                                            // export the family with the family partner's best address
                                            ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);
                                        }
                                    }
                                }

                                // export the person partner in the extract
                                MainDS = TExportAllPartnerData.ExportPartner(PartnerKey, TPartnerClass.PERSON);
                                ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);
                            }
                            else
                            {
                                // export the partner in the extract
                                MainDS =
                                    TExportAllPartnerData.ExportPartner(PartnerKey,
                                        SharedTypes.PartnerClassStringToEnum(ExtractPartner["p_partner_class_c"].ToString()));
                                ExtText += Exporter.ExportPartnerExt(MainDS, SiteKey, LocationKey, null);
                            }
                        }
                    }
                });

            TProgressTracker.FinishJob(DomainManager.GClientID.ToString());

            if (ExtText != null) // if operation has been cancelled
            {
                ExtText += GetExtFileFooter();
            }

            return ExtText;
        }