public async Task <IActionResult> GetSearchUserAsync( Guid examCategoryId, [FromQuery] int?p = 1, [FromQuery] string filter = "") { if (examCategoryId == Guid.Empty) { return(PartialView(AppTheme.ContentNothing)); } var examCat = await _ExamCategoryService.GetSimpify(examCategoryId); if (examCat.Success) { ViewBag.CurrentExamCategory = examCat.Data; } else { return(PartialView(AppTheme.ContentNothing)); } if (p == null || p <= 0) { p = 1; } ViewBag.p = p.Value; var serchInp = new GetAppUserDTO { Filter = filter ?? "", MaxResultCount = AppTheme.Limit, SkipCount = (p.Value - 1) * AppTheme.Limit, }; var res = await _ExamCatInstructService.GetInstructorsAsync(examCategoryId, serchInp); if (res.Success) { PagedResultDto <AppUserDTO> Containers = res.Data; string listRes = string.Format("Showing {0} to {1} of {2} entries", res.Data.TotalCount > 0 ? serchInp.SkipCount + 1 : 0, serchInp.SkipCount + res.Data.Items.Count, res.Data.TotalCount); if (!filter.IsNullOrEmpty()) { listRes += string.Format(" for \"{0}\"", serchInp.Filter); } ViewBag.ListState = listRes; ViewBag.Filter = filter; ViewBag.Pagination = PaginateHelper.Generate( "javascript:syncVt('" + examCategoryId + "','{0}', '" + filter + "');", p.Value, Containers.TotalCount, AppTheme.Limit); return(PartialView(UserTableView, Containers)); } else { return(PartialView(AppTheme.ContentNothing)); } }
public async Task <ResponseWrapper <PagedResultDto <AppUserDTO> > > GetInstructorsAsync(Guid ExamCatInstructorId, GetAppUserDTO input) { if (input.Sorting.IsNullOrWhiteSpace()) { input.Sorting = nameof(AppUser.Name); } var currentInstructorIds = Repository .Where(x => x.ExamCategoryId == ExamCatInstructorId) .Select(x => x.UserId).ToList(); var query = await _AppUserRepository.GetQueryableAsync(); query = query.Where(x => !currentInstructorIds.Contains(x.Id)); if (!input.Filter.IsNullOrWhiteSpace()) { query = query.Where(user => user.DisplayName.Contains(input.Filter) || user.Surname.Contains(input.Filter) || user.Name.Contains(input.Filter) || user.PhoneNumber.Contains(input.Filter) || user.IdentityCardNumber.Contains(input.Filter) || user.UserName.Contains(input.Filter) || user.Email.Contains(input.Filter)); } var users = query .OrderBy(input.Sorting) .Skip(input.SkipCount) .Take(input.MaxResultCount) .ToList(); return(new ResponseWrapper <PagedResultDto <AppUserDTO> >( new PagedResultDto <AppUserDTO>( query.Count(), ObjectMapper.Map <List <AppUser>, List <AppUserDTO> >(users)), "Successful")); }