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));
    }