public async Task <PackResultResponse> GetPacksSearchResult(ICollection <Filter> searchFilter) { PackResultResponse result = new PackResultResponse(); int noRows = 500, pageStart = 0; var rows = searchFilter.FirstOrDefault(p => p.Criteria == "rows"); if (rows != null) { int.TryParse(rows.Value, out noRows); noRows = noRows == 0 ? 500 : noRows; searchFilter.Remove(rows); } var start = searchFilter.FirstOrDefault(p => p.Criteria == "start"); if (start != null) { int.TryParse(start.Value, out pageStart); searchFilter.Remove(start); } int currentPage = (pageStart / noRows) + 1; var response = dimProductExpanded.GetPacksSearchResult(searchFilter, currentPage, noRows); if (response != null) { result = new PackResultResponse { packResult = response.Data, recCount = response.TotalCount }; } return(result); }
public async Task <PackResultResponse> GetPacksSearchResult(ICollection <Filter> searchParams) { //Need to implement solr query to filter results based on the searchParams //This method should return the result with colums Pack Description, Manufacturer, ATC, NEC, Molecule, Flagging, Branding List <PackResult> lstPack = new List <PackResult>(); string jsonResponse = string.Empty; string pageStart = searchParams.FirstOrDefault(p => p.Criteria == "start").Value; var sObj = searchParams.FirstOrDefault(p => p.Criteria == "start"); searchParams.Remove(sObj); string rows = searchParams.FirstOrDefault(p => p.Criteria == "rows").Value; int noRows = 10; int.TryParse(rows, out noRows); var rObj = searchParams.FirstOrDefault(p => p.Criteria == "rows"); if (rObj != null) { searchParams.Remove(rObj); } var filterQuery = ""; if (searchParams != null) { filterQuery = string.Join("+AND+", searchParams .Where(f => !string.IsNullOrWhiteSpace(f.Value)) .Select(f => getCriteria(f.Criteria, f.Value)) ); } if (string.IsNullOrWhiteSpace(filterQuery)) { filterQuery = "*:*"; } filterQuery += "&start=" + pageStart; string resultContent = null; using (var client = new HttpClient()) { client.BaseAddress = new Uri(packsSolrURL); client.DefaultRequestHeaders .Accept .Add(new MediaTypeWithQualityHeaderValue("application/json")); var result = await client.GetAsync("?q=" + filterQuery + "&rows=" + noRows); resultContent = result.Content.ReadAsStringAsync().Result; } XmlDocument doc = new XmlDocument(); doc.LoadXml(resultContent); foreach (XmlNode node in doc.DocumentElement.SelectNodes("/response/result/doc")) { lstPack.Add(ParsePackFromXML(node)); } // lstPack.Add(new PackResult { PackDescription = "Pack Description1", Manufacturer = "manufacture1", ATC = "ATC1", NEC = "NEC1", Molecule = "Molecule1", Flagging = "Flagging", Branding = "Branding" }); // return lstPack; PackResultResponse retObject = new PackResultResponse(); retObject.packResult = lstPack; XmlNodeList nodeList = doc.SelectNodes("/response/result"); foreach (XmlNode node in nodeList) { string id = node.Attributes["numFound"].Value; int rCnt = 0; int.TryParse(id, out rCnt); retObject.recCount = rCnt; } return(retObject); }