public async Task <DataWithCount <ICollection <PsProgram> > > PageAsync( PerformerSchedulingFilter filter) { var programs = DbSet.AsNoTracking(); if (filter.AgeGroupId.HasValue) { programs = programs .Join(_context.PsProgramAgeGroups.Where(_ => _.AgeGroupId == filter.AgeGroupId.Value), program => program.Id, ageGroup => ageGroup.ProgramId, (program, _) => program); } if (filter.IsApproved.HasValue) { programs = programs.Where(_ => _.Performer.IsApproved == filter.IsApproved); } var count = await programs.CountAsync(); var programList = await programs .OrderBy(_ => _.Performer.Name) .ThenBy(_ => _.Title) .ApplyPagination(filter) .ProjectTo <PsProgram>(_mapper.ConfigurationProvider) .ToListAsync(); return(new DataWithCount <ICollection <PsProgram> > { Data = programList, Count = count }); }
public async Task <IActionResult> Programs(int page = 1, int?ageGroup = null) { var settings = await _performerSchedulingService.GetSettingsAsync(); var schedulingStage = _performerSchedulingService.GetSchedulingStage(settings); if (schedulingStage < PsSchedulingStage.SchedulingPreview) { return(RedirectToAction(nameof(Index))); } var filter = new PerformerSchedulingFilter(page, ProgramsPerPage) { AgeGroupId = ageGroup, IsApproved = true }; var programList = await _performerSchedulingService.GetPaginatedProgramListAsync(filter); var paginateModel = new PaginateViewModel { ItemCount = programList.Count, CurrentPage = page, ItemsPerPage = filter.Take.Value }; if (paginateModel.PastMaxPage) { return(RedirectToRoute( new { page = paginateModel.LastPage ?? 1 })); } var systemId = GetId(ClaimType.SystemId); foreach (var program in programList.Data) { program.AvailableInSystem = await _performerSchedulingService .GetPerformerSystemAvailabilityAsync(program.PerformerId, systemId); } var viewModel = new ProgramListViewModel { Programs = programList.Data, PaginateModel = paginateModel, AgeGroups = await _performerSchedulingService.GetAgeGroupsAsync(), AgeGroupId = ageGroup }; return(View(viewModel)); }
public async Task <DataWithCount <ICollection <PsPerformer> > > PageAsync( PerformerSchedulingFilter filter) { var performers = DbSet.AsNoTracking(); if (filter.IsApproved.HasValue) { performers = performers.Where(_ => _.IsApproved == filter.IsApproved); } var count = await performers.CountAsync(); var performerList = await performers .OrderBy(_ => _.Name) .ApplyPagination(filter) .ProjectTo <PsPerformer>(_mapper.ConfigurationProvider) .ToListAsync(); return(new DataWithCount <ICollection <PsPerformer> > { Data = performerList, Count = count }); }