using System.Collections.Generic; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { /// /// Represents the File Service, which is an easy access to operations involving objects like Scripts, Stylesheets and Templates /// public class FileService : IFileService { private readonly IUnitOfWork _fileUnitOfWork; private readonly IUnitOfWork _dataUnitOfWork; private readonly IStylesheetRepository _stylesheetRepository; private readonly IScriptRepository _scriptRepository; private readonly ITemplateRepository _templateRepository; public FileService() : this(new FileUnitOfWorkProvider(), new PetaPocoUnitOfWorkProvider()) { } public FileService(IUnitOfWorkProvider fileProvider, IUnitOfWorkProvider dataProvider) { _fileUnitOfWork = fileProvider.GetUnitOfWork(); _dataUnitOfWork = dataProvider.GetUnitOfWork(); _templateRepository = RepositoryResolver.Current.Factory.CreateTemplateRepository(_dataUnitOfWork); _stylesheetRepository = RepositoryResolver.Current.Factory.CreateStylesheetRepository(_fileUnitOfWork); _scriptRepository = RepositoryResolver.Current.Factory.CreateScriptRepository(_fileUnitOfWork); } /// /// Gets a list of all objects /// /// An enumerable list of objects public IEnumerable GetStylesheets(params string[] names) { var repository = _stylesheetRepository; return repository.GetAll(names); } /// /// Gets a object by its name /// /// Name of the stylesheet incl. extension /// A object public Stylesheet GetStylesheetByName(string name) { var repository = _stylesheetRepository; return repository.Get(name); } /// /// Saves a /// /// to save public void SaveStylesheet(Stylesheet stylesheet) { var repository = _stylesheetRepository; repository.AddOrUpdate(stylesheet); _fileUnitOfWork.Commit(); } /// /// Deletes a stylesheet by its name /// /// Name incl. extension of the Stylesheet to delete public void DeleteStylesheet(string name) { var repository = _stylesheetRepository; var stylesheet = repository.Get(name); repository.Delete(stylesheet); _fileUnitOfWork.Commit(); } /// /// Validates a /// /// to validate /// True if Stylesheet is valid, otherwise false public bool ValidateStylesheet(Stylesheet stylesheet) { return stylesheet.IsValid() && stylesheet.IsFileValidCss(); } /// /// Gets a list of all objects /// /// An enumerable list of objects public IEnumerable