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