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; }
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; }
public static string GetExtFileHeader() { TPartnerFileExport Exporter = new TPartnerFileExport(); return Exporter.ExtFileHeader(); }
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; }
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; }