Пример #1
0
        public void ReportEvent(AnalyticEvent type, string message)
        {
            var eventType = Enum.GetName(typeof(AnalyticEvent), type).ToUpper();

            //TODO increase message size
            if (!string.IsNullOrEmpty(message) && message.Length > 255)
            {
                message = message.Substring(0, 254);
            }

            _context.LoggedEvents.AddOrUpdate(new LoggedEvent()
            {
                EventTime = DateTime.Now,
                EventType = eventType,
                Message   = message
            });
            _context.SaveChanges();
        }
Пример #2
0
        public ActionResult UpdateDownloadStatus(int id, string status)
        {
            if (status != "want" && status != "skip")
            {
                throw new ArgumentOutOfRangeException(nameof(status), "Download status can only be skip or want");
            }

            var episode = _context.TvEpisodes.FirstOrDefault(e => e.Id == id);

            if (episode == null)
            {
                throw new ArgumentOutOfRangeException(nameof(id), "Episode ID was invalid or not in the database");
            }

            episode.DownloadStatus = status.ToUpper();
            _context.TvEpisodes.AddOrUpdate(episode);

            _context.SaveChanges();

            return(PartialView("_DownloadStatusToggle", episode));
        }
Пример #3
0
 public int SaveChanges()
 {
     return(_context.SaveChanges());
 }
Пример #4
0
        public void Update()
        {
            _logger.Info("Updating TV Database...");
            _analyticsService.ReportEvent(AnalyticEvent.DbUpdate);

            var seriesList = _context.TvSeries
                             .Where(s => SqlFunctions.DateDiff("day", s.LastUpdated, DateTime.Now) >= 7)
                             .Select(s => new { s.Id, s.TvDbSeriesId, s.Name, s.LastUpdated }).ToList();

            foreach (var series in seriesList)
            {
                if (!_searchService.HasUpdates(series.TvDbSeriesId, series.LastUpdated))
                {
                    continue;
                }

                _logger.Info("Updates found for Series: {0}", series.Name);

                var currentSeries = _context.TvSeries.Include(s => s.Episodes).FirstOrDefault(s => s.TvDbSeriesId == series.TvDbSeriesId);
                var updatedSeries = _searchService.GetTvSeries(series.TvDbSeriesId);

                if (currentSeries == null)
                {
                    _context.TvSeries.AddOrUpdate(updatedSeries);
                    _context.SaveChanges();
                    return;
                }

                currentSeries.Name          = updatedSeries.Name.Trim(new [] { '.' });
                currentSeries.Network       = updatedSeries.Network;
                currentSeries.AirsDayOfWeek = updatedSeries.AirsDayOfWeek;
                currentSeries.AirsTimeOfDay = updatedSeries.AirsTimeOfDay;
                currentSeries.FirstAired    = updatedSeries.FirstAired;
                currentSeries.Rating        = updatedSeries.Rating;
                currentSeries.Status        = updatedSeries.Status;
                currentSeries.Summary       = updatedSeries.Summary;
                currentSeries.LastUpdated   = DateTime.Now;

                foreach (var episode in updatedSeries.Episodes)
                {
                    var currentEpisode =
                        currentSeries.Episodes.FirstOrDefault(
                            e => e.Season == episode.Season && e.EpisodeNumber == episode.EpisodeNumber);

                    if (currentEpisode == null)
                    {
                        episode.DownloadStatus = (episode.Season > 0 && episode.EpisodeNumber > 0) ? "WANT" : "SKIP";
                        currentSeries.Episodes.Add(episode);
                        continue;
                    }

                    currentEpisode.FirstAired     = episode.FirstAired;
                    currentEpisode.Summary        = episode.Summary;
                    currentEpisode.Title          = episode.Title;
                    currentEpisode.DownloadStatus = episode.DownloadStatus;
                }

                _context.TvSeries.AddOrUpdate(t => t.TvDbSeriesId, currentSeries);
            }

            _context.SaveChanges();

            _logger.Info("TV Database Update complete.");
        }