Beispiel #1
0
        private void AddParam(FilterRule rule)
        {
            //如果是当前用户
            if (rule.Value.Equals(FilterCurrent.CurrentUserId.ToString()))
            {
                ListParams.Add(User.UserInfo.UserId);
                return;
            }
            var propertyInfo = SourceType.GetProperty(rule.Field);

            if (propertyInfo == null)
            {
                //默认是字符串类型
                ListParams.Add(rule.Value);
            }
            if (!propertyInfo.PropertyType.IsEnum)
            {
                var value = Convert.ChangeType(rule.Value, propertyInfo.PropertyType);
                ListParams.Add(value);
                return;
            }
            var eValue = Enum.Parse(propertyInfo.PropertyType, rule.Value);

            ListParams.Add(eValue);
        }
        /// <summary>
        /// 加载批注标签数据
        /// </summary>
        private async void LoadPostilTagData()
        {
            PostilTagList.Clear();
            var listParams = new ListParams {
                Search = Query.Eq(Hubs.Tag.ProjectId, Mg.Get <IMgContext>().ProjectId)
            };
            var result = await DataApi.GetListAsync(Hubs.Tag.T, listParams);

            if (!result.IsOk)
            {
                return;
            }
            var records = result.GetRecords();

            foreach (var record in records)
            {
                var name  = record[Hubs.Tag.Name].As <string>();
                var model = new TagInfoModel
                {
                    Id   = record.Id,
                    Name = $" {name} "
                };
                PostilTagList.Add(model);
            }
        }
        public async Task <IEnumerable <Comment> > ListAsync([Required] ListParams parameters)
        {
            // Check if player is authenticated
            await _authentication.AuthenticateAsync(parameters.AuthToken);

            return(await _repository.Comments.ToListAsync());
        }
Beispiel #4
0
        private void AddArrayParam(FilterRule rule)
        {
            var propertyInfo = SourceType.GetProperty(rule.Field);

            if (propertyInfo == null)
            {
                //默认是字符串类型
                ListParams.Add(rule.Value);
            }
            var valueArr = rule.Value.Split(',');
            var arr      = Array.CreateInstance(propertyInfo.PropertyType, valueArr.Length);

            if (propertyInfo.PropertyType.IsEnum)
            {
                for (int i = 0; i < valueArr.Length; i++)
                {
                    var enumValue = (Enum)Enum.Parse(propertyInfo.PropertyType, valueArr[i]);
                    arr.SetValue(enumValue, i);
                }
            }
            else
            {
                for (int i = 0; i < valueArr.Length; i++)
                {
                    var objValue = Convert.ChangeType(valueArr[i], propertyInfo.PropertyType);
                    arr.SetValue(objValue, i);
                }
            }

            ListParams.Add(arr);
        }
Beispiel #5
0
        protected List <TModel> GetListModel(ListParams listParams)
        {
            IQueryable <TEntity> query = GetQuery();

            query = query.OrderBy(listParams.DefaultSort);

            return(GetListModel(listParams, ref query));
        }
Beispiel #6
0
        /// <summary>
        /// 获取用户信息列表
        /// </summary>
        /// <param name="listParams">集合的筛选、分页、排序、映射参数</param>
        /// <returns></returns>
        public static async Task <Result> GetUserInfoListAsync(ListParams listParams = null)
        {
            var result = await Mg.Get <IMgWeb>().GetResultAsync <PostilApp>("v1/user/list", new
            {
                ListParams = listParams
            });

            return(result);
        }
