public TRes JobFilters <TReq, TRes>(TReq request) where TReq : class, IGetJobFiltersRequest where TRes : class, IGetJobFiltersResponse { JXTNext_GetJobFiltersRequest optionsRequest = request as JXTNext_GetJobFiltersRequest; ConnectorGetRequest connectorRequest = new ConnectorGetRequest(HTTP_Requests_MaxWaitTime) { HeaderValues = HTTP_Request_HeaderValues, TargetUri = new Uri(CONFIG_DataAccessTarget + $"/api/options/JobFilters") }; ConnectorResponse response = JXTNext.Common.API.Connector.Get(connectorRequest); //parse the response bool actionSuccessful = response.Success; if (actionSuccessful) { dynamic responseObj = JObject.Parse(response.Response); return(new JXTNext_GetJobFiltersResponse { Success = true, Filters = ConvertToData(responseObj) } as TRes); } else { return new JXTNext_GetJobFiltersResponse { Success = false, Messages = new List <string> { response.Response } } } as TRes;
public ActionResult Create(CreateAsJobAlertFilterModel filterModel) { TempData["StatusMessage"] = null; TempData["StatusCode"] = JobAlertStatus.SUCCESS; dynamic dynamicFilterResponse = new ExpandoObject(); JXTNext_GetJobFiltersRequest request = new JXTNext_GetJobFiltersRequest(); IGetJobFiltersResponse filtersResponse = _OConnector.JobFilters <JXTNext_GetJobFiltersRequest, JXTNext_GetJobFiltersResponse>(request); //if (filtersResponse != null && filtersResponse.Filters != null // && filtersResponse.Filters.Data != null) // dynamicFilterResponse = filtersResponse.Filters.Data as dynamic; List <JobFilterRoot> fitersData = null; if (filtersResponse != null && filtersResponse.Filters != null && filtersResponse.Filters.Data != null) { fitersData = filtersResponse.Filters.Data; } var serializeFilterData = JsonConvert.SerializeObject(fitersData); var filtersVMList = JsonConvert.DeserializeObject <List <JobAlertEditFilterRootItem> >(serializeFilterData); if (filterModel.Filters != null && filterModel.Filters.Count > 0) { foreach (var rootItem in filterModel.Filters) { if (rootItem != null) { if (filtersVMList != null && filtersVMList.Count > 0) { foreach (var filterVMRootItem in filtersVMList) { if (filterVMRootItem.Name == rootItem.RootId) { if (filterVMRootItem.Filters != null && filterVMRootItem.Filters.Count > 0) { foreach (var filterItem in filterVMRootItem.Filters) { // Here we are coming the ids as parent child relationship and we need // Only the current id, so remove underscore and get the exact id RemoveUnderScore(rootItem.Values); MergeFilters(filterItem, rootItem.Values); } } } } } } } } dynamicFilterResponse.Filters = filtersVMList as dynamic; ViewBag.IsMemberUser = SitefinityHelper.IsUserLoggedIn("Member"); dynamicFilterResponse.Keywords = filterModel.Keywords; dynamicFilterResponse.Salary = filterModel.Salary; return(View("Create", dynamicFilterResponse)); }
public ActionResult Edit(int id) { TempData["StatusMessage"] = null; TempData["StatusCode"] = JobAlertStatus.SUCCESS; SearchModel jobAlertDetails = _jobAlertService.GetMemeberJobAlert(id); var alert = jobAlertDetails.jobAlertViewModelData; JXTNext_GetJobFiltersRequest request = new JXTNext_GetJobFiltersRequest(); IGetJobFiltersResponse filtersResponse = _OConnector.JobFilters <JXTNext_GetJobFiltersRequest, JXTNext_GetJobFiltersResponse>(request); List <JobFilterRoot> fitersData = null; if (filtersResponse != null && filtersResponse.Filters != null && filtersResponse.Filters.Data != null) { fitersData = filtersResponse.Filters.Data; } var serializeFilterData = JsonConvert.SerializeObject(fitersData); var filtersVMList = JsonConvert.DeserializeObject <List <JobAlertEditFilterRootItem> >(serializeFilterData); if (alert != null && alert.Filters != null && alert.Filters.Count > 0) { foreach (var rootItem in alert.Filters) { if (rootItem != null) { if (filtersVMList != null && filtersVMList.Count > 0) { foreach (var filterVMRootItem in filtersVMList) { if (filterVMRootItem.Name == rootItem.RootId) { if (filterVMRootItem.Filters != null && filterVMRootItem.Filters.Count > 0) { foreach (var filterItem in filterVMRootItem.Filters) { MergeFilters(filterItem, rootItem.Values); } } } } } } } } JobAlertEditViewModel editVM = new JobAlertEditViewModel() { Data = filtersVMList }; editVM.Id = id; editVM.Name = alert.Name; editVM.Keywords = alert.Keywords; editVM.EmailAlerts = alert.EmailAlerts; editVM.Salary = alert.Salary; return(View("Edit", editVM)); }
private KeyValuePair <string, string> GetLocationGuid(string location) { JXTNext_GetJobFiltersRequest request = new JXTNext_GetJobFiltersRequest(); IGetJobFiltersResponse filtersResponse = _OConnector.JobFilters <JXTNext_GetJobFiltersRequest, JXTNext_GetJobFiltersResponse>(request); List <JobFilterRoot> fitersData = null; if (filtersResponse != null && filtersResponse.Filters != null && filtersResponse.Filters.Data != null) { fitersData = filtersResponse.Filters.Data; } var serializeFilterData = JsonConvert.SerializeObject(fitersData); var filtersVMList = JsonConvert.DeserializeObject <List <JobAlertEditFilterRootItem> >(serializeFilterData); bool found = false; string rootId = string.Empty; string guid = string.Empty; if (filtersVMList != null && filtersVMList.Count > 0) { foreach (var filterVMRootItem in filtersVMList) { if (filterVMRootItem.Filters != null && filterVMRootItem.Name == "CountryLocationArea" && filterVMRootItem.Filters.Count > 0) { foreach (var filterItem in filterVMRootItem.Filters) { filterItem.Filters?.ForEach(x => { if (x.Label.ToLower() == location.ToLower()) { found = true; guid = x.ID; rootId = filterItem.ID; } }); } } } } KeyValuePair <string, string> key = new KeyValuePair <string, string>(); if (found) { key = new KeyValuePair <string, string>(rootId, guid); } return(key); }
private List <JobAlertEditFilterRootItem> GetJobFilterData() { JXTNext_GetJobFiltersRequest request = new JXTNext_GetJobFiltersRequest(); IGetJobFiltersResponse filtersResponse = _OConnector.JobFilters <JXTNext_GetJobFiltersRequest, JXTNext_GetJobFiltersResponse>(request); List <JobFilterRoot> fitersData = null; if (filtersResponse != null && filtersResponse.Filters != null && filtersResponse.Filters.Data != null) { fitersData = filtersResponse.Filters.Data; } var serializeFilterData = JsonConvert.SerializeObject(fitersData); var filtersVMList = JsonConvert.DeserializeObject <List <JobAlertEditFilterRootItem> >(serializeFilterData); return(filtersVMList); }
// GET: JobFilters public ActionResult Index([ModelBinder(typeof(JobSearchResultsFilterBinder))] JobSearchResultsFilterModel filterModel, string jobBoardPageTitle, List <JobFilterRoot> searchResultsFilters) { dynamic dynamicFilterResponse = null; JXTNext_GetJobFiltersRequest request = new JXTNext_GetJobFiltersRequest(); IGetJobFiltersResponse filtersResponse = _OConnector.JobFilters <JXTNext_GetJobFiltersRequest, JXTNext_GetJobFiltersResponse>(request); List <JobFilterRoot> filtersVMList = null; if (filtersResponse != null && filtersResponse.Filters != null && filtersResponse.Filters.Data != null) { filtersVMList = filtersResponse.Filters.Data; dynamicFilterResponse = filtersResponse.Filters.Data as dynamic; } var filtersSelected = filterModel.Filters; if (filtersSelected != null && filtersSelected.Count > 0) { ProcessFilters(filtersSelected, filtersVMList); } ViewBag.FilterModel = JsonConvert.SerializeObject(filterModel); ViewBag.Keywords = filterModel.Keywords; ViewBag.Salary = filterModel.Salary; if (searchResultsFilters != null && searchResultsFilters.Count > 0) { JobFiltersLogics.ProcessFiltersCount(searchResultsFilters, filtersVMList); } else if (JobSearchResultsFilterModel.HasFilters(filterModel)) { JobFiltersLogics.ProcessFiltersCount(GetJobSearchResultsFilters(filterModel), filtersVMList); } var serializedJobSearchParams = this.SerializedJobSearchParams; var prefixIdText = this.PrefixIdText; var displayCompanyName = this.DisplayCompanyName; var templateName = this.TemplateName; // When we are calling it from the job search results controller if (!jobBoardPageTitle.IsNullOrEmpty()) { // Getting the widget configuration settings var widgetSettings = JobFiltersLogics.GetWidgetConfigSettings(jobBoardPageTitle, typeof(JobFiltersController).FullName); if (widgetSettings != null) { serializedJobSearchParams = widgetSettings.Values["SerializedJobSearchParams"]; prefixIdText = widgetSettings.Values["PrefixIdText"]; displayCompanyName = widgetSettings.Values["DisplayCompanyName"]; templateName = widgetSettings.Values["TemplateName"]; } } var jobFilterComponents = serializedJobSearchParams == null ? null : JsonConvert.DeserializeObject <List <JobSearchModel> >(serializedJobSearchParams); if (jobFilterComponents != null || displayCompanyName) { if (jobFilterComponents != null) { foreach (JobSearchModel item in jobFilterComponents) { FilterData(item.Filters); item.Filters = item.Filters.Where(d => d.Show == true || d.Filters?.Count > 0).ToList(); } } var selectedConfigFilters = GetSelecctedFiltersFromConfig(filtersVMList, jobFilterComponents, displayCompanyName); AppendParentIds(selectedConfigFilters); dynamicFilterResponse = selectedConfigFilters as dynamic; } else { AppendParentIds(filtersVMList); dynamicFilterResponse = filtersVMList as dynamic; } ViewBag.PrefixIdsText = prefixIdText == null ? "" : prefixIdText; // Why we returning via path? // we are going to call the same index action from jobsearchresults controller as well. So from there to identify the correct // view, we need to user the virtual path // Telerik.Sitefinity.Frontend.FrontendService service registers a virtual path for each widget assembly and for Telerik.Sitefinity.Frontend // The contents of a virtual file inside the Frontend-Assembly path can come from the file system at location ~/[Path] When not found there, // it falls back to retrieving the contents of an embedded resource placed on the same path, inside the specified assembly. // For example, ~/Frontend-Assembly/Telerik.Sitefinity.Frontend/Mvc/Scripts/Angular/angular.min.js // https://www.progress.com/documentation/sitefinity-cms/priorities-for-resolving-views-mvc return(View("~/Frontend-Assembly/Telerik.Sitefinity.Frontend/Mvc/Views/JobFilters/" + templateName + ".cshtml", dynamicFilterResponse)); }