Beispiel #1
0
        public async Task <PageResultDto <UserDetailDto> > SearchAsync(AccountQuerySearch param)
        {
            var query = _unitOfWork.UserRepository.FindAll()
                        .Include(x => x.UserDetail)
                        .Include(x => x.Address)
                        .Include(x => x.UserRole)
                        .ThenInclude(x => x.Role)
                        .AsQueryable();

            switch (param.UserType)
            {
            case UserType.Administrator:
            {
                query = query.Where(x => x.UserRole.Role.Name.Equals(UserRoles.Administrator));
                break;
            }

            case UserType.Child:
            {
                query = query.Where(x => x.UserRole.Role.Name.Equals(UserRoles.Child));
                break;
            }

            case UserType.Parent:
            {
                query = query.Where(x => x.UserRole.Role.Name.Equals(UserRoles.Parent));
                break;
            }

            case UserType.Giver:
            {
                query = query.Where(x => x.UserRole.Role.Name.Equals(UserRoles.Giver));
                break;
            }

            default:
            {
                query = query.Where(x => x.UserRole.Role.Name.Equals(UserRoles.Parent) || x.UserRole.Role.Name.Equals(UserRoles.Giver));
                break;
            }
            }

            if (param.IsOwner)
            {
                query = query.Where(x => x.CreatedBy.Equals(UserId));
            }

            if (!string.IsNullOrEmpty(param.SearchKey))
            {
                query = query.Where(x => EF.Functions.Like(x.UserDetail.FirstName, $"%{param.SearchKey}%") ||
                                    EF.Functions.Like(x.UserDetail.LastName, $"%{param.SearchKey}%"));
            }

            var result = await query.OrderByDescending(x => x.CreatedAt).Skip(param.GetSkip()).Take(param.GetTake()).ToListAsync();

            return(new PageResultDto <UserDetailDto>(await query.CountAsync(), GetTotalPage(await query.CountAsync(), param.GetTake()), result.Select(x => x.ToDetailDto())));
        }
Beispiel #2
0
        public async Task <JsonResult> SearchAccount([DataTablesRequest] DataTablesRequest dataRequest)
        {
            var dto = new AccountQuerySearch()
            {
                Page     = (dataRequest.Start / dataRequest.Length) + 1,
                Size     = dataRequest.Length,
                UserType = UserType.Administrator
            };

            if (!string.IsNullOrEmpty(dataRequest.Search?.Value))
            {
                dto.SearchKey = dataRequest.Search?.Value;
            }

            var response = await _accountService.SearchAsync(dto);

            return(Json(response.Items.ToDataTablesResponse(dataRequest, response.TotalRecord, response.TotalRecord)));
        }
Beispiel #3
0
        public async Task <JsonResult> SearchAccount([DataTablesRequest] DataTablesRequest dataRequest)
        {
            if (!string.IsNullOrEmpty(dataRequest?.Search?.Value))
            {
                var dto = new AccountQuerySearch()
                {
                    Page      = (dataRequest.Start / dataRequest.Length) + 1,
                    Size      = dataRequest.Length,
                    UserType  = UserType.Child,
                    SearchKey = dataRequest.Search.Value
                };

                var response = await _accountService.SearchAsync(dto);

                return(Json(response.Items.ToDataTablesResponse(dataRequest, response.TotalRecord, response.TotalRecord)));
            }

            return(Json(new List <UserDetailDto>().ToDataTablesResponse(dataRequest, 0, 0)));
        }
Beispiel #4
0
        public async Task <PageResultDto <UserDetailDto> > SearchAsync(AccountQuerySearch accountQuerySearch)
        {
            var response = await GetAsync(string.Format(SEARCH, accountQuerySearch.GetQueryString()));

            return(await response.Content.ReadAsAsync <PageResultDto <UserDetailDto> >());
        }
Beispiel #5
0
 public async Task <IActionResult> Search([FromQuery] AccountQuerySearch param)
 {
     return(Ok(await _accountService.SearchAsync(param)));
 }
Beispiel #6
0
 public async Task <PageResultDto <UserDetailDto> > SearchAsync(AccountQuerySearch accountQuerySearch)
 {
     return(await _oppJarProxy.SearchAsync(accountQuerySearch));
 }