예제 #1
0
        private ActionResult NoResults(EstablishmentSearchViewModel model)
        {
            var routeDictionary = new RouteValueDictionary
            {
                { "action", "Index" },
                { "controller", "Search" },
                { "area", string.Empty },
                { "SearchType", model.SearchType }
            };

            string queryStringToAppend = string.Empty;

            switch (model.SearchType)
            {
            case eSearchType.Text:
                routeDictionary.Add("TextSearchModel.Text", model.TextSearchModel.Text);
                routeDictionary.Add("NoResults", true);
                break;

            case eSearchType.Location:
                routeDictionary.Add("LocationSearchModel.Text", model.LocationSearchModel.Text);
                routeDictionary.Add("NoResults", true);
                break;

            case eSearchType.ByLocalAuthority:
                queryStringToAppend = string.Concat("&",
                                                    QueryStringHelper.ToQueryString(EstablishmentSearchViewModel.BIND_ALIAS_LAIDS,
                                                                                    model.SelectedLocalAuthorityIds.ToArray()));
                routeDictionary.Add("NoResults", true);
                break;
            }

            return(new RedirectResult(string.Concat(Url.RouteUrl(routeDictionary), queryStringToAppend)));
        }
        public async Task <ActionResult> Index(SearchViewModel viewModel)
        {
            if (!viewModel.NoResultsForLocation && !viewModel.NoResultsForName && !viewModel.NoResultsForLA)
            {
                if (viewModel.LocalAuthorityToRemove.HasValue)
                {
                    return(Redirect("/?" + QueryStringHelper.ToQueryString(SearchViewModel.BIND_ALIAS_LAIDS,
                                                                           viewModel.RemoveLocalAuthorityId(viewModel.LocalAuthorityToRemove.Value).SelectedLocalAuthorityIds.ToArray()) + "#la"));
                }


                if (viewModel.SearchType.HasValue)
                {
                    if (viewModel.SearchType == eSearchType.LocalAuthorityDisambiguation)
                    {
                        return(await ProcessLocalAuthorityDisambiguation(viewModel));
                    }

                    if (ModelState.IsValid)
                    {
                        if (viewModel.SearchType == eSearchType.Location && LatLon.Parse(viewModel.LocationSearchModel.AutoSuggestValue) == null && !viewModel.LocationSearchModel.Text.IsNullOrEmpty())
                        {
                            return(await ProcessLocationDisambiguation(viewModel));
                        }
                    }
                }
            }

            viewModel.LocalAuthorities = (await _cachedLookupService.LocalAuthorityGetAllAsync()).OrderBy(x => x.Name).Select(x => new LookupItemViewModel(x));
            viewModel.GovernorRoles    = (await _cachedLookupService.GovernorRolesGetAllAsync()).OrderBy(x => x.Name).Select(x => new LookupItemViewModel(x));

            return(View("Index", viewModel));
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            Query query = (Query)value;

            string queryString = QueryStringHelper.ToQueryString(query);

            writer.WriteValue(queryString);
        }
예제 #4
0
            public string?GetResolvedName()
            {
                if (Parameter == null)
                {
                    return(PageName);
                }

                var queryString = QueryStringHelper.ToQueryString(Parameter);

                return($"{PageName}?{queryString}");
            }
