public static SearchQueryResponse GetSearchQuery(string searchString) { string rawJSON = GetRawResponse(searchString); if (!String.IsNullOrEmpty(rawJSON)) { LUISResponse luisResp = JsonConvert.DeserializeObject <LUISResponse>(rawJSON); SearchQueryResponse resp = new SearchQueryResponse(); resp.RawJSON = rawJSON; resp.SearchQuery = getSearchQuery(luisResp); return(resp); } return(new SearchQueryResponse()); }
private static string getSearchQuery(LUISResponse luisResp) { string sql = ""; if (luisResp != null) { foreach (var item in luisResp.entities) { switch (item.type) { case "builtin.datetimeV2.daterange": if (item.resolution.values.Length > 0) { string endDate = String.IsNullOrEmpty(item.resolution.values[0].end) ? DateTime.Now.ToString("yyyy-MM-dd") : item.resolution.values[0].end; sql = appendString(sql, string.Format("orderdate between '{0}' and '{1}'", item.resolution.values[0].start, endDate)); } break; case "builtin.datetimeV2.date": if (item.resolution.values.Length > 0) { sql = appendString(sql, string.Format("orderdate between '{0}' and '{1}'", item.resolution.values[0].value, item.resolution.values[0].value)); } break; case "company_name": if (!string.IsNullOrEmpty(item.entity)) { sql = appendString(sql, string.Format("lower(shipname) like '%{0}%'", item.entity)); } break; case "user": if (!string.IsNullOrEmpty(item.entity)) { sql = appendString(sql, string.Format("lower(u.firstname) like '%{0}%' or lower(u.lastname) like '%{0}%'", item.entity)); } break; } } } return(sql); }