Exemple #1
0
        public async Task <ContentResult> Search(string terms    = "", string author = "", string parentAuthor = "",
                                                 string category = "", int page      = 1)
        {
            terms        = terms ?? "";
            author       = author ?? "";
            parentAuthor = parentAuthor ?? "";
            category     = category ?? "";
            var perPage = 15;
            var sb      = new StringBuilder();

            sb.Append(string.Format(SEARCH_HEADER,
                                    WebUtility.HtmlEncode(terms).Replace("\"", "&quot;"),
                                    WebUtility.HtmlEncode(author).Replace("\"", "&quot;"),
                                    WebUtility.HtmlEncode(parentAuthor).Replace("\"", "&quot;"),
                                    category == "nws" ? "selected" : "",
                                    category == "informative" ? "selected" : ""));
            if (terms != "" || author != "" || parentAuthor != "" || category != "")
            {
                var results = await _searchParser.Search(terms, author, parentAuthor, category, page);

                sb.Append(string.Format(SEARCH_RESULTS_HEADER,
                                        /* {0} */ WebUtility.HtmlEncode(terms).Replace("\"", "&quot;"),
                                        /* {1} */ WebUtility.HtmlEncode(author).Replace("\"", "&quot;"),
                                        /* {2} */ WebUtility.HtmlEncode(parentAuthor).Replace("\"", "&quot;"),
                                        /* {3} */ WebUtility.HtmlEncode(category).Replace("\"", "&quot;"),
                                        /* {4} */ page == 1 ? "disabled" : "",
                                        /* {5} */ page > 1 ? $"{page - 1}" : "1",
                                        /* {6} */ $"{page + 1}",
                                        /* {7} */ results.Results.Count < perPage ? "disabled" : "",
                                        /* {8} */ $"{(int)Math.Ceiling((double)results.TotalResults / perPage)}",
                                        /* {9} */ $"{results.TotalResults:#,##0}",
                                        /* {10} */ $"{page:#,##0}"));
                if (results.Results.Count == 0)
                {
                    sb.Append(NO_SEARCH_RESULTS);
                }
                foreach (var result in results.Results)
                {
                    var pptTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(result.Date, PacificTimeZone.TimeZoneId);
                    var timeZoneAbbreviation = PacificTimeZone.GetAbbreviationFromOffset(pptTime.Offset);
                    sb.Append(string.Format(SEARCH_RESULT,
                                            /* {0} */ $"{result.Id}",
                                            /* {1} */ result.Preview,
                                            /* {2} */ WebUtility.HtmlEncode(result.Author),
                                            /* {3} */ $"{pptTime:M/d/yyyy h:mm tt} {timeZoneAbbreviation}"));
                }
                sb.Append(SEARCH_RESULTS_FOOTER);
            }
            sb.Append(SEARCH_FOOTER);
            return(Content(sb.ToString(), "text/html"));
        }
Exemple #2
0
        public async Task <string> UseSearchParser(string search)
        {
            SearchParser searchParser = new SearchParser();

            return(await searchParser.Search(search));
        }