public async Task DeleteChannelPlaylists(string channelId)
        {
            using (var uow = this.CreateWithDisabledLazyLoading())
            {
                var playlistsRep      = uow.GetRepository <PlaylistEntity>();
                var playlistVideosRep = uow.GetRepository <PlaylistVideoEntity>();

                var playlists = await this.GetChannelPlaylists(channelId);

                foreach (var playlist in playlists)
                {
                    var playlistVideos = await PlaylistsMapper.MapToPlaylistVideos(
                        playlistVideosRep.GetAll(),
                        playlist.Id);

                    foreach (var playlistVideo in playlistVideos)
                    {
                        playlistVideosRep.DeleteWhere(e => e.PlaylistId == playlistVideo.PlaylistId &&
                                                      e.VideoId == playlistVideo.VideoId);
                    }

                    playlistsRep.DeleteById(playlist.Id);
                }

                await uow.SaveAsync();
            }
        }
        public async Task <IReadOnlyList <PlaylistVideoEntity> > GetPlaylistVideos(int playlistId)
        {
            using (var uow = this.CreateWithDisabledLazyLoading())
            {
                var playlistVideosRep = uow.GetRepository <PlaylistVideoEntity>();

                return(await PlaylistsMapper.MapToPlaylistVideos(
                           playlistVideosRep.GetAll(),
                           playlistId));
            }
        }
        public async Task <PlaylistEntity> GetPlaylist(string playlistId)
        {
            using (var uow = this.CreateWithDisabledLazyLoading())
            {
                var playlistsRep = uow.GetRepository <PlaylistEntity>();

                return(await PlaylistsMapper.MapToPlaylist(
                           playlistsRep.GetAll(),
                           playlistId));
            }
        }
        public async Task <IReadOnlyList <PlaylistEntity> > GetChannelPlaylists(string channelId)
        {
            using (var uow = this.CreateWithDisabledLazyLoading())
            {
                var channelsRep  = uow.GetRepository <ChannelEntity>();
                var playlistsRep = uow.GetRepository <PlaylistEntity>();

                return(await PlaylistsMapper.MapToChannelPlaylists(
                           channelsRep.GetAll(),
                           playlistsRep.GetAll(),
                           channelId));
            }
        }