Ejemplo n.º 1
0
        /// <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)));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        /// <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));
        }
Ejemplo n.º 5
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.º 6
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));
        }
Ejemplo n.º 7
0
        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);
        }