SearchResult Controller added.

Force Download added.
This commit is contained in:
Mark McDowall 2012-04-22 23:31:11 -07:00
commit cef7b6a8dc
25 changed files with 358 additions and 128 deletions

View file

@ -13,12 +13,17 @@ namespace NzbDrone.Core.Providers
public class SearchResultProvider
{
private readonly IDatabase _database;
private readonly SeriesProvider _seriesProvider;
private readonly DownloadProvider _downloadProvider;
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
[Inject]
public SearchResultProvider(IDatabase database)
public SearchResultProvider(IDatabase database, SeriesProvider seriesProvider,
DownloadProvider downloadProvider)
{
_database = database;
_seriesProvider = seriesProvider;
_downloadProvider = downloadProvider;
}
public SearchResultProvider()
@ -54,7 +59,7 @@ namespace NzbDrone.Core.Providers
Episodes.EpisodeNumber, Episodes.SeasonNumber, Episodes.Title as EpisodeTitle,
Episodes.AirDate,
Count(SearchResultItems.Id) as TotalItems,
SUM(CASE WHEN SearchResultItems.Success = 1 THEN 1 ELSE 0 END) as Successes
SUM(CASE WHEN SearchResultItems.Success = 1 THEN 1 ELSE 0 END) as SuccessfulCount
FROM SearchResults
INNER JOIN Series
ON Series.SeriesId = SearchResults.SeriesId
@ -73,10 +78,36 @@ namespace NzbDrone.Core.Providers
public virtual SearchResult GetSearchResult(int id)
{
var result = _database.Single<SearchResult>(id);
var sql = @"SELECT SearchResults.Id, SearchResults.SeriesId, SearchResults.SeasonNumber,
SearchResults.EpisodeId, SearchResults.SearchTime,
Series.Title as SeriesTitle, Series.IsDaily,
Episodes.EpisodeNumber, Episodes.SeasonNumber, Episodes.Title as EpisodeTitle,
Episodes.AirDate
FROM SearchResults
INNER JOIN Series
ON Series.SeriesId = SearchResults.SeriesId
LEFT JOIN Episodes
ON Episodes.EpisodeId = SearchResults.EpisodeId
WHERE SearchResults.Id = @0";
var result = _database.Single<SearchResult>(sql, id);
result.SearchResultItems = _database.Fetch<SearchResultItem>("WHERE SearchResultId = @0", id);
return result;
}
public virtual void ForceDownload(int itemId)
{
var item = _database.Single<SearchResultItem>(itemId);
var searchResult = _database.Single<SearchResult>(item.SearchResultId);
var series = _seriesProvider.GetSeries(searchResult.SeriesId);
var parseResult = Parser.ParseTitle(item.ReportTitle);
parseResult.NzbUrl = item.NzbUrl;
parseResult.Series = series;
parseResult.Indexer = item.Indexer;
_downloadProvider.DownloadReport(parseResult);
}
}
}