예제 #5
0
 static void Main()
 {
     var obj = new
     {
         a = "apple",
         b = "ball",
         c = "cat"
     };
     var result = QueryStringHelper.ToQueryString(obj);
     var d      = result;
 }
        public async Task <ActionResult> IndexResults(SearchViewModel viewModel)
        {
            if (!viewModel.NoResultsForLocation && !viewModel.NoResultsForName && !viewModel.NoResultsForLA)
            {
                if (viewModel.LocalAuthorityToRemove.HasValue)
                {
                    return(Redirect("/?" + QueryStringHelper.ToQueryString(SearchViewModel.BIND_ALIAS_LAIDS,
                                                                           viewModel.RemoveLocalAuthorityId(viewModel.LocalAuthorityToRemove.Value).SelectedLocalAuthorityIds.ToArray()) + "#la"));
                }


                if (viewModel.SearchType.HasValue)
                {
                    if (viewModel.SearchType == eSearchType.LocalAuthorityDisambiguation)
                    {
                        return(await ProcessLocalAuthorityDisambiguation(viewModel));
                    }

                    if (ModelState.IsValid)
                    {
                        if (viewModel.SearchType == eSearchType.Location && LatLon.Parse(viewModel.LocationSearchModel.AutoSuggestValue) == null && !viewModel.LocationSearchModel.Text.IsNullOrEmpty())
                        {
                            return(await ProcessLocationDisambiguation(viewModel));
                        }

                        if (viewModel.SearchType.OneOfThese(eSearchType.ByLocalAuthority, eSearchType.Location, eSearchType.Text, eSearchType.EstablishmentAll))
                        {
                            var url = Url.Action("Index", "EstablishmentsSearch", new { area = "Establishments" });
                            url = viewModel.OpenOnly
                                ? $"{url}?{Request.QueryString.AddIfNonExistent(SearchViewModel.BIND_ALIAS_STATUSIDS, (int)eStatus.Open, (int)eStatus.OpenButProposedToClose)}"
                                : $"{url}?{Request.QueryString.AddIfNonExistent("OpenOnly", "false")}";

                            return(Redirect(url));
                        }

                        if (viewModel.SearchType == eSearchType.Group)
                        {
                            return(Redirect(Url.Action("Index", "GroupSearch", new { area = "Groups" }) + "?" + Request.QueryString));
                        }

                        if (viewModel.SearchType == eSearchType.Governor)
                        {
                            return(Redirect(
                                       $"{Url.Action("Index", "GovernorSearch", new { area = "Governors" })}?{Request.QueryString}&{string.Join("&", viewModel.GovernorSearchModel.RoleId.Select(r => $"&{Areas.Governors.Models.GovernorSearchViewModel.BIND_ALIAS_ROLE_ID}={r}"))}"));
                        }

                        throw new NotSupportedException($"The search type '{viewModel.SearchType}' is not recognised.");
                    }
                }
            }

            return(await Index(viewModel));
        }
예제 #7
0
        public async Task <ActionResult> CreateEditPredefinedLASet(PredefinedLASetViewModel viewModel)
        {
            if (ModelState.ContainsKey(nameof(viewModel.SuppressWarning)))
            {
                ModelState.Remove(nameof(viewModel.SuppressWarning));
            }

            if (ModelState.IsValid)
            {
                var sets = await _localAuthoritySetRepository.GetAllAsync();

                var duplicate = sets.Items.Where(x => x.Title == viewModel.Title && (viewModel.IsNewEntity || viewModel.Id != x.RowKey)).Select(x => x.RowKey).FirstOrDefault();

                if (duplicate == null || viewModel.SuppressWarning)
                {
                    var entity = viewModel.IsNewEntity ? new LocalAuthoritySet() : await _localAuthoritySetRepository.GetAsync(viewModel.Id);

                    entity.Title = viewModel.Title;
                    entity.Ids   = viewModel.SelectedLocalAuthorityIds.ToArray();
                    if (viewModel.IsNewEntity)
                    {
                        await _localAuthoritySetRepository.CreateAsync(entity);
                    }
                    else
                    {
                        await _localAuthoritySetRepository.UpdateAsync(entity);
                    }

                    if (duplicate != null)
                    {
                        await _localAuthoritySetRepository.DeleteAsync(duplicate);
                    }

                    if (viewModel.Referrer == "results")
                    {
                        return(Redirect(string.Concat(Url.RouteUrl("IndSchSearch"), "?a=search&Mode=", viewModel.Mode, "&",
                                                      QueryStringHelper.ToQueryString(IndSchoolsSearchViewModel.BindAliasForSelectedLocalAuthorityIds,
                                                                                      viewModel.SelectedLocalAuthorityIds.ToArray()))));
                    }
                    return(RedirectToRoute("PredefinedLASets"));
                }
                else if (duplicate != null)
                {
                    viewModel.WarningNameClash = true;
                }
            }

            viewModel.LocalAuthorities = (await _lookup.LocalAuthorityGetAllAsync()).OrderBy(x => x.Name).Select(x => new LookupItemViewModel(x));

            return(View("CreateEditPredefinedLASet", viewModel));
        }
        private async Task <ActionResult> ProcessLocalAuthorityDisambiguation(SearchViewModel model)
        {
            var localAuthorities = await _cachedLookupService.LocalAuthorityGetAllAsync();

            var localAuthority = localAuthorities.FirstOrDefault(x => x.Name.Equals(model.LocalAuthorityToAdd, StringComparison.OrdinalIgnoreCase));

            if (localAuthority != null)
            {
                return(Redirect("/?SearchType=ByLocalAuthority&" + QueryStringHelper.ToQueryString(SearchViewModel.BIND_ALIAS_LAIDS,
                                                                                                   model.AddLocalAuthorityId(localAuthority.Id).SelectedLocalAuthorityIds.ToArray()) + "#la"));
            }
            else
            {
                var localAuthorityDisambiguationViewModel = new LocalAuthorityDisambiguationViewModel(model.SelectedLocalAuthorityIds, model.LocalAuthorityToAdd ?? "",
                                                                                                      localAuthorities.Where(x => x.Name.IndexOf(model.LocalAuthorityToAdd ?? "", StringComparison.OrdinalIgnoreCase) > -1).Take(10).ToList());
                return(View("LocalAuthorityDisambiguation", localAuthorityDisambiguationViewModel));
            }
        }
