예제 #1
0
        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);
            }
        }
예제 #2
0
        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());
        }