Beispiel #7
0
        /// <summary>
        /// 获取自定义数据列表(筛选、分页、排序、映射)
        /// </summary>
        /// <param name="name">数据集名称(表名)</param>
        /// <param name="listParams">集合的筛选、分页、排序、映射参数</param>
        /// <returns></returns>
        public static async Task <Result> GetCustomDataListAsync(string name, ListParams listParams = null)
        {
            var result = await Web.GetResultAsync <DemoApp>("v1/data/list", new
            {
                Name       = name,
                ListParams = listParams
            });

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// 获取自定义数据列表(筛选、分页、排序、映射)
        /// </summary>
        /// <param name="name">数据集名称</param>
        /// <param name="listParams">集合的筛选、分页、排序、映射参数</param>
        /// <returns></returns>
        public static async Task <Result> GetListAsync(string name, ListParams listParams = null)
        {
            var result = await Mg.Get <IMgWeb>().GetResultAsync <PostilApp>("v1/data/list", new
            {
                Name       = name,
                ListParams = listParams
            });

            return(result);
        }
Beispiel #9
0
        public async Task <IActionResult> GetRestuarants([FromQuery] ListParams listParams)
        {
            var restuarants = await _repo.GetRestuarantsAsync(listParams);

            if (restuarants == null)
            {
                return(NotFound("Cannot get restuarants"));
            }
            Response.AddPagination(restuarants.CurrentPage, restuarants.PageSize, restuarants.TotalCount, restuarants.TotalPages);
            return(Ok(restuarants));
        }
        /// <summary>
        /// 加载指定页的批注信息
        /// </summary>
        private async void LoadPostilInfosAsync(int pageIndex, Action action = null)
        {
            IsBusy = true;
            var listParams = new ListParams
            {
                Search = Query.Eq(Hubs.Postil.ProjectId, Mg.Get <IMgContext>().ProjectId),
                Page   = new ListParams.PageInfo(pageIndex, 8),
                Sort   = new[] { new ListParams.SortProperty(Hubs.Postil.CreateTime, false) }
            };
            var dataResult = await DataApi.GetListAsync(Hubs.Postil.T, listParams);

            _listPostilInfoModel.Clear();
            if (!dataResult.IsOk)
            {
                Mg.Get <IMgLog>().Error("获取批注信息失败" + dataResult.Message);
                Mg.Get <IMgDialog>().ShowDesktopAlert("获取批注信息失败", dataResult.Message);
                IsBusy = false;
                return;
            }
            var models = dataResult.GetRecords().Select(t => t.As <PostilInfoModel>()).ToList();

            if (models.Count == 0)
            {
                IsBusy = false;
                return;
            }
            var urlDic = await Util.Data.GetPictureUrlsAsync(models.Select(t => t.FileId).ToArray());

            var userDic = await Util.Data.GetUserInfosAsync(models.Select(t => t.CreateUser).ToArray());

            foreach (var postilInfoModel in models)
            {
                postilInfoModel.ImageUrl   = urlDic?[postilInfoModel.FileId];
                postilInfoModel.PostilUser = userDic?[postilInfoModel.CreateUser];
                _listPostilInfoModel.Add(postilInfoModel);
            }
            ViewPictureModels.Clear();
            for (var index = 0; index < models.Count; index++)
            {
                var model = models[index];
                ViewPictureModels.Add(new PictureModel
                {
                    SelectedPicIndex = index,
                    PostilId         = model._id,
                    ImageUrl         = model.ImageUrl
                });
            }
            SelectedViewPicModel = ViewPictureModels.FirstOrDefault();
            action?.Invoke();
            LoadNextPageCountAsync();
            IsBusy = false;
        }
Beispiel #11
0
        /// <summary>
        /// The execute list params.
        /// </summary>
        /// <param name="listParams">
        /// The list params.
        /// </param>
        /// <returns>
        /// The <see cref="int"/>.
        /// </returns>
        private static int ExecuteListParams(ListParams listParams)
        {
            var allUsers = userService.GetAllUsers();
            var builder  = new StringBuilder();

            foreach (var userData in allUsers)
            {
                builder.AppendLine($"{userData.Id}. {userData.User} : {userData.CreatedOn}");
            }

            Console.WriteLine();
            Console.WriteLine(builder.ToString());
            return(ExitCodes.Ok);
        }
Beispiel #12
0
        public async Task <PagedList <Restuarant> > GetRestuarantsAsync(ListParams listParams)
        {
            var list = _context.Restuarants.AsQueryable();

            if (listParams.Name != null)
            {
                list = list.Where(r => r.Name.Contains(listParams.Name.ToUpper()));
            }
            var zipCode = 0;

            if (listParams.ZipCode != null && int.TryParse(listParams.ZipCode, out zipCode))
            {
                list = list.Where(r => r.ZipCode == zipCode);
            }

            return(await PagedList <Restuarant> .CreateAsync(list, listParams.PageNumber, listParams.PageSize));
        }
        /// <summary>
        /// 读取下一页批注是否还有数据
        /// </summary>
        private async void LoadNextPageCountAsync()
        {
            var listParams = new ListParams
            {
                Search = Query.Eq(Hubs.Postil.ProjectId, Mg.Get <IMgContext>().ProjectId),
                Page   = new ListParams.PageInfo(_currentPageIndex + 1, 8),
                Sort   = new[] { new ListParams.SortProperty(Hubs.Postil.CreateTime, true) },
                Map    = new[] { Id.Name }
            };
            var result = await DataApi.GetListAsync(Hubs.Postil.T, listParams);

            if (!result.IsOk)
            {
                _canNextPage = false;
                return;
            }
            _canNextPage = result.GetRecords().Count > 0;
        }
Beispiel #14
0
        public async Task <PagedList <User> > GetUsers(ListParams listParams)
        {
            var users = context.Users.Include(p => p.Photos).AsQueryable();

            users = users.Where(u => u.Id != listParams.UserId);
            users = users.Where(u => u.Gender == listParams.Gender);

            if (listParams.Likers)
            {
                var userLikers = await GetUserLikes(listParams.UserId, listParams.Likers);

                users = users.Where(u => userLikers.Contains(u.Id));
            }

            if (listParams.Likees)
            {
                var userLikees = await GetUserLikes(listParams.UserId, listParams.Likers);

                users = users.Where(u => userLikees.Contains(u.Id));
            }

            if (listParams.MinAge != 18 || listParams.MaxAge != 99)
            {
                var minDob = DateTime.Today.AddYears(-listParams.MaxAge - 1);
                var maxDob = DateTime.Today.AddYears(-listParams.MinAge);
                users = users.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxDob);
            }

            if (!string.IsNullOrEmpty(listParams.OrderBy))
            {
                switch (listParams.OrderBy)
                {
                case "created":
                    users = users.OrderByDescending(u => u.Created);
                    break;

                default:
                    users = users.OrderByDescending(u => u.LastActive);
                    break;
                }
            }

            return(await PagedList <User> .CreateAsync(users, listParams.PageNumber, listParams.PageSize));
        }
