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)); }
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)); }
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)); }