Beispiel #1
0
        public async Task <BaseViewModel <PagingResult <MyUserViewModel> > > GetAllMyUsers(BasePagingRequestViewModel request)
        {
            var    pageSize  = request.PageSize;
            var    pageIndex = request.PageIndex;
            var    result    = new BaseViewModel <PagingResult <MyUserViewModel> >();
            var    currentId = _repository.GetCurrentUserId();
            string filter    = SearchHelper <MyUser> .GenerateStringExpression(request.Filter, $"{Constants.DEAFAULT_DELETE_STATUS_EXPRESSION} && _.Id != new System.Guid(\"{currentId}\")");

            Expression <Func <MyUser, bool> > FilterExpression = await LinqHelper <MyUser> .StringToExpression(filter);

            QueryArgs <MyUser> queryArgs = new QueryArgs <MyUser>
            {
                Offset = pageSize * (pageIndex - 1),
                Limit  = pageSize,
                Filter = FilterExpression,
                Sort   = request.SortBy,
            };


            var data = _repository.Get(queryArgs.Filter, queryArgs.Sort, queryArgs.Offset, queryArgs.Limit).ToList();

            //var sql = data.ToSql();

            if (data == null || data.Count == 0)
            {
                result.Description = MessageHandler.CustomMessage(MessageConstants.NO_RECORD);
                result.Code        = MessageConstants.NO_RECORD;
            }
            else
            {
                var pageSizeReturn = pageSize;
                if (data.Count < pageSize)
                {
                    pageSizeReturn = data.Count;
                }
                result.Data = new PagingResult <MyUserViewModel>
                {
                    Results      = _mapper.Map <IEnumerable <MyUserViewModel> >(data),
                    PageIndex    = pageIndex,
                    PageSize     = pageSizeReturn,
                    TotalRecords = _repository.Count(queryArgs.Filter)
                };
            }

            return(result);
        }