internal async Task <DataModel.Search> Post(string jql, int startAt = 0, int maxResults = 0, string fields = "") { DataModel.Search item; SearchRequest requestItem = new SearchRequest() { jql = jql, fields = string.IsNullOrEmpty(fields) ? SearchRequest.Fields.All : fields.Split(','), startAt = startAt, maxResults = maxResults }; var json = JsonConvert.SerializeObject(requestItem); System.Console.WriteLine(json); HttpResponseMessage response = await Client.PostAsJsonAsync <SearchRequest>(Search.Path, requestItem); if (response.IsSuccessStatusCode) { Response.SearchResponse resultItem = await response.Content.ReadAsAsync <Response.SearchResponse>(); item = new DataModel.Search(resultItem); } else { item = new DataModel.Search(); } return(item); }
internal List <DataModel.Transaction> SearchTransactions(DataModel.Search tmpSearch) { List <DataModel.Transaction> lTransactions = oFactory.oData.RetrieveTransactions(); var propertyInfo = typeof(DataModel.Transaction).GetProperty((string)tmpSearch.Category); var sortpropertyInfo = typeof(DataModel.Transaction).GetProperty((string)tmpSearch.SortBy); if (!string.IsNullOrEmpty(tmpSearch.SearchText)) { // if type string, do contains. if (propertyInfo.PropertyType == typeof(string)) { lTransactions = lTransactions.Where(transaction => (propertyInfo.GetValue(transaction, null).ToString().ToLower().Contains(tmpSearch.SearchText.ToLower())) && DateTime.Compare(DateTime.Parse(transaction.TransactionDate), tmpSearch.BeginningDate.Value) >= 0 && DateTime.Compare(DateTime.Parse(transaction.TransactionDate), tmpSearch.EndDate.Value) <= 0).OrderBy(x => sortpropertyInfo.GetValue(x, null)).ToList(); } else { // This will do a search as equals otherwise. lTransactions = lTransactions.Where(transaction => (propertyInfo.GetValue(transaction, null).ToString().Equals(tmpSearch.SearchText)) && DateTime.Parse(transaction.TransactionDate) >= tmpSearch.BeginningDate.Value && DateTime.Parse(transaction.TransactionDate) <= tmpSearch.EndDate.Value).OrderBy(x => sortpropertyInfo.GetValue(x, null)).ToList(); } } else { // if search is nothing, reset it within the time frame provided. lTransactions = lTransactions.Where(transaction => DateTime.Parse(transaction.TransactionDate) >= tmpSearch.BeginningDate.Value && DateTime.Parse(transaction.TransactionDate) <= tmpSearch.EndDate.Value).OrderBy(x => sortpropertyInfo.GetValue(x, null)).ToList(); } return(lTransactions); }
internal async Task <DataModel.Search> Get(string jql, int startAt = 0, int maxResults = 0, string fields = "") { DataModel.Search item; SearchRequest requestItem = new SearchRequest() { jql = jql, fields = string.IsNullOrEmpty(fields) ? SearchRequest.Fields.All : fields.Split(','), startAt = startAt, maxResults = maxResults }; string path = Search.Path.UrlGetCombine(requestItem); if (path.IsComplexQuery() || path.ExcedUrlLimit()) { return(await Post(jql, startAt, maxResults, fields)); } HttpResponseMessage response = await Client.GetAsync(path); if (response.IsSuccessStatusCode) { Response.SearchResponse resultItem = await response.Content.ReadAsAsync <Response.SearchResponse>(); item = new DataModel.Search(resultItem); } else { item = new DataModel.Search() { Error = response.StatusCode.ToString() }; } return(item); }