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(); }
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)); }
public int SaveChanges() { return(_context.SaveChanges()); }
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."); }