using System;
using System.Collections.Generic;
using System.Linq;
using NuGet;
using Orchard.Environment.Extensions;
namespace Orchard.Packaging.Services {
///
/// This repository implementation informs about what packages are already installed.
///
public class ExtensionReferenceRepository : PackageRepositoryBase {
private readonly IExtensionManager _extensionManager;
public ExtensionReferenceRepository(IProjectSystem project, IPackageRepository sourceRepository, IExtensionManager extensionManager) {
if (project == null) {
throw new ArgumentNullException("project");
}
if (sourceRepository == null) {
throw new ArgumentNullException("sourceRepository");
}
if (extensionManager == null) {
throw new ArgumentNullException("extensionManager");
}
Project = project;
SourceRepository = sourceRepository;
_extensionManager = extensionManager;
}
private IProjectSystem Project {
get;
set;
}
private IPackageRepository SourceRepository {
get;
set;
}
public override IQueryable GetPackages() {
IEnumerable packages;
packages = from extension in _extensionManager.AvailableExtensions()
let id = "Orchard." + extension.ExtensionType + "." + extension.Id
let version = Version.Parse(extension.Version)
let package = SourceRepository.FindPackage(id, version)
where package != null
select package;
return packages.AsQueryable();
}
public override void AddPackage(IPackage package) {
}
public override void RemovePackage(IPackage package) {
}
}
}