public async Task <PagedList <MeetingScheduleViewModel> > GetAsync(MeetingScheduleCriteria criteria) { var typeId = criteria.MeetingTypeId; var topicId = criteria.MeetingTopicId; var query = _unitOfWork.MeeitngAgendaUserRepository .GetQuery(x => x.UserId == criteria.Model.UserId && !x.IsRemoved) .Include(x => x.MeetingAgenda) .ThenInclude(x => x.MeetingTime) .ThenInclude(x => x.MeetingTopic) .ThenInclude(x => x.MeetingType) .Where(x => !x.MeetingAgenda.IsDraft && !x.MeetingAgenda.IsRemoved && !x.MeetingAgenda.MeetingTime.IsDraft && !x.MeetingAgenda.MeetingTime.IsRemoved && !x.MeetingAgenda.MeetingTime.MeetingTopic.IsDraft && !x.MeetingAgenda.MeetingTime.MeetingTopic.IsRemoved && !x.MeetingAgenda.MeetingTime.MeetingTopic.MeetingType.IsDraft && !x.MeetingAgenda.MeetingTime.MeetingTopic.MeetingType.IsRemoved && (topicId == 0 || topicId == x.MeetingAgenda.MeetingTime.MeetingTopicId) && (typeId == 0 || typeId == x.MeetingAgenda.MeetingTime.MeetingTopic.MeetingTypeId) ) .Select(x => new MeetingScheduleViewModel { Id = x.MeetingAgenda.MeetingTime.Id, UserId = x.UserId, MeetingType = x.MeetingAgenda.MeetingTime.MeetingTopic.MeetingType.Name, MeetingTopic = x.MeetingAgenda.MeetingTime.MeetingTopic.Name, MeetingTimeCount = x.MeetingAgenda.MeetingTime.Count, MeetingFiscalYear = x.MeetingAgenda.MeetingTime.FiscalYear, MeetingDateTime = x.MeetingAgenda.MeetingTime.MeetingDate, MeetingPlace = x.MeetingAgenda.MeetingTime.Location, }) .OrderByDescending(x => x.MeetingDateTime) .Distinct(); var count = await query.CountAsync(); var pageNumber = criteria.PageNumber; var pageSize = criteria.PageSize; var items = await query .Skip((pageNumber - 1) *pageSize) .Take(pageSize) .ToListAsync(); var paging = new PagedList <MeetingScheduleViewModel>( await query.ToListAsync(), count, pageNumber, pageSize); return(paging); }
public async Task <IActionResult> Get([FromQuery] MeetingScheduleCriteria criteria) { var userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); criteria.Model.UserId = userId; var viewModels = await _meetingScheduleManager.GetAsync(criteria); this.Response.AddPagination( viewModels.CurrentPage, viewModels.PageSize, viewModels.TotalCount, viewModels.TotalPages); return(Ok(viewModels)); }