Beispiel #1
0
        /// <summary>
        /// Addresses the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="input">The input.</param>
        /// <param name="addressType">Type of the address.</param>
        /// <param name="qualifier">The qualifier.</param>
        /// <returns></returns>
        public static string Address(DotLiquid.Context context, object input, string addressType, string qualifier = "")
        {
            if (input != null && input is Person)
            {
                var person = (Person)input;

                Guid familyGuid = Rock.SystemGuid.GroupType.GROUPTYPE_FAMILY.AsGuid();
                var  location   = new GroupMemberService(GetRockContext(context))
                                  .Queryable("GroupLocations.Location")
                                  .Where(m =>
                                         m.PersonId == person.Id &&
                                         m.Group.GroupType.Guid == familyGuid)
                                  .SelectMany(m => m.Group.GroupLocations)
                                  .Where(gl =>
                                         gl.GroupLocationTypeValue.Value == addressType)
                                  .Select(gl => gl.Location)
                                  .FirstOrDefault();

                if (location != null)
                {
                    if (qualifier == "")
                    {
                        return(location.GetFullStreetAddress());
                    }
                    else
                    {
                        var matches = Regex.Matches(qualifier, @"\[\[([^\]]+)\]\]");
                        foreach (var match in matches)
                        {
                            string propertyKey = match.ToString().Replace("[", "");
                            propertyKey = propertyKey.ToString().Replace("]", "");
                            propertyKey = propertyKey.ToString().Replace(" ", "");

                            switch (propertyKey)
                            {
                            case "Street1":
                                qualifier = qualifier.Replace(match.ToString(), location.Street1);
                                break;

                            case "Street2":
                                qualifier = qualifier.Replace(match.ToString(), location.Street2);
                                break;

                            case "City":
                                qualifier = qualifier.Replace(match.ToString(), location.City);
                                break;

                            case "State":
                                qualifier = qualifier.Replace(match.ToString(), location.State);
                                break;

                            case "PostalCode":
                            case "Zip":
                                qualifier = qualifier.Replace(match.ToString(), location.PostalCode);
                                break;

                            case "Country":
                                qualifier = qualifier.Replace(match.ToString(), location.Country);
                                break;

                            case "GeoPoint":
                                if (location.GeoPoint != null)
                                {
                                    qualifier = qualifier.Replace(match.ToString(), string.Format("{0},{1}", location.GeoPoint.Latitude.ToString(), location.GeoPoint.Longitude.ToString()));
                                }
                                else
                                {
                                    qualifier = qualifier.Replace(match.ToString(), "");
                                }
                                break;

                            case "Latitude":
                                if (location.GeoPoint != null)
                                {
                                    qualifier = qualifier.Replace(match.ToString(), location.GeoPoint.Latitude.ToString());
                                }
                                else
                                {
                                    qualifier = qualifier.Replace(match.ToString(), "");
                                }
                                break;

                            case "Longitude":
                                if (location.GeoPoint != null)
                                {
                                    qualifier = qualifier.Replace(match.ToString(), location.GeoPoint.Longitude.ToString());
                                }
                                else
                                {
                                    qualifier = qualifier.Replace(match.ToString(), "");
                                }
                                break;

                            case "FormattedAddress":
                                qualifier = qualifier.Replace(match.ToString(), location.FormattedAddress);
                                break;

                            case "FormattedHtmlAddress":
                                qualifier = qualifier.Replace(match.ToString(), location.FormattedHtmlAddress);
                                break;

                            default:
                                qualifier = qualifier.Replace(match.ToString(), "");
                                break;
                            }
                        }

                        return(qualifier);
                    }
                }
            }

            return(string.Empty);
        }