Example #1
0
        public static String BuildAddressBlock(String AAddressLayoutBlock,
                                               TFormDataPartner AFormData,
                                               TPartnerClass APartnerClass,
                                               TDBTransaction ATransaction)
        {
            String AddressBlock = "";

            List <String> AddressTokenList     = new List <String>();
            String        AddressLineText      = "";
            String        AddressLineTokenText = "";
            Boolean       PrintAnyway          = false;
            Boolean       CapsOn           = false;
            Boolean       UseContact       = false;
            String        SpacePlaceholder = "";

            PPersonTable PersonTable;
            PPersonRow   PersonRow = null;
            PFamilyTable FamilyTable;
            PFamilyRow   FamilyRow         = null;
            Int64        ContactPartnerKey = 0;

            AddressTokenList = BuildTokenListFromAddressLayoutBlock(AAddressLayoutBlock);

            // initialize values
            AddressLineText = "";
            PrintAnyway     = false;

            foreach (String AddressLineToken in AddressTokenList)
            {
                switch (AddressLineToken)
                {
                case "[[TitleAndSpace]]":
                case "[[FirstNameAndSpace]]":
                case "[[FirstInitialAndSpace]]":
                case "[[LastNameAndSpace]]":

                    SpacePlaceholder = " ";
                    break;

                default:

                    SpacePlaceholder = "";
                    break;
                }

                switch (AddressLineToken)
                {
                case "[[AcademicTitle]]":

                    if (UseContact)
                    {
                        if (PersonRow != null)
                        {
                            AddressLineText += ConvertIfUpperCase(PersonRow.AcademicTitle, CapsOn);
                        }
                    }
                    else
                    {
                        if (AFormData.GetType() == typeof(TFormDataPerson))
                        {
                            AddressLineText += ConvertIfUpperCase(((TFormDataPerson)AFormData).AcademicTitle, CapsOn);
                        }
                    }

                    break;

                case "[[AddresseeType]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.AddresseeType, CapsOn);
                    break;

                case "[[Address3]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.Address3, CapsOn);
                    break;

                case "[[CapsOn]]":
                    CapsOn = true;
                    break;

                case "[[CapsOff]]":
                    CapsOn = false;
                    break;

                case "[[City]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.City, CapsOn);
                    break;

                case "[[CountryName]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.CountryName, CapsOn);
                    break;

                case "[[CountryInLocalLanguage]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.CountryInLocalLanguage, CapsOn);
                    break;

                case "[[County]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.County, CapsOn);
                    break;

                case "[[UseContact]]":

                    /* Get the person or family record that is acting as the contact
                     *  only applicable to churches and organisations. */
                    switch (APartnerClass)
                    {
                    case TPartnerClass.CHURCH:
                        PChurchTable ChurchTable;
                        PChurchRow   ChurchRow;
                        ChurchTable = PChurchAccess.LoadByPrimaryKey(Convert.ToInt64(AFormData.PartnerKey), ATransaction);

                        if (ChurchTable.Count > 0)
                        {
                            ChurchRow = (PChurchRow)ChurchTable.Rows[0];

                            if (!ChurchRow.IsContactPartnerKeyNull())
                            {
                                ContactPartnerKey = ChurchRow.ContactPartnerKey;
                            }
                        }

                        break;

                    case TPartnerClass.ORGANISATION:
                        POrganisationTable OrganisationTable;
                        POrganisationRow   OrganisationRow;
                        OrganisationTable = POrganisationAccess.LoadByPrimaryKey(Convert.ToInt64(AFormData.PartnerKey), ATransaction);

                        if (OrganisationTable.Count > 0)
                        {
                            OrganisationRow = (POrganisationRow)OrganisationTable.Rows[0];

                            if (!OrganisationRow.IsContactPartnerKeyNull())
                            {
                                ContactPartnerKey = OrganisationRow.ContactPartnerKey;
                            }
                        }

                        break;

                    default:
                        ContactPartnerKey = 0;
                        break;
                    }

                    if (ContactPartnerKey > 0)
                    {
                        PersonTable = PPersonAccess.LoadByPrimaryKey(ContactPartnerKey, ATransaction);

                        if (PersonTable.Count > 0)
                        {
                            PersonRow = (PPersonRow)PersonTable.Rows[0];
                        }
                        else
                        {
                            FamilyTable = PFamilyAccess.LoadByPrimaryKey(ContactPartnerKey, ATransaction);

                            if (FamilyTable.Count > 0)
                            {
                                FamilyRow = (PFamilyRow)FamilyTable.Rows[0];
                            }
                        }
                    }

                    UseContact = true;
                    break;

                case "[[CountryCode]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.CountryCode, CapsOn);
                    break;

                case "[[Decorations]]":

                    if (UseContact)
                    {
                        if (PersonRow != null)
                        {
                            AddressLineText += ConvertIfUpperCase(PersonRow.Decorations, CapsOn);
                        }
                    }
                    else
                    {
                        if (AFormData.GetType() == typeof(TFormDataPerson))
                        {
                            AddressLineText += ConvertIfUpperCase(((TFormDataPerson)AFormData).Decorations, CapsOn);
                        }
                    }

                    break;

                case "[[FirstName]]":
                case "[[FirstNameAndSpace]]":

                    AddressLineTokenText = "";

                    if (UseContact)
                    {
                        if (PersonRow != null)
                        {
                            AddressLineTokenText = ConvertIfUpperCase(PersonRow.FirstName, CapsOn);
                        }
                        else if (FamilyRow != null)
                        {
                            AddressLineTokenText = ConvertIfUpperCase(FamilyRow.FirstName, CapsOn);
                        }
                    }
                    else
                    {
                        AddressLineTokenText = ConvertIfUpperCase(AFormData.FirstName, CapsOn);
                    }

                    if ((AddressLineTokenText != null) &&
                        (AddressLineTokenText.Length > 0))
                    {
                        AddressLineText += AddressLineTokenText + SpacePlaceholder;
                    }

                    break;

                case "[[FirstInitial]]":
                case "[[FirstInitialAndSpace]]":

                    AddressLineTokenText = "";

                    if (UseContact)
                    {
                        if (PersonRow != null)
                        {
                            if (PersonRow.FirstName.Length > 0)
                            {
                                AddressLineTokenText = ConvertIfUpperCase(PersonRow.FirstName.Substring(0, 1), CapsOn);
                            }
                        }
                        else if (FamilyRow != null)
                        {
                            if (PersonRow.FirstName.Length > 0)
                            {
                                AddressLineTokenText = ConvertIfUpperCase(FamilyRow.FirstName.Substring(0, 1), CapsOn);
                            }
                        }
                    }
                    else
                    {
                        if (AFormData.FirstName.Length > 0)
                        {
                            AddressLineTokenText = ConvertIfUpperCase(AFormData.FirstName.Substring(0, 1), CapsOn);
                        }
                    }

                    if ((AddressLineTokenText != null) &&
                        (AddressLineTokenText.Length > 0))
                    {
                        AddressLineText += AddressLineTokenText + SpacePlaceholder;
                    }

                    break;

                case "[[LastName]]":
                case "[[LastNameAndSpace]]":

                    AddressLineTokenText = "";

                    if (UseContact)
                    {
                        if (PersonRow != null)
                        {
                            AddressLineTokenText = ConvertIfUpperCase(PersonRow.FamilyName, CapsOn);
                        }
                        else if (FamilyRow != null)
                        {
                            AddressLineTokenText = ConvertIfUpperCase(FamilyRow.FamilyName, CapsOn);
                        }
                    }
                    else
                    {
                        AddressLineTokenText = ConvertIfUpperCase(AFormData.LastName, CapsOn);
                    }

                    if ((AddressLineTokenText != null) &&
                        (AddressLineTokenText.Length > 0))
                    {
                        AddressLineText += AddressLineTokenText + SpacePlaceholder;
                    }

                    break;

                case "[[Address1]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.Address1, CapsOn);
                    break;

                case "[[MiddleName]]":

                    if (UseContact)
                    {
                        if (PersonRow != null)
                        {
                            AddressLineText += ConvertIfUpperCase(PersonRow.MiddleName1, CapsOn);
                        }
                    }
                    else
                    {
                        if (AFormData.GetType() == typeof(TFormDataPerson))
                        {
                            AddressLineText += ConvertIfUpperCase(((TFormDataPerson)AFormData).MiddleName, CapsOn);
                        }
                    }

                    break;

                case "[[Org/Church]]":

                    /* if the contact person is being printed then might still want the
                     *  Organisation or Church name printed.  This does it but only if there
                     *  is a valid contact. */
                    if (UseContact)
                    {
                        AddressLineText += ConvertIfUpperCase(AFormData.ShortName, CapsOn);
                    }

                    break;

                case "[[PartnerKey]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.PartnerKey, CapsOn);
                    break;

                case "[[ShortName]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.ShortName, CapsOn);
                    break;

                case "[[LocalName]]":

                    if (AFormData.LocalName != "")
                    {
                        AddressLineText += ConvertIfUpperCase(AFormData.LocalName, CapsOn);
                    }
                    else
                    {
                        AddressLineText += ConvertIfUpperCase(AFormData.ShortName, CapsOn);
                    }

                    break;

                case "[[PostalCode]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.PostalCode, CapsOn);
                    break;

                case "[[Enclosures]]":
                    AddressLineText += AFormData.Enclosures;
                    break;

                case "[[MailingCode]]":
                    AddressLineText += AFormData.MailingCode;
                    break;

                case "[[Tab]]":
                    AddressLineText += "\t";
                    break;

                case "[[Space]]":
                    AddressLineText += " ";
                    break;

                case "[[AddressStreet2]]":
                    AddressLineText += ConvertIfUpperCase(AFormData.AddressStreet2, CapsOn);
                    break;

                case "[[Title]]":
                case "[[TitleAndSpace]]":
                    AddressLineTokenText = ConvertIfUpperCase(AFormData.Title, CapsOn);

                    if ((AddressLineTokenText != null) &&
                        (AddressLineTokenText.Length > 0))
                    {
                        AddressLineText += AddressLineTokenText + SpacePlaceholder;
                    }

                    break;

                case "[[NoSuppress]]":
                    PrintAnyway = true;
                    break;

                case "[[LocationKey]]":
                    AddressLineText += AFormData.LocationKey;
                    break;

                case "[[LineFeed]]":

                    // only add line if not empty and not suppressed
                    if (PrintAnyway ||
                        (!PrintAnyway &&
                         (AddressLineText.Trim() != "")))
                    {
                        AddressBlock += AddressLineText + "\r\n";
                    }

                    // reset values
                    AddressLineText = "";
                    PrintAnyway     = false;
                    break;

                default:
                    AddressLineText += ConvertIfUpperCase(AddressLineToken, CapsOn);
                    break;
                }
            }

            // this is only for last line if there was no line feed:
            // only add line if not empty and not suppressed
            if (PrintAnyway ||
                (!PrintAnyway &&
                 (AddressLineText.Trim() != "")))
            {
                AddressBlock += AddressLineText + "\r\n";
            }

            // or just get the element list from cached table (since we need to get different ones depending on country)

            return(AddressBlock);
        }
 public void AddOrganisationRow(OrganisationRow row) {
     this.Rows.Add(row);
 }
 public void RemoveOrganisationRow(OrganisationRow row) {
     this.Rows.Remove(row);
 }
 public OrganisationRowChangeEvent(OrganisationRow row, global::System.Data.DataRowAction action) {
     this.eventRow = row;
     this.eventAction = action;
 }