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);
        }
示例#3
0
        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("&lt;1van1saw3s0me&gt;", "<em>")
                //.Replace("&lt;/1van1saw3s0me&gt;", "</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));
        }
示例#4
0
        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);
        }