예제 #9
0
        public async Task <JArray> GetEventsAsync(NewFilterInput filterInput, long blockFrom, long blockTo)
        {
            var parameters = new
            {
                module    = "logs",
                action    = "getLogs",
                fromBlock = blockFrom,
                toBlock   = blockTo,
                address   = filterInput.Address.First(),
                apikey    = _options.ApiKey,
                topic0    = filterInput.Topics.Length > 0 ? filterInput.Topics[0] : null,
                topic1    = filterInput.Topics.Length > 1 ? filterInput.Topics[1] : null,
                topic2    = filterInput.Topics.Length > 2 ? filterInput.Topics[2] : null
            };

            var url = _options.ApiUrl + QueryStringHelper.ToQueryString(parameters);

            var response = await GetJsonTimedAsync <EventsResult>(url);

            return(response.Result);
        }
예제 #10
0
        public async Task <ActionResult> IndependentSchoolsSearch(IndSchoolsSearchViewModel viewModel)
        {
            await PopulateLookupData(viewModel);

            if (!string.Equals(viewModel.ActionName, IndSchoolsSearchViewModel.ActionSearch))
            {
                ModelState.Clear();
            }

            if (viewModel.MinDate.ToDateTime().HasValue&& viewModel.MaxDate.ToDateTime().HasValue&& viewModel.MinDate.ToDateTime() > viewModel.MaxDate.ToDateTime())
            {
                ModelState.AddModelError("date-range", "Please use a valid date range");
            }

            if (ModelState.IsValid)
            {
                switch (viewModel.ActionName)
                {
                case IndSchoolsSearchViewModel.ActionSearch:
                    return(View("IndependentSchoolsSearchResults", viewModel.SetResults(
                                    new PaginatedResult <EstablishmentSearchResultModel>(viewModel.Skip, viewModel.Take,
                                                                                         await _establishmentReadService.SearchAsync(await CreateIndSchoolSearchPayload(viewModel),
                                                                                                                                     User)))));

                case IndSchoolsSearchViewModel.ActionSaveSet:
                    return(Redirect(string.Concat(Url.RouteUrl("CreatePredefinedLASet"), "?",
                                                  QueryStringHelper.ToQueryString(IndSchoolsSearchViewModel.BindAliasForSelectedLocalAuthorityIds,
                                                                                  viewModel.SelectedLocalAuthorityIds.ToArray()))));

                default:
                    break;
                }
            }

            viewModel.LocalAuthoritySets = (await _localAuthoritySetRepository.GetAllAsync()).Items
                                           .OrderBy(x => x.Title)
                                           .Select(x => new IndSchoolsSearchViewModel.LASetViewModel(x));

            return(View(viewModel));
        }
