public async Task <PagedList <MeetingDto> > GetMeetings(MeetingQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; try { var meetings = await _meetingRepository.GetMeetings(filters); var meetingsDto = meetings.Select(m => new MeetingDto { MeetingId = m.MeetingId, Description = m.Description, AdminId = m.AdminId, Date = m.Date, MaxPeople = m.MaxPeople, City = new CityDto { CityId = m.City.CityId, Name = m.City.Name, Latitude = m.City.Latitude, Longitude = m.City.Longitude } }).AsEnumerable(); return(PagedList <MeetingDto> .Create(meetingsDto, filters.PageNumber, filters.PageSize)); } catch (Exception ex) { throw new ChallengeException(ex.Message); } }
public async Task <IActionResult> GetMeetings([FromQuery] MeetingQueryFilter filters) { var meetingsDto = await _meetingService.GetMeetings(filters); var metadata = new Metadata { TotalCount = meetingsDto.TotalCount, PageSize = meetingsDto.PageSize, CurrentPage = meetingsDto.CurrentPage, TotalPages = meetingsDto.TotalPages, HasNextPage = meetingsDto.HasNextPage, HasPreviousPage = meetingsDto.HasPreviousPage, }; if (meetingsDto.Count > 0) { var response = new ApiResponse <IEnumerable <MeetingDto> >(meetingsDto) { Metadata = metadata }; // Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); } return(NoContent()); }