public async Task <IActionResult> PutToggleFavoriteVideo([FromRoute] string vimeoVideoId)
    {
        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 videoSpec    = new ArchiveVideoByVideoIdSpec(vimeoVideoId);
        var archiveVideo = await _repository.GetBySpecAsync(videoSpec);

        if (archiveVideo == null)
        {
            return(NotFound($"Video Not Found {vimeoVideoId}"));
        }

        if (member.FavoriteArchiveVideos.Any(v => v.ArchiveVideoId == archiveVideo.Id))
        {
            member.RemoveFavoriteArchiveVideo(archiveVideo);
        }
        else
        {
            member.AddFavoriteArchiveVideo(archiveVideo);
        }

        await _memberRepository.UpdateAsync(member);

        return(Ok(new { archiveVideo.VideoId }));
    }
Beispiel #2
0
    public async Task <IActionResult> OnGet(string videoId, string?startTime = null)
    {
        var video = await _getVideoService.ExecuteAsync(videoId);

        if (video?.Data == null)
        {
            return(NotFound($"Video Not Found {videoId}"));
        }

        var oEmbed = await _getOEmbedVideoService.ExecuteAsync(video.Data.Link);

        if (oEmbed?.Data == null)
        {
            return(NotFound($"Video Not Found {videoId}"));
        }

        var videoSpec    = new ArchiveVideoByVideoIdWithMemberFavoritesSpec(videoId);
        var archiveVideo = await _repository.GetBySpecAsync(videoSpec);

        if (archiveVideo == null)
        {
            return(NotFound($"Video Not Found {videoId}"));
        }

        archiveVideo.Views++;
        await _repository.UpdateAsync(archiveVideo);

        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 == null)
        {
            return(NotFound($"Member Not Found {applicationUser.Id}"));
        }

        OEmbedViewModel               = new OEmbedViewModel(oEmbed.Data);
        OEmbedViewModel.VideoId       = int.Parse(archiveVideo.VideoId !);
        OEmbedViewModel.Name          = archiveVideo.Title;
        OEmbedViewModel.Password      = video.Data.Password;
        OEmbedViewModel.DescriptionMd = _markdownService.RenderHTMLFromMD(archiveVideo.Description);
        OEmbedViewModel.Description   = archiveVideo.Description;
        OEmbedViewModel
        .AddStartTime(startTime)
        .BuildHtml(video.Data.Link);
        OEmbedViewModel.IsMemberFavorite     = member.FavoriteArchiveVideos.Any(fav => fav.ArchiveVideoId == archiveVideo.Id);
        OEmbedViewModel.MemberFavoritesCount = archiveVideo.MemberFavorites.Count();
        return(Page());
    }
    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));
    }