Пример #1
0
        public SearchResultObject <GroupSearchResult> SearchGroupUser(GroupUserSearchCondition searchCondition)
        {
            db = new TimeAttendanceEntities();

            SearchResultObject <GroupSearchResult> searchResult = new SearchResultObject <GroupSearchResult>();

            try
            {
                List <string> userDelete = db.User.AsNoTracking().Where(r => r.DeleteFlg == Constants.DeleteTrue).Select(p => p.UserId).ToList();
                var           listmodel  = (from a in db.Group.AsNoTracking()
                                            join b in db.UserGroup.AsNoTracking() on a.GroupId equals b.GroupId into ab
                                            select new GroupSearchResult()
                {
                    GroupId = a.GroupId,
                    Name = a.Name,
                    HomePage = a.HomePage,
                    Status = a.Status,
                    Description = a.Description,
                    CreateBy = a.CreateBy,
                    CreateDate = a.CreateDate,
                    UpdateBy = a.UpdateBy,
                    UpdateDate = a.UpdateDate,
                    CountUser = ab.Where(r => !userDelete.Any(w => w.Equals(r.UserId))).Count(),
                }).AsQueryable();
                if (!string.IsNullOrEmpty(searchCondition.Name))
                {
                    listmodel = listmodel.Where(r => r.Name.ToLower().Contains(searchCondition.Name.ToLower()));
                }
                if (!string.IsNullOrEmpty(searchCondition.Description))
                {
                    listmodel = listmodel.Where(r => r.Description.ToLower().Contains(searchCondition.Description.ToLower()));
                }
                if (searchCondition.Status.HasValue)
                {
                    listmodel = listmodel.Where(r => r.Status.HasValue && r.Status.Value == searchCondition.Status.Value);
                }

                searchResult.TotalItem  = listmodel.Select(r => r.GroupId).Count();
                searchResult.ListResult = SQLHelpper.OrderBy(listmodel, searchCondition.OrderBy, searchCondition.OrderType).Skip((searchCondition.PageNumber - 1) * searchCondition.PageSize)
                                          .Take(searchCondition.PageSize)
                                          .ToList();

                return(searchResult);
            }
            catch (Exception ex)
            {
                throw new ErrorException(ErrorMessage.ERR001, ex.InnerException);
            }
        }
        public HttpResponseMessage SearchGroupUser(GroupUserSearchCondition userSearchConditionEntity, [FromUri] int pageSize, [FromUri] int pageNumber)
        {
            try
            {
                userSearchConditionEntity.PageSize   = pageSize;
                userSearchConditionEntity.PageNumber = pageNumber;
                SearchResultObject <GroupSearchResult> result = _groupUserBusiness.SearchGroupUser(userSearchConditionEntity);

                return(Request.CreateResponse(HttpStatusCode.OK, result));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex.InnerException);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }