Пример #1
0
        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);
        }
Пример #3
0
        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);
        }