예제 #11
0
 /// <summary>
 /// Returns the Query as a query string
 /// Example : "query= distinct=0"
 /// </summary>
 public string ToQueryString()
 {
     return(QueryStringHelper.ToQueryString(this));
 }
        public async Task <ActionResult> Index(SearchViewModel viewModel)
        {
            if (!viewModel.NoResults)
            {
                if (viewModel.LocalAuthorityToRemove.HasValue)
                {
                    return(Redirect("/?" + QueryStringHelper.ToQueryString(SearchViewModel.BIND_ALIAS_LAIDS,
                                                                           viewModel.RemoveLocalAuthorityId(viewModel.LocalAuthorityToRemove.Value).SelectedLocalAuthorityIds.ToArray()) + "#la"));
                }


                if (viewModel.SearchType.HasValue)
                {
                    if (viewModel.SearchType == eSearchType.LocalAuthorityDisambiguation)
                    {
                        return(await ProcessLocalAuthorityDisambiguation(viewModel));
                    }

                    if (ModelState.IsValid)
                    {
                        if (viewModel.SearchType == eSearchType.Location && LatLon.Parse(viewModel.LocationSearchModel.AutoSuggestValue) == null && !viewModel.LocationSearchModel.Text.IsNullOrEmpty())
                        {
                            var disambiguationResult = await ProcessLocationDisambiguation(viewModel.LocationSearchModel.Text);

                            if (disambiguationResult != null)
                            {
                                return(disambiguationResult);
                            }
                        }
                    }
                    else if (viewModel.SearchType == eSearchType.GovernorReference)
                    {
                        var fieldError = viewModel.GovernorSearchModel.Gid.HasValue
                            ? "We could not find any governors matching your search criteria"
                            : "Please enter a governor ID to start a search";

                        viewModel.ErrorPanel = "GovernorId";

                        ModelState.AddModelError("GovernorSearchModel.Gid", fieldError);
                    }
                }
            }
            else
            {
                var fieldId    = "TextSearchModel.Text";
                var fieldError = "We could not find any establishments matching your search criteria";
                var la         = Request.QueryString["LocalAuthorityToAdd"];
                switch (viewModel.SearchType)
                {
                case eSearchType.Text:
                    if (viewModel.TextSearchModel.Text.IsNullOrEmpty())
                    {
                        fieldError = "Please enter an establishment name, URN, LAESTAB or UKPRN to start a search";
                    }

                    viewModel.ErrorPanel = "Name";
                    break;

                case eSearchType.Location:
                    fieldId              = "LocationSearchModel.Text";
                    fieldError           = "Please enter a postcode, town or city to start a search";
                    viewModel.ErrorPanel = "Location";
                    break;

                case eSearchType.ByLocalAuthority:
                    if (!string.IsNullOrEmpty(viewModel.LocalAuthorityToAdd))
                    {
                        return(await ProcessLocalAuthorityDisambiguation(viewModel));
                    }
                    fieldId = "LocalAuthorityToAdd";

                    fieldError = viewModel.SelectedLocalAuthorityIds.Any() ?
                                 "We could not find any local authorities matching your search criteria" :
                                 "Please enter a local authority to start a search";
                    viewModel.ErrorPanel = "LocalAuthority";

                    break;

                case eSearchType.Group:
                    fieldId = "GroupSearchModel.Text";

                    fieldError = viewModel.GroupSearchModel.Text.IsNullOrEmpty() ?
                                 "Please enter an establishment group to start a search" :
                                 "We could not find any establishment groups matching your search criteria";

                    viewModel.ErrorPanel = "Group";
                    break;

                case eSearchType.Governor:
                    fieldId = "GovernorSearchModel.Forename";

                    fieldError = viewModel.GovernorSearchModel.Forename.IsNullOrEmpty() &&
                                 viewModel.GovernorSearchModel.Surname.IsNullOrEmpty() &&
                                 viewModel.GovernorSearchModel.RoleId.Length == 0 ?
                                 "Please enter a governor to start a search" :
                                 "We could not find any governors matching your search criteria";

                    viewModel.ErrorPanel = "Governor";

                    break;

                case eSearchType.GovernorReference:
                    fieldId    = "GovernorSearchModel.Gid";
                    fieldError = viewModel.GovernorSearchModel.Gid.HasValue
                            ? "We could not find any governors matching your search criteria"
                            : "Please enter a governor ID to start a search";

                    viewModel.ErrorPanel = "GovernorId";

                    break;
                }

                ModelState.AddModelError(fieldId, fieldError);
            }

            viewModel.LocalAuthorities = (await _cachedLookupService.LocalAuthorityGetAllAsync()).OrderBy(x => x.Name).Select(x => new LookupItemViewModel(x));
            viewModel.GovernorRoles    = (await _cachedLookupService.GovernorRolesGetAllAsync()).OrderBy(x => x.Name).Select(x => new LookupItemViewModel(x));

            return(View("Index", viewModel));
        }