public string GetModelData(ModuleInstanceView parent, string settingsData, IDictionary<string, string> parameters, bool isConfigView) { SearchView viewSettings = null; if (string.IsNullOrEmpty(settingsData)) viewSettings = new SearchView(); else viewSettings = CommonUtils.JsonDeserialize<SearchView>(settingsData); viewSettings.EnsureStandardSettings(); if (isConfigView) viewSettings = BuildAdminSettingsView(parent, viewSettings); else { if (parameters.ContainsKey("Command")) { if (parameters["Command"] == "LoadDropdown") return LoadDropdownValues(parent, viewSettings, parameters); } viewSettings = BuildPublicSettingsView(parent, viewSettings, parameters); viewSettings.AvailableFields.Clear(); } return CommonUtils.JsonSerializeMinimum(viewSettings); }
public string GetModelData(ModuleInstanceView parent, string settingsData, IDictionary<string,string> parameters, bool isConfigView) { // Create Or Deserialize View Data if (string.IsNullOrEmpty(settingsData)) _viewSettings = new SearchView(); else _viewSettings = CommonUtils.JsonDeserialize<SearchView>(settingsData); // Load settings _viewSettings.EnsureStandardSettings(); // Handle specific commands if (parameters.ContainsKey("Command")) { if (parameters["Command"] == "LoadDropdown") return LoadDropdownValues(parent, parameters); } // Build Admin or Public View if (isConfigView) _viewSettings = BuildAdminSettingsView(parent, _viewSettings); else { _viewSettings = BuildPublicSettingsView(parent, _viewSettings, parameters); _viewSettings.AvailableFields.Clear(); } return CommonUtils.JsonSerializeMinimum(_viewSettings); }
private SearchView BuildAdminSettingsView(ModuleInstanceView parent, SearchView settingsData) { settingsData.AvailableFields.Clear(); settingsData.AvailableFields.Add(new Field("Provider", "Provider Name", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Provider" }); settingsData.AvailableFields.Add(new Field("Keyword", "Keyword", FieldTypes.TextBox, null) { HintText = "Enter Keyword" }); settingsData.AvailableFields.Add(new Field("Gender", "Gender", FieldTypes.Dropdown, null) { HintText = "Select Gender" }); settingsData.AvailableFields.Add(new Field("Specialty", "Specialty", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Specialty" }); settingsData.AvailableFields.Add(new Field("Condition", "Condition", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Condition" }); settingsData.AvailableFields.Add(new Field("Insurance", "Insurance", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Insurance" }); settingsData.AvailableFields.Add(new Field("Language", "Language", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Language" }); settingsData.AvailableFields.Add(new Field("Location", "Location", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Location" }); settingsData.AvailableFields.Add(new Field("OnlyAcceptingNewPatients", "Accepting New Patients", FieldTypes.Checkbox, null)); settingsData.AvailableFields.Add(new Field("City", "City", FieldTypes.LazyLoadDropdown, null) { HintText = "Select City" }); settingsData.AvailableFields.Add(new Field("State", "State", FieldTypes.LazyLoadDropdown, null) { HintText = "Select State" }); settingsData.AvailableFields.Add(new Field("ClinicalInterest", "Clinical Interest", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Interest" }); settingsData.AvailableFields.Add(new Field("ProviderType", "Provider Type", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Type" }); settingsData.AvailableFields.Add(new Field("PostalCode", "ZIP Code", FieldTypes.TextBox, null) { HintText = "Enter ZIP Code" }); var radiusDistanceField = new Field("RadiusDistance", "Search Within", FieldTypes.Dropdown, ""); radiusDistanceField.Options.Add(new KeyValuePair<object, object>(null, "Any")); radiusDistanceField.Options.AddRange(parent.SearchSettings.SearchRadiusOptions.Select(s => new KeyValuePair<object, object>(s, s)).ToList()); settingsData.AvailableFields.Add(radiusDistanceField); settingsData.AvailableFields = settingsData.AvailableFields.OrderBy(f => f.DisplayName).ToList(); // Add admin-only settings LocationContextHelper.AddLocationSettingsGroup(parent, settingsData); return settingsData; }
private SearchView BuildAdminSettingsView(ModuleInstanceView parent, SearchView settingsData) { settingsData.AvailableFields.Clear(); settingsData.AvailableFields.Add(new Field("Keyword", "Keyword", FieldTypes.TextBox, null) { HintText = "Enter Keyword" }); settingsData.AvailableFields.Add(new Field("Event", "Event Title", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Event" }); settingsData.AvailableFields.Add(new Field("Location", "Location", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Location" }); settingsData.AvailableFields.Add(new Field("EventType", "Type", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Type" }); settingsData.AvailableFields.Add(new Field("EventTopic", "Topic", FieldTypes.LazyLoadDropdown, null) { HintText = "Select Topic" }); settingsData.AvailableFields.Add(new Field("StartDate", "Start Date", FieldTypes.DatePicker, null) { HintText = "Select Start Date" }); settingsData.AvailableFields.Add(new Field("EndDate", "End Date", FieldTypes.DatePicker, null) { HintText = "Select End Date" }); settingsData.AvailableFields.Add(new Field("PostalCode", "ZIP Code", FieldTypes.TextBox, null) { HintText = "Enter ZIP Code" }); var radiusDistanceField = new Field("RadiusDistance", "Search Within", FieldTypes.Dropdown, ""); radiusDistanceField.Options.Add(new KeyValuePair<object, object>(null, "Any")); radiusDistanceField.Options.AddRange(_searchSettings.SearchRadiusOptions.Select(s => new KeyValuePair<object, object>(s, s)).ToList()); settingsData.AvailableFields.Add(radiusDistanceField); settingsData.AvailableFields = settingsData.AvailableFields.OrderBy(f => f.DisplayName).ToList(); // Add admin-only settings LocationContextHelper.AddLocationSettingsGroup(parent, settingsData); return settingsData; }
private SearchView BuildAdminSettingsView(ModuleInstanceView parent, SearchView settingsData) { settingsData.AvailableFields.Clear(); settingsData.AvailableFields.Add(new Field("Keyword", "Keyword", FieldTypes.TextBox, null) { HintText = "Enter Keyword" }); settingsData.AvailableFields.Add(new Field("City", "City", FieldTypes.LazyLoadDropdown, null) { HintText = "Enter/Select a City", PublicLabel = "City with available services" }); settingsData.AvailableFields.Add(new Field("State", "State", FieldTypes.LazyLoadDropdown, null) { HintText = "Enter/Select a State", PublicLabel = "State with available services" }); settingsData.AvailableFields.Add(new Field("PostalCode", "ZIP Code", FieldTypes.TextBox, null) { HintText = "Enter ZIP Code" }); settingsData.AvailableFields = settingsData.AvailableFields.OrderBy(f => f.DisplayName).ToList(); // Add admin-only settings LocationContextHelper.AddLocationSettingsGroup(parent, settingsData); return settingsData; }
private SearchView BuildPublicSettingsView(ModuleInstanceView parent, SearchView settingsData, IDictionary<string, string> parameters) { // Establish correct search results page URL settingsData.UpdateSettingValue("SearchResultsPageUrl", LocationUtils.CalculateSearchResultsUrl(settingsData, parent.SearchSettings.SearchResultsPageUrl)); foreach (var zone in settingsData.StaticPageZones.Select(z => z.Value).Union(settingsData.DynamicPageZones)) { foreach (var column in zone.FieldColumns) { foreach (var field in column.Fields) { if (field.FieldName == "RadiusDistance") { field.Value = ""; field.Options.Clear(); field.Options.Add(new KeyValuePair<object, object>("", "Any")); field.Options.AddRange(parent.SearchSettings.SearchRadiusOptions.Select(s => new KeyValuePair<object, object>(s, s)).ToList()); } } } } return settingsData; }
private string LoadDropdownValues(ModuleInstanceView parent, SearchView viewSettings, IDictionary<string, string> parameters) { List<DropdownOption> records = new List<DropdownOption>(); // Get location context settings var locationId = LocationContextHelper.ResolveLocationContext(parent, viewSettings, parameters).Id; var descendantOption = LocationContextHelper.ResolveLocationDescendantOption(viewSettings, parameters); switch (parameters["FieldName"]) { case "Location": var locationNameRequest = new SearchOrgUnitNamesRequest() { OrgUnitId = locationId, DescendantOption = descendantOption, OrgUnitNameCriteria = parameters["Search"] }; var locationNameResponse = parent.ProcessRequest<SearchOrgUnitNamesResponse>(locationNameRequest); foreach (var location in locationNameResponse.Results) { records.Add(new DropdownOption { DisplayName = location.Name, Id = location.Id, }); } break; case "LocationType": var typeNameRequest = new SearchOrgUnitNamesRequest() { OnlyRetrieveOrgUnitTypes = true, OrgUnitId = locationId, DescendantOption = descendantOption, SpecificOrgUnitTypeName = parameters["Search"], AllowedOrgUnitTypeIds = new List<int>() }; var typeNameResponse = parent.ProcessRequest<SearchOrgUnitNamesResponse>(typeNameRequest); foreach (var type in typeNameResponse.OrgUnitTypes) { records.Add(new DropdownOption { DisplayName = type.Name, Id = type.Id }); } break; } return CommonUtils.JsonSerialize(records); }
private SearchView BuildPublicSettingsView(ModuleInstanceView parent, SearchView settingsData, IDictionary<string, string> parameters) { // Establish correct search results page URL settingsData.UpdateSettingValue("SearchResultsPageUrl", ProviderUtils.CalculateSearchResultsUrl(settingsData, parent.SearchSettings.SearchResultsPageUrl)); // Handle pre-filled drop-down controls foreach (var zone in settingsData.StaticPageZones.Select(z => z.Value).Union(settingsData.DynamicPageZones)) { foreach (var column in zone.FieldColumns) { foreach (var field in column.Fields) { if (field.FieldName == "RadiusDistance") { field.Value = ""; field.Options.Clear(); field.Options.Add(new KeyValuePair<object, object>("", "Any")); field.Options.AddRange(parent.SearchSettings.SearchRadiusOptions.Select(s => new KeyValuePair<object, object>(s, s)).ToList()); } if (field.FieldName == "Gender") { field.Value = ""; field.Options.Clear(); field.Options.Add(new KeyValuePair<object, object>("", "Any")); var genderNameRequest = new ListGendersRequest() { IsEnabled = true }; var genderNameResponse = parent.ProcessRequest<ListGendersResponse>(genderNameRequest); foreach (var gender in genderNameResponse.Genders) field.Options.Add(new KeyValuePair<object, object>(gender.Id, gender.Name)); } PreloadQueryValuesFromQueryString(field, parameters); } } } return settingsData; }
private string LoadDropdownValues(ModuleInstanceView parent, SearchView viewSettings, IDictionary<string, string> parameters) { var records = new List<DropdownOption>(); // Get location context settings var locationId = LocationContextHelper.ResolveLocationContext(parent, viewSettings, parameters).Id; var descendantOption = LocationContextHelper.ResolveLocationDescendantOption(viewSettings, parameters); var isSearchStringPresent = parameters.ContainsKey("Search"); var searchString = isSearchStringPresent ? parameters["Search"] : string.Empty; switch (parameters["FieldName"]) { case "City": GetCityDropdownValues(parent, records, locationId, descendantOption, searchString); break; case "State": GetStateDropdownValues(parent, records, locationId, descendantOption, searchString); break; } return CommonUtils.JsonSerialize(records); }
private SearchView BuildPublicSettingsView(ModuleInstanceView parent, SearchView settingsData, IDictionary<string, string> parameters) { // Establish correct search results page URL settingsData.UpdateSettingValue("SearchResultsPageUrl", LocationUtils.CalculateSearchResultsUrl(settingsData, parent.SearchSettings.SearchResultsPageUrl)); return settingsData; }
private string LoadDropdownValues(ModuleInstanceView parent, SearchView viewSettings, IDictionary<string, string> parameters) { List<DropdownOption> records = new List<DropdownOption>(); // Get location context settings var locationId = LocationContextHelper.ResolveLocationContext(parent, viewSettings, parameters).Id; var descendantOption = LocationContextHelper.ResolveLocationDescendantOption(viewSettings, parameters); switch (parameters["FieldName"]) { case "Event": var eventTitleRequest = new SearchEventsUniqueTitleRequest() { Title = parameters["Search"], OrganizationalUnitId = locationId, DescendantOption = descendantOption }; var eventTitleResponse = parent.ProcessRequest<SearchEventsUniqueTitleResponse>(eventTitleRequest); foreach (var eventTitle in eventTitleResponse.Results) { records.Add(new DropdownOption { DisplayName = eventTitle, Id = eventTitle }); } break; case "Location": var locationRequest = new SearchEventLocationsRequest() { OrganizationalUnitName = parameters["Search"], OrganizationalUnitId = locationId, DescendantOption = descendantOption }; var locationResponse = parent.ProcessRequest<SearchEventLocationsResponse>(locationRequest); foreach (var location in locationResponse.OrgUnitInfo) { records.Add(new DropdownOption { DisplayName = location.Value, Id = location.Key }); } break; case "EventType": var eventTypeRequest = new ListFilteredEventTypesRequest() { EnabledOnly = true, OrganizationalUnitId = locationId, DescendantOption = descendantOption }; var eventTypeResponse = parent.ProcessRequest<ListFilteredEventTypesResponse>(eventTypeRequest); foreach (var type in eventTypeResponse.EventTypes.Where(t => t.Name.ToLowerInvariant().StartsWith(parameters["Search"].ToLowerInvariant()))) { records.Add(new DropdownOption { DisplayName = type.Name, Id = type.Id }); } break; case "EventTopic": var eventTopicsRequest = new ListFilteredEventTopicsRequest() { EnabledOnly = true, OrganizationalUnitId = locationId, DescendantOption = descendantOption }; var eventTopicsResponse = parent.ProcessRequest<ListFilteredEventTopicsResponse>(eventTopicsRequest); foreach (var topic in eventTopicsResponse.EventTopics.Where(t => t.Name.ToLowerInvariant().StartsWith(parameters["Search"].ToLowerInvariant()))) { records.Add(new DropdownOption { DisplayName = topic.Name, Id = topic.Id }); } break; } return CommonUtils.JsonSerialize(records); }