Example #1
0
        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);
        }
Example #2
0
        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);
        }