public virtual async Task <ActionResult <PagedData <UserDto> > > Search(SearchPageDto <UsersFilterDto> searchPageDto) { var query = _userManager.Users .Where(x => (string.IsNullOrEmpty(searchPageDto.Criteria.UserName) || x.UserName.ToUpper().Contains(searchPageDto.Criteria.UserName.ToUpper())) && (string.IsNullOrEmpty(searchPageDto.Criteria.FirstNameEn) || x.FirstNameEn.ToUpper().Contains(searchPageDto.Criteria.FirstNameEn.ToUpper())) && (searchPageDto.Criteria.Role == null || x.UserRoles.Select(r => r.RoleId).Contains(searchPageDto.Criteria.Role.Id)) && (searchPageDto.Criteria.Application == null || x.UserApplications.Select(r => r.ApplicationId).Contains(searchPageDto.Criteria.Application.Id)) && (x.IsDeleted == false)); var users = await query.Select(x => new UserDto { Id = x.Id, UserName = x.UserName, FirstNameEn = x.FirstNameEn, LastNameEn = x.LastNameEn, EmailAddress = x.EmailAddress, Password = x.Password, IDN = x.IDN, DateOfBirth = x.DateOfBirth, Gender = x.Gender, Street = x.Street, City = x.City, CreatedBy = x.CreatedBy, CreatedDate = x.CreatedDate, ModifiedBy = x.ModifiedBy, ModifiedDate = x.ModifiedDate, IsDeleted = x.IsDeleted, Roles = x.UserRoles.Select(ur => ur.Role.Name).ToList(), Applications = string.Join(", ", x.UserApplications.Select(ur => ur.Application.Code)) }) .Skip(searchPageDto.PageIndex * searchPageDto.PageSize).Take(searchPageDto.PageSize).ToListAsync(); var result = new PagedData <UserDto>(); result.Data = users.Adapt <IList <UserDto> >(); result.TotalCount = await query.CountAsync(); return(result); }
public virtual async Task <ActionResult <Domain.PagedData <NoAuthUserDto> > > login(SearchPageDto <NoAuthUserDto> searchPageDto) { _searchSpecification = _searchSpecification .And(s => (searchPageDto.Criteria.EmailAddress == s.EmailAddress) && (searchPageDto.Criteria.Password == s.Password)); var result = await _repository.PageAsync <NoAuthUserDto>(_searchSpecification, searchPageDto.PageIndex, searchPageDto.PageSize, searchPageDto.SortBy, OrderDirectionEnum.OrderByDescending); return(result); }
public ActionResult GridAjax(string keyword, Int32?page = 1, Int32?rows = 20) { var settings = new ConnectionSettings(new System.Uri(_esConnectionOptions.Host)) .DefaultIndex("uri").BasicAuthentication(_esConnectionOptions.Username, _esConnectionOptions.Password); var elasticClient = new ElasticClient(settings); var searchResponse = elasticClient.Search <UriDocument>(s => s //.Query(q =>q // .Match(m=>m.Query(keyword).Field(o=>o.BrowserText)) //) .Query(q => q.Match(m => m.Query(keyword).Field(o => o.AbsoluteUri)) || q.Match(m => m.Query(keyword).Field(o => o.BrowserText)) || q.Match(m => m.Query(keyword).Field(o => o.BrowserHtml)) || q.Match(m => m.Query(keyword).Field(o => o.OriginalUriString)) ) //.Explain(true) //.Sort(sort=>sort.Descending(i=>i)) .From(rows * (page - 1)) .Size(rows) //.StoredFields() .Highlight(h => h .PreTags("1vAn1Saw3s0me") .PostTags("em0s3waS1nAv1") .Fields( f => f.Field(o => o.AbsoluteUri) , f => f.Field(o => o.BrowserText) , f => f.Field(o => o.BrowserHtml) ) ) ); //foreach (var hit in searchResponse.Hits) //{ // var aggregate = hit.Highlight.Values // .Select(o => o.Aggregate((a, b) => a + "<br/>" + b)) // .Aggregate((o, n) => o + "<br/><br/>" + n); //} var total = searchResponse.Total; var hits = searchResponse.Hits.Select(o => o); var searchResponseHitsMetadata = searchResponse.HitsMetadata; var model = new SearchPageDto(); model.Result = hits.Select(h => { var item = new SearchUri { Uri = h.Source.AbsoluteUri, Highlight = h.Highlight.Any() ? h.Highlight.Select(o => o.Key == "browserHtml" ? o.Value.Select(v => HttpUtility.HtmlEncode(v)).Aggregate((a, b) => a + "<br/>" + b) : o.Value.Aggregate((a, b) => a + "<br/>" + b) ) .Aggregate((o, n) => o + "<hr/>" + n) : "", Score = h.Score.Value }; item.Highlight = item.Highlight .Replace("1vAn1Saw3s0me", "<em>") .Replace("em0s3waS1nAv1", "</em>"); //.Replace("<1van1saw3s0me>", "<em>") //.Replace("</1van1saw3s0me>", "</em>"); return(item); }).ToList(); model.Total = (int)total; var base64 = Request.Cookies["gridColumnSetting_search"]; if (base64 != null) { byte[] decodedBytes = Convert.FromBase64String(base64); string colSetting = System.Text.Encoding.UTF8.GetString(decodedBytes); var gridConfig = JsonConvert.DeserializeObject <GridConfig>(colSetting); //deserializeObject.columns.Select(o => o.name).ToList(); ViewBag.gridConfig = gridConfig; } return(PartialView("_SearchGridPartial", model)); }
public virtual async Task <ActionResult <Domain.PagedData <ComplaintDto> > > UserComplaints(SearchPageDto <ComplaintDto> searchPageDto) { _searchSpecification = _searchSpecification .And(s => (searchPageDto.Criteria.NoAuthUser == null || searchPageDto.Criteria.NoAuthUser.Id == s.NoAuthUser.Id)); var result = await _repository.PageAsync <ComplaintDto>(_searchSpecification, searchPageDto.PageIndex, searchPageDto.PageSize, searchPageDto.SortBy, OrderDirectionEnum.OrderByDescending); return(result); }