Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }