Esempio n. 1
0
        public string BuildSeoSchemaField(ProviderProfileDto provider)
        {
            var sb = new StringBuilder();

            sb.Append("<div class='SeoSchema' itemscope itemtype='http://schema.org/Person'>");

            //Name
            sb.AppendFormat("<meta itemprop='name' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.FullName));

            //Job Title (Specialty)
            sb.AppendFormat("<meta itemprop='jobTitle' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.SpecialtiesDescription));

            //Address
            sb.Append("<div itemprop='address' itemscope itemtype='http://schema.org/PostalAddress'>");
            sb.AppendFormat("<meta itemprop='streetAddress' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.PrimaryOrgUnitAddress1));
            sb.AppendFormat("<meta itemprop='addressLocality' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.PrimaryOrgUnitCity));
            sb.AppendFormat("<meta itemprop='addressRegion' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.PrimaryOrgUnitStateAbbreviated));
            sb.AppendFormat("<meta itemprop='postalCode' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.PrimaryOrgUnitPostalCode));
            sb.Append("</div>");

            //Phone
            sb.AppendFormat("<meta itemprop='telephone' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.Phone));

            //Email
            sb.AppendFormat("<meta itemprop='email' content='{0}' />", CommonUtils.MakeXmlSafeValue(provider.Email));

            sb.Append("</div>");

            return sb.ToString();
        }
Esempio n. 2
0
        public string BuildDetailViewTitleFromFormula(ProviderProfileDto provider)
        {
            var searchSettings = DataProxy.ProcessRequest<ReadSearchSettingsResponse>(new ReadSearchSettingsRequest()).Settings;
            var formula = searchSettings.ProviderDetailPageTitleFormula;

            var title = formula
                .Replace("{" + ProviderDetailToken.ProviderName.ToString() + "}", provider.FullName)
                .Replace("{" + ProviderDetailToken.PrimarySpecialty.ToString() + "}", provider.PrimarySpecialtyName)
                .Replace("{" + ProviderDetailToken.AllSpecialties.ToString() + "}", provider.SpecialtiesDescription)
                .Replace("{" + ProviderDetailToken.PrimaryLocationName.ToString() + "}", provider.PrimaryOrgUnitName)
                .Replace("{" + ProviderDetailToken.PrimaryLocationCity.ToString() + "}", provider.PrimaryOrgUnitCity)
                .Replace("{" + ProviderDetailToken.PrimaryLocationState.ToString() + "}", provider.PrimaryOrgUnitState)
                .Replace("{" + ProviderDetailToken.PrimaryLocationStateAbbrev.ToString() + "}", provider.PrimaryOrgUnitStateAbbreviated);

            return ApplyCommonTitleFormatting(title, searchSettings.SeoTitleReplacementValues);
        }
        private void PopulateSeoData(ModuleInstanceView parent, ProviderProfileDto provider, IDictionary<string, string> parameters)
        {
            var seoHelper = new SeoHelper(parent, parameters);

            //SEO Data
            var seoData = seoHelper.PopulateDetailViewSeoData(_viewSettings, provider);
            parent.ResponseParameters.Add(CommonParameters.SeoData, seoData);

            //SEO Schema
            var seoSchema = seoHelper.BuildSeoSchemaField(provider);

            if (!string.IsNullOrEmpty(seoSchema))
                parent.ResponseParameters.Add(CommonParameters.SeoSchema, seoSchema);
        }
        private List<Field> PopulateLocationsFieldData(ModuleInstanceView parent, ProviderProfileDto provider, Field templateField)
        {
            var locationsFields = new List<Field>();
            var request = new ListProviderOrgUnitsRequest() { ProviderId = provider.Id };
            var response = parent.ProcessRequest<ListProviderOrgUnitsResponse>(request);

            foreach (var location in response.OrgUnits)
            {
                var locationField = (Field)templateField.Clone();

                foreach (var column in locationField.FieldColumns)
                {
                    foreach (var field in column.Fields)
                    {
                        switch (field.FieldName)
                        {
                            case "LocationName":
                                field.Value = location.Name;
                                break;
                            case "LocationAddress":
                                var sb = new StringBuilder();
                                sb.Append(location.Address1 + "<br />");
                                if (!string.IsNullOrEmpty(location.Address2))
                                    sb.Append(location.Address2 + "<br />");
                                sb.AppendFormat("{0}, {1} {2}", location.City, location.State, location.PostalCode);
                                field.Value = sb.ToString();
                                break;
                            case "Phone":
                                field.Value = location.DisplayPhone;
                                break;
                            case "Fax":
                                field.Value = location.DisplayFax;
                                break;
                            case "AcceptingNewPatients":
                                if (location.IsAcceptingNewPatients)
                                    field.Value = field.TrueValue;
                                else
                                    field.Value = field.FalseValue;
                                break;
                            case "Insurances":
                                field.Values.Clear();
                                foreach (var insurance in location.Insurance)
                                    field.Values.Add(insurance.InsuranceName);
                                break;
                            case "Services":
                                field.Values.Clear();
                                foreach (var service in location.Service)
                                    field.Values.Add(service.ServiceName);
                                break;
                            case "Hours":
                                field.Values.Clear();
                                foreach (var schedule in location.Schedule)
                                    field.Values.Add(string.Format("{0} {1}-{2}", schedule.Day, schedule.Open, schedule.Close));
                                break;
                            case "Map":
                                field.Value = "mapDiv_" + location.OrgUnitId;
                                field.MappingProvider = _mappingSettings.MappingProvider.ToString().ToUpperInvariant();
                                field.MapItem = new MapItem()
                                {
                                    Title = location.Name,
                                    Latitude = location.Latitude.HasValue ? location.Latitude.ToString() : string.Empty,
                                    Longitude = location.Longitude.HasValue ? location.Longitude.ToString() : string.Empty,
                                    LocationAddress = string.Format("{0}, {1}, {2} {3}", location.Address1, location.City, location.State, location.PostalCode),
                                    LocationPhoneNum = location.DisplayPhone
                                };
                                break;
                            case "AppointmentRequestLink":
                                if (location.AllowAppointmentRequests)
                                {
                                    field.Value = ProviderUtils.GetAppointmentRequestLinkText(field);
                                    field.URL = ProviderUtils.GetAppointmentRequestLinkUrl(field, provider.Id, location.Id);
                                }
                                else
                                {
                                    field.URL = string.Empty;
                                    field.Value = string.Empty;
                                }
                                break;
                        }
                    }
                }

                locationsFields.Add(locationField);
            }

            return locationsFields;
        }
        private void PopulateFieldData(ModuleInstanceView parent, ProviderProfileDto provider, Field field)
        {
            //Handle Dynamic Column Data
            if (field.FieldName.StartsWith(Constants.DynamicColumnPrefix))
            {
                var dynamicColumnFieldName = field.FieldName.Replace(Constants.DynamicColumnPrefix, string.Empty);
                var dynamicColumn = DynamicColumnData.FirstOrDefault(c => c.FieldName == dynamicColumnFieldName);
                if (dynamicColumn != null && DynamicColumnDefinitions.Any(c => c.Name == dynamicColumnFieldName))
                    field.Value = dynamicColumn.FieldValue;
                else
                    field.Value = string.Empty;
            }
            //Handle Standard Column Data
            else
            {
                switch (field.FieldName)
                {
                    case "Gender":
                        field.Value = provider.Gender;
                        break;
                    case "ProviderName":
                        field.Value = parent.CalculateProviderFullName(provider.NamePrefix, provider.FirstName, provider.MiddleName, provider.LastName, provider.NameSuffix, provider.AdditionalSuffix, field);
                        break;
                    case "Image":
                        if (!string.IsNullOrEmpty(provider.ImageUrl))
                            field.URL = provider.ImageUrl;
                        else
                            field.URL = parent.DefaultProviderImageUrl;

                        field.Value = parent.CalculateProviderFullName(provider.NamePrefix, provider.FirstName, provider.MiddleName, provider.LastName, provider.NameSuffix, provider.AdditionalSuffix, field);
                        break;
                    case "DateOfBirth":
                        field.Value = provider.DateOfBirth.HasValue ? provider.DateOfBirth.Value.ToString("M/d/yyyy") : string.Empty;
                        break;
                    case "InPracticeSince":
                        field.Value = provider.InPracticeSince.HasValue ? provider.DateOfBirth.Value.ToString("M/d/yyyy") : string.Empty;
                        break;
                    case "Age":
                        field.Value = provider.Age;
                        break;
                    case "Experience":
                        field.Value = provider.Experience;
                        break;
                    case "PrimarySpecialty":
                        field.Value = provider.PrimarySpecialtyName;
                        break;
                    case "PrimaryPhone":
                        field.Value = provider.Phone;
                        break;
                    case "PrimaryFax":
                        field.Value = provider.Fax;
                        break;
                    case "PrimaryEmail":
                        field.Value = provider.Email;
                        break;
                    case "PrimaryLocationName":
                        field.Value = provider.PrimaryOrgUnitName;
                        break;
                    case "PrimaryLocationCompleteAddress":
                        field.Value = string.Format("{0}<br />{1}, {2} {3}",
                            !string.IsNullOrEmpty(provider.PrimaryOrgUnitAddress2) ? provider.PrimaryOrgUnitAddress1 + "<br />" + provider.PrimaryOrgUnitAddress2 : provider.PrimaryOrgUnitAddress1,
                            provider.PrimaryOrgUnitCity,
                            provider.PrimaryOrgUnitStateAbbreviated,
                            provider.PrimaryOrgUnitPostalCode);
                        break;
                    case "ProviderTypes":
                        var typesRequest = new ListProviderProviderTypeRequest() { ProviderId = provider.Id };
                        var types = parent.ProcessRequest<ListProviderProviderTypeResponse>(typesRequest).ProviderTypes;
                        field.Values = types.Select(t => t.ProviderTypeName).Cast<object>().ToList();
                        break;
                    case "ProviderLanguages":
                        var languagesRequest = new ListProviderLanguagesRequest() { ProviderId = provider.Id };
                        var languages = parent.ProcessRequest<ListProviderLanguagesResponse>(languagesRequest).Languages;
                        field.Values = languages.Select(l => l.LanguageName).Cast<object>().ToList();
                        break;
                    case "ClinicalInterests":
                        var interestsRequest = new ListProviderClinicalInterestRequest() { ProviderId = provider.Id };
                        var interests = parent.ProcessRequest<ListProviderClinicalInterestResponse>(interestsRequest).ClinicalInterests;
                        field.Values = interests.Select(l => l.ClinicalInterestName).Cast<object>().ToList();
                        break;
                    case "Specialties":
                        var specialtiesRequest = new ListProviderSpecialtiesRequest() { ProviderId = provider.Id };
                        var specialties = parent.ProcessRequest<ListProviderSpecialtiesResponse>(specialtiesRequest).ProviderSpecialties;
                        field.Values = specialties.Select(l => l.SpecialtyName).Cast<object>().ToList();
                        break;
                    case "AboutMe":
                        field.Value = provider.AboutMe;
                        break;
                    case "PhilosophyOfCare":
                        field.Value = provider.PhilosophyOfCare;
                        break;
                    case "AdditionalInfo":
                        field.Value = provider.AdditionalInformation;
                        break;
                    case "Website":
                        field.Value = provider.Website;
                        break;
                    case "Videos":
                        field.Value = provider.VideoContent;
                        break;
                    case "Custom1":
                        field.Value = provider.Custom1;
                        break;
                    case "Custom2":
                        field.Value = provider.Custom2;
                        break;
                    case "Custom3":
                        field.Value = provider.Custom3;
                        break;
                    case "ConditionalField":
                        if (string.IsNullOrEmpty(field.ConditionalSettings.ConditionalField) ||
                            string.IsNullOrEmpty(field.ConditionalSettings.ConditionalValue) ||
                            string.IsNullOrEmpty(field.ConditionalSettings.ConditionOperation))
                            return;

                        var conditionalField = _viewSettings.AvailableFields.First(f => f.FieldName == field.ConditionalSettings.ConditionalField);
                        PopulateFieldData(parent, provider, conditionalField);

                        Field fieldToShow = null;
                        if (!string.IsNullOrEmpty(field.ConditionalSettings.FieldToShow))
                        {
                            fieldToShow = _viewSettings.AvailableFields.First(f => f.FieldName == field.ConditionalSettings.FieldToShow);
                            PopulateFieldData(parent, provider, fieldToShow);
                        }

                        CommonUtils.PopulateConditionalFieldValue(field, conditionalField, fieldToShow);
                        break;
                    case "AppointmentRequestLink":
                        if (provider.PrimaryOrgUnitAllowAppointmentRequests)
                        {
                            field.Value = ProviderUtils.GetAppointmentRequestLinkText(field);
                            field.URL = ProviderUtils.GetAppointmentRequestLinkUrl(field, provider.Id, provider.PrimaryOrgUnitId);
                        }
                        else
                        {
                            field.URL = string.Empty;
                            field.Value = string.Empty;
                        }
                        break;
                }
            }
        }
        private List<Field> PopulateEducationsFieldData(ModuleInstanceView parent, ProviderProfileDto provider, Field templateField)
        {
            var educationFields = new List<Field>();
            var request = new ListProviderEducationRequest() { ProviderId = provider.Id };
            var response = parent.ProcessRequest<ListProviderEducationResponse>(request);

            foreach (var education in response.Records)
            {
                var locationField = (Field)templateField.Clone();

                foreach (var column in locationField.FieldColumns)
                {
                    foreach (var field in column.Fields)
                    {
                        switch (field.FieldName)
                        {
                            case "EducationType":
                                field.Value = education.EducationTypeName;
                                break;
                            case "InstitutionName":
                                field.Value = education.InstitutionName;
                                break;
                            case "IsCompleted":
                                field.Value = education.IsCompleted;
                                break;
                            case "YearCompleted":
                                field.Value = education.YearCompleted;
                                break;
                        }
                    }
                }

                educationFields.Add(locationField);
            }

            return educationFields;
        }
Esempio n. 7
0
 public string PopulateDetailViewSeoData(DetailView viewSettings, ProviderProfileDto provider)
 {
     return PopulateDetailViewSeoData(viewSettings, provider.SeoPageTitle, BuildDetailViewTitleFromFormula(provider), provider.SeoPageDescription, provider.AboutMe, provider.SeoH1Tag, provider.FullName, provider.SeoPrimaryKeyword, provider.SeoSecondaryKeyword, provider.SeoCanonicalUrl);
 }