public async Task <IActionResult> Index(UsersAdminCustomerSearchViewModel searchModel) { ViewBag.organizations = await _userOrganizationRepository.GetOrganizationFullByUserId(this.UserId); var model = await _userRepository.LoadAsyncForAdminCustomerCount( this.UserId, this.CurrentPage, this.PageSize, searchModel); this.TotalNumber = model.Item1; ViewBag.SearchModel = searchModel; return(View(model.Item2)); }
public async Task <Tuple <int, List <UsersAdminCustomerDTO> > > LoadAsyncForAdminCustomerCount( int userId, int skip = -1, int take = -1, UsersAdminCustomerSearchViewModel model = null) { /// لیست سازمانهایی که این کاربر به آنها دسترسی دارد List <int> organizationIds = await _userOrganizationRepository.GetOrganizationByUserId(userId); // درصورتی که این کاربر در هیچ سازمانی عضو نشده باشد // چیزی نداریم که به کاربر نمایش بدهیم if (organizationIds == null || organizationIds.Count == 0) { return(new Tuple <int, List <UsersAdminCustomerDTO> >(0, new List <UsersAdminCustomerDTO>())); } var query = (from user in DbContext.Users where user.Id != userId join userOrganization in DbContext.UserOrganization on user.Id equals userOrganization.UserId where organizationIds.Contains(userOrganization.OrganizationId) join organization in DbContext.Organization on userOrganization.OrganizationId equals organization.Id select new UsersAdminCustomerDTO { Id = user.Id, UserName = user.UserName, FirstName = user.FirstName + " " + user.LastName, LastName = user.LastName, CreateDate = user.CreateDate, Email = user.Email, IsActive = user.IsActive, IsModerator = user.IsModerator, OrganizationId = organization.Id, PhoneNumber = user.PhoneNumber, OrganizationTitle = organization.OrganizationTitle }); // نام کاربری if (!string.IsNullOrEmpty(model.UserName)) { query = query.Where(x => x.UserName.Contains(model.UserName)); } // ایمیل if (!string.IsNullOrEmpty(model.Email)) { query = query.Where(x => x.Email.Contains(model.Email)); } // شماره موبایل if (!string.IsNullOrEmpty(model.PhoneNumber)) { query = query.Where(x => x.PhoneNumber.Contains(model.PhoneNumber)); } // نام if (!string.IsNullOrEmpty(model.FirstName)) { query = query.Where(x => x.FirstName.Contains(model.FirstName) || x.LastName.Contains(model.FirstName)); } // فعال / غیرفعال if (model.IsActive != null) { query = query.Where(x => x.IsActive == model.IsActive); } if (model.IsModerator != null) { query = query.Where(x => x.IsModerator == model.IsModerator); } int Count = query.Count(); query = query.OrderByDescending(x => x.Id); if (skip != -1) { query = query.Skip((skip - 1) * take); } if (take != -1) { query = query.Take(take); } return(new Tuple <int, List <UsersAdminCustomerDTO> >(Count, await query.ToListAsync())); }