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)); } }