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(); }
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; }
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); }