Esempio n. 1
0
        public async Task UpdateVideoItemPreferences(VideoItem videoItem)
        {
            App.DebugLog("");

            var videoFileTable = await _database.GetFirstAsync <VideoFileTable>(e => e.VideoId == videoItem.VideoId);

            videoFileTable.Position               = videoItem.Position;
            videoFileTable.IsNew                  = false;
            videoFileTable.SelectedSubtitles      = videoItem.SelectedSubtitlesId;
            videoFileTable.EmbeddedSubtitlesDelay = videoItem.EmbeddedSubtitlesDelay;

            var subtileFileTable = await _database.GetAsync <SubtitleFileTable>(o => o.FilePath, c => c.VideoId == videoItem.VideoId);

            var updatedFileSubtitles = new List <SubtitleFileTable>();
            var newFileSubtitles     = new List <SubtitleFileTable>();

            foreach (var sub in videoItem.SubtitleFiles)
            {
                var subTable = subtileFileTable.Find(x => x.FilePath == sub.FilePath);
                if (subTable == null)
                {
                    newFileSubtitles.Add(new SubtitleFileTable()
                    {
                        Delay      = sub.Delay,
                        FilePath   = sub.FilePath,
                        VideoId    = videoItem.VideoId,
                        IsSelected = sub.IsSelected,
                        Encoding   = sub.Encoding,
                    });
                }
                else
                {
                    if (subTable.Delay != sub.Delay || subTable.IsSelected != sub.IsSelected || subTable.Encoding != sub.Encoding)
                    {
                        subTable.Delay      = sub.Delay;
                        subTable.IsSelected = sub.IsSelected;
                        subTable.Encoding   = sub.Encoding;
                        updatedFileSubtitles.Add(subTable);
                    }
                    subtileFileTable.Remove(subTable);
                }
            }

            await _database.UpdateAsync(videoFileTable);

            await _database.UpdateAllAsync(subtileFileTable);

            await _database.InsertAllAsync(newFileSubtitles);

            foreach (var sub in subtileFileTable)
            {
                await _database.DeleteAsync(sub);
            }
        }
        public async Task SaveFavoriteScenes(int videoId, IEnumerable <FavoriteScene> scenes)
        {
            await database.DeleteAsync <FavoriteSceneTable>(s => s.VideoId == videoId);

            var list = scenes.Select(s => new FavoriteSceneTable()
            {
                Position      = s.Position,
                ThumbnailPath = s.ThumbnailPath,
                VideoId       = videoId
            });
            await database.InsertAllAsync(list);
        }