public async Task <List <ToolDetailsViewModel> > Search(SearchFilterDto dto, PagingDto pagingDto) { try { if (pagingDto.PageSize == 0) { pagingDto.PageSize = 2; } if (pagingDto.PageNumber == 0) { pagingDto.PageNumber = 1; } _logger.LogInformation("Search: Title = " + dto.Title + "/Creator = " + dto.FullName + "/Tag = " + dto.Tag + "/Description = " + dto.Description); var result = await _databaseConnectService.Connection.FindAsync <Tool>(x => x .Include <Tool_Tag>(join => join.LeftOuterJoin()) .Include <Tag>(join => join.LeftOuterJoin()) .Include <Users>(join => join.LeftOuterJoin()) .Include <Rate>(join => join.LeftOuterJoin()) .Where($"Tool.Title LIKE @title and Users.FullName LIKE @fullName and Tag.Name LIKE @tag and Tool.Description LIKE @desc") .WithParameters(new { title = string.Format("%{0}%", dto.Title), fullName = string.Format("%{0}%", dto.FullName), tag = string.Format("%{0}%", dto.Tag), desc = string.Format("%{0}%", dto.Description) }) ); var data = result.Skip((pagingDto.PageNumber - 1) * pagingDto.PageSize).Take(pagingDto.PageSize) .Select(x => ToToolDetailsViewModel(x)).ToList(); return(data); } catch (Exception ex) { throw ex; } }
public async Task <IActionResult> GetFilteredStores([FromBody] JObject searchFilterDtoJObject) { var searchFilterDto = new SearchFilterDto(searchFilterDtoJObject); var stores = await _filterRepository.GetFilteredStores(searchFilterDto); return(Ok(stores)); }
public IActionResult List([FromForm] SearchFilterDto filterDto) { var errors = ValidateSearchFilter(filterDto); if (errors.Count() > 0) { return(BadRequest(string.Join(Environment.NewLine, errors.ToArray()))); } var items = _toDoService.GetToDoItems(ConvertFilter(filterDto)); return(Ok(items)); }
/// <summary> /// Преобразует входящий фильтр в фильтр для выборки, который будет передан в сервис. /// </summary> /// <param name="filterDto">Входяций фильтр.</param> private SearchItemFilter ConvertFilter(SearchFilterDto filterDto) { var filter = new SearchItemFilter { PageNumber = filterDto.Current != 0 ? filterDto.Current - 1 : filterDto.Current, TakeCount = filterDto.RowCount, SearchPhrase = filterDto.SearchPhrase }; var sortType = Request.Form.TryGetValue("sort[itemType]", out var sortItemsType); if (sortType) { filter.SortType = sortType; filter.SortTypeDesc = string.Equals(sortItemsType, "desc", StringComparison.InvariantCultureIgnoreCase); } var sortDateStart = Request.Form.TryGetValue("sort[startDateString]", out var sortStartDateType); if (sortDateStart) { filter.SortStartDate = sortDateStart; filter.SortStartDateDesc = string.Equals(sortStartDateType, "desc", StringComparison.InvariantCultureIgnoreCase); } var sortDateEnd = Request.Form.TryGetValue("sort[endDateString]", out var sortEndDateType); if (sortDateEnd) { filter.SortEndDate = sortDateEnd; filter.SortEndDateDesc = string.Equals(sortEndDateType, "desc", StringComparison.InvariantCultureIgnoreCase); } filter.ItemType = int.TryParse(filterDto.Type, out var itemType) ? (ToDoTypeEnum)itemType : ToDoTypeEnum.AllTypes; filter.PeriodType = int.TryParse(filterDto.TimePeriod, out var periodType) ? (TimePeriodEnum)periodType : TimePeriodEnum.AllTime; if (DateTime.TryParse(filterDto.StartDateSearch, out var StartDT)) { filter.SearchStartDate = StartDT; } if (DateTime.TryParse(filterDto.EndDateSearch, out var EndDT)) { filter.SearchEndDate = EndDT; } return(filter); }
public async Task <ICollection <StoreDto> > GetFilteredStores(SearchFilterDto searchFilters) { searchFilters.Name = searchFilters.Name ?? ""; searchFilters.Neighborhood = searchFilters.Neighborhood ?? ""; Func <Store, bool> filterStoreByTypeExpression = store => store.Type == searchFilters.StoreType; Func <Store, bool> filterStoreByNameExpression = store => store.Name.ToLower().Contains(searchFilters.Name.ToLower()); Func <Store, bool> filterStoreByNeighborhood = store => store.Neighborhood.ToLower().Contains(searchFilters.Neighborhood.ToLower()); Expression <Func <Store, bool> > filtersCombinedExpression; if (searchFilters.StoreType == StoreType.All) { filtersCombinedExpression = store => filterStoreByNameExpression(store) && filterStoreByNeighborhood(store); } else { filtersCombinedExpression = store => filterStoreByNameExpression(store) && filterStoreByNeighborhood(store) && filterStoreByTypeExpression(store); } var stores = _dbLjepotaServisContext.Stores.Where(filtersCombinedExpression).ToList(); var allStoreReservationsGroupedByStoreId = await _dbLjepotaServisContext .ReservationServices .Where(reservationService => stores.Any(store => store.Id == reservationService.Service.StoreId)) .Join(_dbLjepotaServisContext.Reservations, reservationService => reservationService.ReservationId, reservation => reservation.Id, (service, reservation) => new { service, reservation }) .GroupBy(joined => joined.service.Service.StoreId, joined => joined.reservation, (storeId, reservation) => new { storeId, reservation }) .ToListAsync(); var storeListDto = stores.Select(store => { var storeReservations = allStoreReservationsGroupedByStoreId.FirstOrDefault(grouped => grouped.storeId == store.Id); var rating = storeReservations?.reservation.Sum(storeRes => storeRes.Rating) / storeReservations?.reservation.Count() ?? 0; return(store.ProjectStoreToStoreDto(rating)); }).ToList(); return(storeListDto); }
/// <summary> /// Валидирует входные параметры фильтра. /// </summary> /// <param name="filter">Фильтр.</param> /// <returns>Список ошибок валидации, либо пустой список, если ошибок нет.</returns> private List <string> ValidateSearchFilter(SearchFilterDto filter) { var errors = new List <string>(); if (filter == null) { errors.Add("Фильтр для поиска не может быть пустым"); return(errors); } if (filter.Current < 0) { errors.Add("Номер текущей страницы не может быть меньше 0"); } if (filter.RowCount < 0) { errors.Add("Количество запрашиваемых элементов не может быть меньше 0"); } return(errors); }
public async Task <List <ToolDetailsViewModel> > Search(SearchFilterDto dto, PagingDto pagingDto) { var result = await _toolService.Search(dto, pagingDto); return(result); }
public async Task <DishSearchResultDto> Get([FromBody] SearchFilterDto searchFilter) { var result = await Task.FromResult(new DishSearchResultDto()); return(result); }
public ActionResult Find([FromBody] SearchFilterDto inspectionCenterDto) { return(Ok(_inspectionCenterManager.Find(inspectionCenterDto.Name, (PageQuery)inspectionCenterDto))); }