Beispiel #15
0
        /// <summary>
        /// 加载所有批注信息数据
        /// </summary>
        private async void LoadPostilInfos()
        {
            IsBusy = true;
            PostilInfoModels.Clear();
            _backupPostilInfoModels.Clear();
            var listParams = new ListParams
            {
                Search = Query.Eq(Hubs.Postil.ProjectId, Mg.Get <IMgContext>().ProjectId),
                Sort   = new[] { new ListParams.SortProperty(Hubs.Postil.CreateTime, false) }
            };
            var result = await DataApi.GetListAsync(Hubs.Postil.T, listParams);

            if (!result.IsOk)
            {
                Mg.Get <IMgLog>().Error("获取批注信息失败" + result.Message);
                Mg.Get <IMgDialog>().ShowDesktopAlert("获取批注信息失败", result.Message);
                IsBusy = false;
                return;
            }
            var models = result.GetRecords().Select(t => t.As <PostilInfoModel>()).ToList();

            if (models.Count == 0)
            {
                IsBusy = false;
                return;
            }
            var urlDic = await Util.Data.GetPictureUrlsAsync(models.Select(t => t.FileId).ToArray());

            var userDic = await Util.Data.GetUserInfosAsync(models.Select(t => t.CreateUser).ToArray());

            foreach (var postilInfoModel in models)
            {
                postilInfoModel.ImageUrl   = urlDic?[postilInfoModel.FileId];
                postilInfoModel.PostilUser = userDic?[postilInfoModel.CreateUser];
                postilInfoModel.FirstTag   = $" {postilInfoModel.Tags[0]} ";
                var dt1 = Convert.ToDateTime(postilInfoModel.CreateTime);
                var dt2 = DateTime.Now;
                postilInfoModel.LastTime = DateDiff(dt1, dt2);
                PostilInfoModels.Add(postilInfoModel);
                _backupPostilInfoModels.Add(postilInfoModel);
            }
            IsBusy = false;
        }
Beispiel #16
0
        /// <summary>
        /// 加载用户真实姓名数据
        /// </summary>
        public static async Task <Dictionary <Id, string> > GetUserInfosAsync(Id[] userIds)
        {
            var listParamas = new ListParams
            {
                Search = Query.In(Id.Name, userIds),
                Map    = new[] { Id.Name, "RealName" }
            };
            var result = await UserApi.GetUserInfoListAsync(listParamas);

            if (!result.IsOk)
            {
                Mg.Get <IMgLog>().Error($"获取用户的头像数据失败:{result.Message}");
                Mg.Get <IMgDialog>().ShowDesktopAlert("获取用户的头像数据失败", result.Message);
                return(null);
            }
            var items = result.GetRecords();

            return(items.ToDictionary(item => item[Id.Name].As <Id>(), item => item["RealName"].As <string>()));
        }
