public async Task <IActionResult> Orders(string whereSearch, string desired, string sortType, int?currentPosition, string select) { FilterBaseAndSearch filters = new FilterBaseAndSearch(desired: desired, whereSearch: whereSearch, countVisablePositions: 3, currentPosition: currentPosition, selectFromSelectList: select, sortType: sortType); UserOrdersAndFilters result = await _dataProcessingConveyor.GetUserOrdersAndFiltersAsync(filters); return(View(result)); }
public async Task <UserOrdersAndFilters> GetUserOrdersAndFiltersAsync(FilterBaseAndSearch filters) { UserOrdersAndFilters result = new UserOrdersAndFilters() { Filters = filters, SearchEnumArray = searchEnumArrayOrders, SortEnumArray = sortEnumArrayOrders }; string keyName = $"UserListAndOrdersStorekeeper{filters.GetFilterName()}", keyNameUserListAll = $"UserListAll", desired = filters.Desired; List <OrderMiniAndUserCardMini> orderMiniAndUserCardMini = _cacheService.Get <List <OrderMiniAndUserCardMini> >(keyName); if (orderMiniAndUserCardMini == null) { var userBaseInfos = _cacheService.Get <List <UserBaseInfo> >(keyNameUserListAll); if (userBaseInfos == null || userBaseInfos.Count == 0) { userBaseInfos = await _fcdUserAndSignManager.GetUserBaseInfosAsync(); _cacheService.Set <List <UserBaseInfo> >(keyNameUserListAll, userBaseInfos); } if (desired != null && filters.WhereSearch != null) { switch (Enum.Parse(typeWhereSearchOrders, filters.WhereSearch)) { case (WhereSearchOrders.По_заказчику): { userBaseInfos = FindOrdersForUser(userBaseInfos, desired); break; } case (WhereSearchOrders.По_почте): { userBaseInfos = FindOrdersForEmail(userBaseInfos, desired); break; } default: { break; } } _cacheService.Set <List <UserBaseInfo> >(keyNameUserListAll, userBaseInfos); } if (userBaseInfos?.Count != 0) { string[] usersId = userBaseInfos.Select(users => users.Id).ToArray(); if (desired != null && filters.WhereSearch != null) { switch (Enum.Parse(typeWhereSearchOrders, filters.WhereSearch)) { case (WhereSearchOrders.По_номеру): { orderMiniAndUserCardMini = await _fcdStoreContext.GetUsersOrdersToStorekeeperAsync(desired); break; } default: { orderMiniAndUserCardMini = await _fcdStoreContext.GetUsersOrdersToStorekeeperAsync(usersId); break; } } } else { orderMiniAndUserCardMini = await _fcdStoreContext.GetUsersOrdersToStorekeeperAsync(); } if (orderMiniAndUserCardMini?.Count > 0) { foreach (var order in orderMiniAndUserCardMini) { foreach (var user in userBaseInfos) { if (order.UserInfo.Id == user.Id) { order.UserInfo.Email = user.Email; order.UserInfo.Name = user.Name; break; } } if (order.UserInfo.Email == null) { order.UserInfo.Email = "Anon"; order.UserInfo.Name = "Anon"; } } } } result.OrderMiniAndUserCardMini = orderMiniAndUserCardMini; _dataFiltering.Filtering(result); orderMiniAndUserCardMini = result.OrderMiniAndUserCardMini; _cacheService.Set <List <OrderMiniAndUserCardMini> >(keyName, orderMiniAndUserCardMini); } result.OrderMiniAndUserCardMini = orderMiniAndUserCardMini; _dataFiltering.SetFilters(result); if (orderMiniAndUserCardMini?.Count > 0) { result.OrderMiniAndUserCardMini = _dataFiltering.Paginator <OrderMiniAndUserCardMini>(result.OrderMiniAndUserCardMini, (int)filters.CountVisablePositions, (int)filters.CurrentPosition); } return(result); }