private List<Field> PopulateLocationsFieldData(ModuleInstanceView parent, MEDSEEK.eHealth.ecoSystemSP.Common.Services.ServiceDto service, Field templateField, IDictionary<string, string> parameters) { var locationsFields = new List<Field>(); var request = new ReadServiceByIdRequest() { ServiceId = service.Id }; var response = parent.ProcessRequest<ReadServiceByIdResponse>(request); var seoHelper = new SeoHelper(parent, parameters); foreach (var location in response.Service.Serviceorgunits) { var locationField = (Field)templateField.Clone(); if(string.IsNullOrEmpty(_viewSettings.SeoSchema)) _viewSettings.SeoSchema = seoHelper.BuildSeoSchemaField(location); 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.Zip); field.Value = sb.ToString(); break; case "Phone": field.Value = location.PhoneNumber; break; case "Fax": field.Value = location.Fax; 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.Id; field.MappingProvider = _mappingSettings.MappingProvider.ToString().ToUpperInvariant(); field.MapItem = new MapItem() { Title = location.Name, Latitude = location.Latitude.ToString(), Longitude = location.Longitude.ToString(), LocationAddress = location.MappingAddress, LocationPhoneNum = location.PhoneNumber }; break; } } } locationsFields.Add(locationField); } return locationsFields; }
private DetailView BuildPublicSettingsView(ModuleInstanceView parent, DetailView settingsData, IDictionary<string, string> parameters) { string serviceId; if (parameters.TryGetValue("ServiceId", out serviceId)) { var request = new ReadServiceByIdRequest() { ServiceId = int.Parse(serviceId) }; var service = parent.ProcessRequest<ReadServiceByIdResponse>(request).Service; foreach (var zone in settingsData.StaticPageZones.Select(z => z.Value).Union(settingsData.DynamicPageZones)) { foreach (var column in zone.FieldColumns) { List<Field> locationsFieldList = null; foreach (var field in column.Fields) { if (field.FieldName == "Locations") { locationsFieldList = PopulateLocationsFieldData(parent, service, field, parameters); field.FieldName = "ReplaceMe"; } else { PopulateFieldData(parent, service, field); } } //Replace Locations Complex Field with correct field list if (locationsFieldList != null) { var index = column.Fields.IndexOf(column.Fields.First(f => f.FieldName == "ReplaceMe")); column.Fields.InsertRange(index, locationsFieldList); index = column.Fields.IndexOf(column.Fields.First(f => f.FieldName == "ReplaceMe")); column.Fields.RemoveAt(index); } } } // Add SEO data to the response PopulateSeoData(parent, service, parameters); } return settingsData; }
/// <summary> /// Determines whether the specified <see cref="ServicesSearchRequest" /> is equal to this instance. /// </summary> /// <param name="other">The other.</param> public bool Equals(ReadServiceByIdRequest other) { return base.Equals(other) && ServiceId == other.ServiceId; }