Ejemplo n.º 1
0
        public async Task <IActionResult> Search(string term)
        {
            //excluding admin user
            IQueryable <Employee> query = _dbContext.Employees.Include(x => x.User).Where(us => us.Id != 1);

            //creating dynamic search query
            query = query
                    .Where(en => EF.Functions.Like(en.User.FirstName, $"%{term}%") ||
                           EF.Functions.Like(en.User.LastName, $"%{term}%") ||
                           EF.Functions.Like(en.User.UserName, $"%{term}%"));

            // Execute the query
            var employees = await query.ToListAsync();

            List <EmployeeDTO> ret = (from Employee emp in employees
                                      select _mapper.Map <EmployeeDTO>(emp)).ToList();

            SearchResultDTO <EmployeeDTO> result = new DTO.SearchResultDTO <EmployeeDTO>()
            {
                PageNo   = 1,
                PageSize = 100,
                Data     = ret
            };

            return(Ok(result));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Search(SearchQueryDTO <ReviewDTO> request)
        {
            //excluding admin user
            IQueryable <Review> query = _dbContext.Reviews;

            //creating dynamic search query
            if (!string.IsNullOrEmpty(request.FreeText))
            {
                query = query
                        .Where(en => EF.Functions.Like(en.Reviewer.User.UserName, $"%{request.FreeText}%") ||
                               EF.Functions.Like(en.Employee.User.UserName, $"%{request.FreeText}%") ||
                               EF.Functions.Like(en.Name, $"%{request.FreeText}%") ||
                               en.Id == request.SearchModel.ReviewerId);
            }
            else
            {
                query = query
                        .Where(en => (request.SearchModel.ReviewerId == 0 || en.Reviewer.Id == request.SearchModel.ReviewerId) &&
                               (request.SearchModel.EmployeeId == 0 || en.Employee.Id == request.SearchModel.EmployeeId) &&
                               (request.SearchModel.StatusId == 0 || en.Status == (ReviewStatus)request.SearchModel.StatusId) &&
                               (string.IsNullOrEmpty(request.SearchModel.Name) || EF.Functions.Like(en.Name, $"%{request.SearchModel.Name}%")) &&
                               (request.SearchModel.ReviewId == 0 || en.Id == request.SearchModel.ReviewId));
            }

            // Execute the query
            var totalCount = await query.CountAsync();

            var reviews = await query
                          .Include(x => x.Reviewer.User)
                          .Include(x => x.Employee.User)
                          .Skip(request.PageSize * (request.PageNo - 1))
                          .Take(request.PageSize).ToListAsync();

            List <ReviewDTO> ret = (from Review review in reviews
                                    select _mapper.Map <ReviewDTO>(review)).ToList();

            SearchResultDTO <ReviewDTO> result = new DTO.SearchResultDTO <ReviewDTO>()
            {
                PageNo       = request.PageNo,
                PageSize     = request.PageSize,
                TotalRecords = totalCount,
                Data         = ret
            };

            return(Ok(result));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> SearchUser(SearchQueryDTO <EmployeeDTO> request)
        {
            //excluding admin user
            IQueryable <Employee> query = _dbContext.Employees.Include(x => x.User).Where(us => us.Id != 1);

            //creating dynamic search query
            if (!string.IsNullOrEmpty(request.FreeText))
            {
                query = query
                        .Where(en => EF.Functions.Like(en.User.FirstName, $"%{request.FreeText}%") ||
                               EF.Functions.Like(en.User.LastName, $"%{request.FreeText}%") ||
                               EF.Functions.Like(en.User.UserName, $"%{request.FreeText}%") ||
                               en.Id == request.SearchModel.EmployeeId);
            }
            else
            {
                query = query
                        .Where(en => (string.IsNullOrEmpty(request.SearchModel.FirstName) || EF.Functions.Like(en.User.FirstName, $"%{request.SearchModel.FirstName}%")) &&
                               (string.IsNullOrEmpty(request.SearchModel.LastName) || EF.Functions.Like(en.User.LastName, $"%{request.SearchModel.LastName}%")) &&
                               (string.IsNullOrEmpty(request.SearchModel.UserName) || EF.Functions.Like(en.User.UserName, $"%{request.SearchModel.UserName}%")) &&
                               (request.SearchModel.EmployeeId == 0 || en.Id == request.SearchModel.EmployeeId));
            }

            // Execute the query
            var totalCount = await query.CountAsync();

            var employees = await query.Skip(request.PageSize *(request.PageNo - 1))
                            .Take(request.PageSize).ToListAsync();

            List <EmployeeDTO> ret = (from Employee emp in employees
                                      select _mapper.Map <EmployeeDTO>(emp)).ToList();

            SearchResultDTO <EmployeeDTO> result = new DTO.SearchResultDTO <EmployeeDTO>()
            {
                PageNo       = request.PageNo,
                PageSize     = request.PageSize,
                TotalRecords = totalCount,
                Data         = ret
            };

            return(Ok(result));
        }