Beispiel #17
0
        public async Task <IActionResult> GetUsers([FromQuery] ListParams listParams)
        {
            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var userFromRepo  = await repo.GetUser(currentUserId);

            listParams.UserId = currentUserId;
            if (string.IsNullOrEmpty(listParams.Gender))
            {
                listParams.Gender = userFromRepo.Gender == "male" ? "female": "male";
            }

            var users = await repo.GetUsers(listParams);

            var usersToReturn = mapper.Map <IEnumerable <UserForListDto> >(users);

            Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages);

            return(Ok(usersToReturn));
        }
Beispiel #18
0
        protected List <TEntity> GetList(ListParams listParams, ref IQueryable <TEntity> query)
        {
            string customFilter = ParseCustomFilters(listParams.CustomFilters);

            if (!string.IsNullOrEmpty(customFilter))
            {
                listParams.Filter += (string.IsNullOrEmpty(listParams.Filter) ? "" : " AND ") + customFilter;
            }

            if (!string.IsNullOrEmpty(listParams.Filter))
            {
                query = query.Where(listParams.Filter);
            }

            if (listParams.Skip != 0 || listParams.Take != 0)
            {
                return(query
                       .Skip(listParams.Skip)
                       .Take(listParams.Take)
                       .ToList());
            }

            return(query.ToList());
        }
Beispiel #19
0
        protected List <TModel> GetListModel(ListParams listParams, ref IQueryable <TEntity> query)
        {
            List <TEntity> page = GetList(listParams, ref query);

            return(page.Select(Mapper.Map <TEntity, TModel>).ToList());
        }
Beispiel #20
0
        private string TranslateRule(FilterRule rule)
        {
            var strBuilder = new StringBuilder();

            if (rule == null)
            {
                return(" 1=1 ");
            }
            if (currentParamMath.Contains(rule.Field))
            {
                strBuilder.Append(GetCurrentRule(rule));
                return(strBuilder.ToString());
            }

            switch (rule.Op)
            {
            case FilterRuleOp.Equal:
            case FilterRuleOp.Greater:
            case FilterRuleOp.GreaterOrEqual:
            case FilterRuleOp.Less:
            case FilterRuleOp.LessOrEqual:
            case FilterRuleOp.NotEqual:
                strBuilder.Append(rule.Field);
                strBuilder.Append(GetFilterRuleOpQueryText(rule.Op));
                strBuilder.Append(GetParamToken());
                AddParam(rule);
                break;

            case FilterRuleOp.Like:
                strBuilder.Append(rule.Field);
                strBuilder.Append($".Contains({GetParamToken()})");
                ListParams.Add(rule.Value);
                break;

            case FilterRuleOp.StartWith:
                strBuilder.Append(rule.Field);
                strBuilder.Append($".StartsWith({GetParamToken()})");
                ListParams.Add(rule.Value);
                break;

            case FilterRuleOp.EndWith:
                strBuilder.Append(rule.Field);
                strBuilder.Append($".EndsWith({GetParamToken()})");
                ListParams.Add(rule.Value);
                break;

            case FilterRuleOp.In:
                strBuilder.Append($"{GetParamToken()}.Contains(outerIt.{rule.Field})");
                AddArrayParam(rule);
                break;

            case FilterRuleOp.Notin:
                strBuilder.Append($"!{GetParamToken()}.Contains(outerIt.{rule.Field})");
                AddArrayParam(rule);
                break;

            default:
                break;
            }
            return(strBuilder.ToString());
        }
 public async Task <IEnumerable <Question> > ListAsync([Required] ListParams parameters)
 {
     // Returns list of Questions
     return(await _repository.Questions.ToListAsync());
 }
 public Task <IEnumerable <Forum> > ListAsync(ListParams parameters)
 {
     return(MakeRequestAsync <IEnumerable <Forum> >(parameters));
 }
 public Task <PagedList <Restuarant> > GetRestuarantsAsync(ListParams listParams)
 {
     throw new NotImplementedException();
 }