/// <summary> /// Creates search query /// </summary> /// <param name="query">search query</param> /// <returns></returns> public SearchQueryDTO Add(SearchQueryDTO query) { SearchQueryDB queryDb = new SearchQueryDB() { Id = query.Id, Created = query.Date, Query = query.Query, UserId = query.UserId }; return(_mapper.Map <SearchQueryDB, SearchQueryDTO>(_searchQueryDb.Add(queryDb))); }
public async Task <IHttpActionResult> Create([FromBody, CustomizeValidator] SearchQueryDTO query) { if (query == null || !ModelState.IsValid) { return(BadRequest(ModelState)); } var result = await _searchQueryService.AddAsync(query); return(result.IsError ? BadRequest(result.Message) : (IHttpActionResult)Ok(result.Data)); }
public IHttpActionResult SearchByQuery([FromBody] SearchQueryDTO query) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _searchQueryService.Add(query); var result = _searchService.Search(query.Query); return(result == null?NotFound() : (IHttpActionResult)Ok(result)); }
/// <summary> /// Creates search query async /// </summary> /// <param name="query">search query</param> /// <returns></returns> public async Task <Result <SearchQueryDTO> > AddAsync(SearchQueryDTO query) { SearchQueryDB queryDb = new SearchQueryDB() { Id = query.Id, Created = query.Date, Query = query.Query, UserId = query.UserId }; var result = await _searchQueryDb.AddAsync(queryDb); return(result.IsSuccess ? Result <SearchQueryDTO> .Ok(_mapper.Map <SearchQueryDTO>(result.Data)) : Result <SearchQueryDTO> .Fail <SearchQueryDTO>(result.Message)); }
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)); }
public void add_search_query() { var DbService = new SearchQueryDbService(mockContext.Object); var mockLogicService = new Mock <SearchQueryService>(); var service = new SearchQueryService(mapper, DbService); //Act var b = new SearchQueryDTO { Id = "1", Date = DateTime.Now, Query = "search query" }; var q = service.Add(b); var all = DbService.GetAll().Count(); //Assert mockContext.Verify(m => m.SaveChanges(), Times.Once()); Assert.AreEqual(q.Query, b.Query); }