private void SaveHistoryChanges(ChangesEntity changes, IEntityCollection <ReleaseEntity> releaseCollection)
        {
            var allReleases         = releaseCollection.Find(a => true);
            var collection          = m_DataContext.GetCollection <HistoryChangeEntity> ();
            var historyChanges      = collection.FirstOrDefault();
            var releasesIds         = changes.NewOnlineSeries.Select(a => a.Key);
            var seriesReleases      = allReleases.Where(a => releasesIds.Contains(a.Id));
            var releaseOnlineSeries = new Dictionary <long, int> ();

            foreach (var seriesRelease in seriesReleases)
            {
                releaseOnlineSeries.Add(seriesRelease.Id, seriesRelease.Playlist?.Count() ?? 0);
            }
            if (historyChanges == null)
            {
                historyChanges = new HistoryChangeEntity {
                    NewOnlineSeries     = changes.NewOnlineSeries ?? new Dictionary <long, int> (),
                    NewReleases         = changes.NewReleases ?? new List <long> (),
                    NewTorrents         = changes.NewTorrents ?? new Dictionary <long, int> (),
                    NewTorrentSeries    = changes.NewTorrentSeries ?? new Dictionary <long, IDictionary <long, string> > (),
                    ReleaseOnlineSeries = releaseOnlineSeries
                };
                collection.Add(historyChanges);
            }
            else
            {
                historyChanges.NewOnlineSeries     = changes.NewOnlineSeries ?? new Dictionary <long, int> ();
                historyChanges.NewReleases         = changes.NewReleases ?? new List <long> ();
                historyChanges.NewTorrents         = changes.NewTorrents ?? new Dictionary <long, int> ();
                historyChanges.NewTorrentSeries    = changes.NewTorrentSeries ?? new Dictionary <long, IDictionary <long, string> > ();
                historyChanges.ReleaseOnlineSeries = releaseOnlineSeries;
                collection.Update(historyChanges);
            }
        }
Esempio n. 2
0
        private async Task SaveReleaseWatchTimestamp(long releaseId)
        {
            var releases = m_ReleasesCollection.Find(a => true);
            var release  = releases.FirstOrDefault(a => a.Id == releaseId);

            release.LastWatchTimestamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
            m_ReleasesCollection.Update(release);

            var lastThreeWatchReleases = releases
                                         .Where(a => a.LastWatchTimestamp > 0)
                                         .OrderByDescending(a => a.LastWatchTimestamp)
                                         .Take(3)
                                         .ToList();

            if (!lastThreeWatchReleases.Any())
            {
                return;
            }

            var jumpService = new JumpListService();
            var dictionary  = new Dictionary <long, string> ();

            foreach (var watchRelease in lastThreeWatchReleases)
            {
                dictionary.Add(watchRelease.Id, watchRelease.Title);
            }
            await jumpService.ChangeWatchHistoryItems(dictionary);
        }