/// <summary> /// Clear all settings /// </summary> /// <returns></returns> public RestClient Clear() { QueryItems.Clear(); PathItems = StringVector.Empty; BaseAddress = null; return(this); }
/// <summary> /// Add query item /// </summary> /// <param name="name">name of query</param> /// <param name="value">value of query</param> /// <returns>this</returns> public RestClient AddQuery(string name, string value) { name.VerifyNotEmpty(nameof(name)); value.VerifyNotEmpty(nameof(value)); QueryItems.Add(name, value); return(this); }
/// <summary> /// Clear all settings /// </summary> /// <returns></returns> public RestClient Clear() { HeaderItems.Clear(); QueryItems.Clear(); PathItems = StringVector.Empty; AbsoluteUri = null; BaseAddress = null; return(this); }
public QueryModelHandler() { QueryLists = new List <List <QueryDatabaseModel> >(); QueryLists.Add(new List <QueryDatabaseModel>() { new QueryDatabaseModel() }); SelectedIndexes = new List <QueryDatabaseModel>(); QueryItems.Add(new QueryDatabaseModel()); }
/// <summary> /// Add query item /// </summary> /// <param name="name">name of query</param> /// <param name="value">value of query</param> /// <returns>this</returns> public RestClient AddQuery(string name, string value) { Verify.IsNotEmpty(nameof(name), name); if (value.IsNotEmpty()) { QueryItems.Add(name, value); } return(this); }
public override void Intercept(HttpClient httpClient) { QueryItems.Clear(); QueryItems.Add(new KeyValuePair <string, string>("Accept", "application/json")); var sessionInfo = _sessionInfoHolder.SessionInfo; if (sessionInfo != null) { QueryItems.Add(new KeyValuePair <string, string>("Authorization", sessionInfo.ToString())); } base.Intercept(httpClient); }
private DateTime?ConvertToDate(string key, string value) { var year = 0; var month = 0; var day = 0; if (key.EndsWith("-date")) { // Convert from one query string item. var dateItems = value.SplitSafe("-"); year = dateItems.SafeGet(0).ToInt(); month = dateItems.SafeGet(1).ToInt(); day = dateItems.SafeGet(2).ToInt(); } else if (key.EndsWith("-year")) { // Convert from three form controls. var dateKey = key.Replace("-year", ""); year = value.ToInt(); if (QueryItems.ContainsKey(dateKey + "-month")) { var str = QueryItems[dateKey + "-month"].FirstOrDefault(); month = str?.ToInt() ?? 0; } if (QueryItems.ContainsKey(dateKey + "-day")) { var str = QueryItems[dateKey + "-day"].FirstOrDefault(); day = str?.ToInt() ?? 0; } } if (year > 0 && month > 0 && day > 0) { try { return(new DateTime(year, month, day)); } catch { } } return(null); }
/// <summary> /// Build HTTP request /// </summary> /// <param name="method">HTTP method</param> /// <returns>HTTP request message</returns> private HttpRequestMessage BuildRequestMessage(HttpMethod method) { var builder = BaseAddress != null ? new UriBuilder(BaseAddress) : new UriBuilder() { Path = PathItems }; if (QueryItems.Count > 0) { builder.Query = string.Join("&", QueryItems.Select(x => Uri.EscapeDataString(x.Key).Trim() + "=" + Uri.EscapeDataString(x.Value).Trim())); } var request = new HttpRequestMessage(method, builder.Uri) { Content = Content, }; return(request); }
/// <summary> /// Build HTTP request /// </summary> /// <param name="method">HTTP method</param> /// <returns>HTTP request message</returns> private HttpRequestMessage BuildRequestMessage(HttpMethod method) { var builder = BaseAddress != null ? new UriBuilder(BaseAddress) : new UriBuilder(); builder.Path = (builder.Path?.Split("/", StringSplitOptions.RemoveEmptyEntries) ?? new string[0]) .Concat(PathItems) .Func(x => string.Join("/", x)); if (QueryItems.Count > 0) { builder.Query = string.Join("&", QueryItems.Select(x => Uri.EscapeDataString(x.Key).Trim() + "=" + Uri.EscapeDataString(x.Value).Trim())); } var request = new HttpRequestMessage(method, builder.Uri) { Content = Content, }; return(request); }
private string GetPropertyValue(QueryItems property, Dictionary <string, DataItem> included) { var propertyValue = string.Empty; if (property == null) { return(propertyValue); } foreach (var relationship in property.Data) { var item = included.LocateItem(relationship); if (item == null) { continue; } propertyValue = item.Item.value; } return(propertyValue); }
public async Task <object> Any(QueryItems request) { using var db = AutoQuery.GetDb(request, base.Request); return(await AutoQuery.ExecuteAsync(request, AutoQuery.CreateQuery(request, Request, db), db)); }
/// <summary> /// 调用 OnQuery 回调方法获得数据源 /// </summary> protected async Task QueryData() { // 目前设计使用 Items 参数后不回调 OnQueryAsync 方法 if (Items == null) { if (OnQueryAsync == null && DynamicContext != null && typeof(TItem).IsAssignableTo(typeof(IDynamicObject))) { // 动态数据 SelectedRows.Clear(); QueryItems = DynamicContext.GetItems().Cast <TItem>(); if (DynamicContext.OnGetSelectedRows != null) { SelectedRows.AddRange(DynamicContext.OnGetSelectedRows().Cast <TItem>()); } TotalCount = QueryItems.Count(); } else { // 数据集合 await OnQuery(); } } else { RowsCache = null; } async Task OnQuery() { QueryData <TItem>?queryData = null; var queryOption = new QueryPageOptions() { IsPage = IsPagination, PageIndex = PageIndex, PageItems = PageItems, SearchText = SearchText, SortOrder = SortOrder, SortName = SortName, SortList = string.IsNullOrEmpty(SortString) ? null : new List <string>(SortString.Split(",", StringSplitOptions.RemoveEmptyEntries)), Filters = Filters.Values, Searchs = GetSearchs(), AdvanceSearchs = GetAdvanceSearchs(), CustomerSearchs = GetCustomerSearchs(), SearchModel = SearchModel, StartIndex = StartIndex }; if (CustomerSearchModel != null) { queryOption.SearchModel = CustomerSearchModel; } queryData = await InternalOnQueryAsync(queryOption); RowsCache = null; Items = null; QueryItems = queryData.Items; TotalCount = queryData.TotalCount; IsAdvanceSearch = queryData.IsAdvanceSearch; // 处理选中行逻辑 ProcessSelectedRows(); // 分页情况下内部不做处理防止页码错乱 if (!queryOption.IsPage) { ProcessPageData(queryData, queryOption); } if (IsTree) { await ProcessTreeData(); } void ProcessSelectedRows() { // 判断模型是否有 [Key] Id 等可识别字段尝试重构 var rows = new List <TItem>(); if (HasKeyAttribute) { // 更新选中行逻辑 foreach (var item in SelectedRows) { var key = Utility.GetKeyValue <TItem, object>(item); if (key != null) { var row = QueryItems.FirstOrDefault(i => Utility.GetKeyValue <TItem, object>(i).ToString() == key.ToString()); if (row != null) { rows.Add(row); } } } } else { foreach (var row in SelectedRows) { if (QueryItems.Any(i => i == row)) { rows.Add(row); } } } SelectedRows = rows; } void ProcessPageData(QueryData <TItem> queryData, QueryPageOptions queryOption) { var filtered = queryData.IsFiltered; var sorted = queryData.IsSorted; var searched = queryData.IsSearch; // 外部未处理 SearchText 模糊查询 if (!searched && queryOption.Searchs.Any()) { QueryItems = QueryItems.Where(queryOption.Searchs.GetFilterFunc <TItem>(FilterLogic.Or)); TotalCount = QueryItems.Count(); } // 外部未处理自定义高级搜索 内部进行高级自定义搜索过滤 if (!IsAdvanceSearch && queryOption.CustomerSearchs.Any()) { QueryItems = QueryItems.Where(queryOption.CustomerSearchs.GetFilterFunc <TItem>()); TotalCount = QueryItems.Count(); IsAdvanceSearch = true; } // 外部未过滤,内部自行过滤 if (!filtered && queryOption.Filters.Any()) { QueryItems = QueryItems.Where(queryOption.Filters.GetFilterFunc <TItem>()); TotalCount = QueryItems.Count(); } // 外部未处理排序,内部自行排序 // 先处理列头排序 再处理默认多列排序 if (!sorted) { if (queryOption.SortOrder != SortOrder.Unset && !string.IsNullOrEmpty(queryOption.SortName)) { var invoker = Utility.GetSortFunc <TItem>(); QueryItems = invoker(QueryItems, queryOption.SortName, queryOption.SortOrder); } else if (queryOption.SortList != null && queryOption.SortList.Any()) { var invoker = Utility.GetSortListFunc <TItem>(); QueryItems = invoker(QueryItems, queryOption.SortList); } } } async Task ProcessTreeData() { KeySet.Clear(); if (HasKeyAttribute) { CheckExpandKeys(TreeRows); } if (KeySet.Count > 0) { TreeRows = new List <TableTreeNode <TItem> >(); foreach (var item in QueryItems) { var node = new TableTreeNode <TItem>(item) { HasChildren = CheckTreeChildren(item), }; node.IsExpand = IsExpandRow(node); if (node.IsExpand) { await RestoreIsExpand(node); } TreeRows.Add(node); } } else { TreeRows = QueryItems.Select(item => new TableTreeNode <TItem>(item) { HasChildren = CheckTreeChildren(item) }).ToList(); } } } }