public async Task <IActionResult> ListAsync([FromForm] DataTableParameterModel dataTableParameterModel) { var draw = dataTableParameterModel.Draw; var length = dataTableParameterModel.Length; int pageSize = length != null?Convert.ToInt32(length) : 20; var startIndex = Convert.ToInt32(dataTableParameterModel.Start); var filterSpec = new ArchiveVideoFilteredSpec(dataTableParameterModel.Search); var totalRecords = await _repository.CountAsync(filterSpec); var currentUserName = User.Identity !.Name; var applicationUser = await _userManager.FindByNameAsync(currentUserName); var memberSpec = new MemberByUserIdWithFavoriteArchiveVideosSpec(applicationUser.Id); var member = await _memberRepository.GetBySpecAsync(memberSpec); if (member is null) { return(Unauthorized()); } var pagedSpec = new ArchiveVideoByPageSpec(startIndex, pageSize, dataTableParameterModel.Search, dataTableParameterModel.FilterFavorites, member.Id); var archiveVideos = await _repository.ListAsync(pagedSpec); var archiveVideosDto = archiveVideos.Select(av => new ArchiveVideoDto { AnimatedThumbnailUri = av.AnimatedThumbnailUri, DateCreated = av.DateCreated, DateUploaded = av.DateUploaded, Description = av.Description, Duration = av.Duration, IsMemberFavorite = member.FavoriteArchiveVideos.Any(fav => fav.ArchiveVideoId == av.Id), MemberFavoritesCount = av.MemberFavorites.Count(), ShowNotes = av.ShowNotes, Status = av.Status, Title = av.Title, VideoId = av.VideoId, VideoUrl = av.VideoUrl, Views = av.Views }); var jsonData = new { draw = draw, recordsFiltered = totalRecords, recordsTotal = totalRecords, data = archiveVideosDto }; return(Ok(jsonData)); }
public async Task <IActionResult> ListAsync([FromForm] DataTableParameterModel dataTableParameterModel) { var draw = dataTableParameterModel.Draw; var length = dataTableParameterModel.Length; int pageSize = length != null?Convert.ToInt32(length) : 20; var startIndex = Convert.ToInt32(dataTableParameterModel.Start); var filterSpec = new ArchiveVideoFilteredSpec(dataTableParameterModel.Search); var totalRecords = await _repository.CountAsync(filterSpec); var pagedSpec = new ArchiveVideoByPageSpec(startIndex, pageSize, dataTableParameterModel.Search); var archiveVideos = await _repository.ListAsync(pagedSpec); var archiveVideosDto = _mapper.Map <List <ArchiveVideoDto> >(archiveVideos); var jsonData = new { draw = draw, recordsFiltered = totalRecords, recordsTotal = totalRecords, data = archiveVideosDto }; return(Ok(jsonData)); }