sonarr-repo-only/NzbDrone.Core/Providers/StatsProvider.cs

46 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ninject;
using NzbDrone.Core.Model;
using NzbDrone.Core.Repository;
using PetaPoco;
namespace NzbDrone.Core.Providers
{
public class StatsProvider
{
private readonly IDatabase _database;
[Inject]
public StatsProvider(IDatabase database)
{
_database = database;
}
public StatsProvider()
{
}
public virtual StatsModel GetStats()
{
var series = _database.Fetch<Series>();
var episodes = _database.Fetch<Episode>();
var history = _database.Fetch<History>("WHERE Date >= @0", DateTime.Today.AddDays(-30));
var stats = new StatsModel();
stats.SeriesTotal = series.Count;
stats.SeriesContinuing = series.Count(s => s.Status == "Continuing");
stats.SeriesEnded = series.Count(s => s.Status == "Ended");
stats.EpisodesTotal = episodes.Count;
stats.EpisodesOnDisk = episodes.Count(e => e.EpisodeFileId > 0);
stats.EpisodesMissing = episodes.Count(e => e.Ignored == false && e.EpisodeFileId == 0);
stats.DownloadedLastMonth = history.Count;
stats.DownloadLastWeek = history.Count(h => h.Date >= DateTime.Today.AddDays(-7));
return stats;
}
}
}