diff --git a/src/Umbraco.Core/Models/Rdbms/TaskDto.cs b/src/Umbraco.Core/Models/Rdbms/TaskDto.cs index 4c38197d67..75e4d25cb7 100644 --- a/src/Umbraco.Core/Models/Rdbms/TaskDto.cs +++ b/src/Umbraco.Core/Models/Rdbms/TaskDto.cs @@ -41,5 +41,8 @@ namespace Umbraco.Core.Models.Rdbms [NullSetting(NullSetting = NullSettings.Null)] [Length(500)] public string Comment { get; set; } + + [ResultColumn] + public TaskTypeDto TaskTypeDto { get; set; } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/Rdbms/TaskTypeDto.cs b/src/Umbraco.Core/Models/Rdbms/TaskTypeDto.cs index 0e09d30d92..2ff61953ce 100644 --- a/src/Umbraco.Core/Models/Rdbms/TaskTypeDto.cs +++ b/src/Umbraco.Core/Models/Rdbms/TaskTypeDto.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Models.Rdbms internal class TaskTypeDto { [Column("id")] - [PrimaryKeyColumn] + [PrimaryKeyColumn(IdentitySeed = 2)] public byte Id { get; set; } [Column("alias")] diff --git a/src/Umbraco.Core/Persistence/Factories/TaskFactory.cs b/src/Umbraco.Core/Persistence/Factories/TaskFactory.cs new file mode 100644 index 0000000000..599eae12cb --- /dev/null +++ b/src/Umbraco.Core/Persistence/Factories/TaskFactory.cs @@ -0,0 +1,50 @@ +using AutoMapper; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Mapping; +using Umbraco.Core.Models.Rdbms; + +namespace Umbraco.Core.Persistence.Factories +{ + /// + /// Creates the model mappings for Tasks + /// + internal class TaskFactory + { + + + public Task BuildEntity(TaskDto dto) + { + var entity = new Task(new TaskType(dto.TaskTypeDto.Alias) { Id = dto.TaskTypeDto.Id }) + { + Closed = dto.Closed, + AssigneeUserId = dto.UserId, + Comment = dto.Comment, + CreateDate = dto.DateTime, + EntityId = dto.NodeId, + Id = dto.Id, + OwnerUserId = dto.ParentUserId, + }; + //on initial construction we don't want to have dirty properties tracked + // http://issues.umbraco.org/issue/U4-1946 + entity.ResetDirtyProperties(false); + return entity; + } + + public TaskDto BuildDto(Task entity) + { + var dto = new TaskDto + { + Closed = entity.Closed, + Comment = entity.Comment, + DateTime = entity.CreateDate, + Id = entity.Id, + NodeId = entity.EntityId, + ParentUserId = entity.OwnerUserId, + TaskTypeId = (byte)entity.TaskType.Id, + UserId = entity.AssigneeUserId + }; + + return dto; + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Relators/MacroPropertyRelator.cs b/src/Umbraco.Core/Persistence/Relators/MacroPropertyRelator.cs index fb563fa25c..2f457edfd8 100644 --- a/src/Umbraco.Core/Persistence/Relators/MacroPropertyRelator.cs +++ b/src/Umbraco.Core/Persistence/Relators/MacroPropertyRelator.cs @@ -3,6 +3,48 @@ using Umbraco.Core.Models.Rdbms; namespace Umbraco.Core.Persistence.Relators { + //internal class TaskUserRelator + //{ + // internal TaskDto Current; + + // internal TaskDto Map(TaskDto a, UserDto p) + // { + // // Terminating call. Since we can return null from this function + // // we need to be ready for PetaPoco to callback later with null + // // parameters + // if (a == null) + // return Current; + + // // Is this the same TaskDto as the current one we're processing + // if (Current != null && Current.Id == a.Id) + // { + // // Yes, set the user + // Current.MacroPropertyDtos.Add(p); + + // // Return null to indicate we're not done with this Macro yet + // return null; + // } + + // // This is a different Macro to the current one, or this is the + // // first time through and we don't have one yet + + // // Save the current Macro + // var prev = Current; + + // // Setup the new current Macro + // Current = a; + // Current.MacroPropertyDtos = new List(); + // //this can be null since we are doing a left join + // if (p.Alias != null) + // { + // Current.MacroPropertyDtos.Add(p); + // } + + // // Return the now populated previous Macro (or null if first time through) + // return prev; + // } + //} + internal class MacroPropertyRelator { internal MacroDto Current; diff --git a/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs b/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs index 5145cf808d..53ffda9364 100644 --- a/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs @@ -11,8 +11,8 @@ namespace Umbraco.Core.Persistence.Repositories { internal class AuditRepository : PetaPocoRepositoryBase, IAuditRepository { - public AuditRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntaxProvider) - : base(work, cache, logger, sqlSyntaxProvider) + public AuditRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) + : base(work, cache, logger, sqlSyntax) { } @@ -68,9 +68,9 @@ namespace Umbraco.Core.Persistence.Repositories protected override Guid NodeObjectTypeId { get { throw new NotImplementedException(); } - } + } #endregion - + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index 5a09d95c49..77228039f9 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -170,7 +170,7 @@ namespace Umbraco.Core.Persistence.Repositories .InnerJoin() .On(left => left.NodeId, right => right.NodeId); - var deleteSql = SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); } else @@ -186,7 +186,7 @@ namespace Umbraco.Core.Persistence.Repositories .Where(dto => dto.Published) .Where(dto => dto.ContentTypeId == id1); - var deleteSql = SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); } } @@ -346,7 +346,7 @@ namespace Umbraco.Core.Persistence.Repositories //Assign the same permissions to it as the parent node // http://issues.umbraco.org/issue/U4-2161 - var permissionsRepo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntaxProvider); + var permissionsRepo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntax); var parentPermissions = permissionsRepo.GetPermissionsForEntity(entity.ParentId).ToArray(); //if there are parent permissions then assign them, otherwise leave null and permissions will become the // user's default permissions. @@ -614,7 +614,7 @@ namespace Umbraco.Core.Persistence.Repositories public void ReplaceContentPermissions(EntityPermissionSet permissionSet) { - var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntaxProvider); + var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntax); repo.ReplaceEntityPermissions(permissionSet); } @@ -641,13 +641,13 @@ namespace Umbraco.Core.Persistence.Repositories /// public void AssignEntityPermission(IContent entity, char permission, IEnumerable userIds) { - var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntaxProvider); + var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntax); repo.AssignEntityPermission(entity, permission, userIds); } public IEnumerable GetPermissionsForEntity(int entityId) { - var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntaxProvider); + var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntax); return repo.GetPermissionsForEntity(entityId); } @@ -709,7 +709,7 @@ namespace Umbraco.Core.Persistence.Repositories if (filter.IsNullOrWhiteSpace() == false) { - sbWhere.Append(" AND (cmsDocument." + SqlSyntaxProvider.GetQuotedColumnName("text") + " LIKE @" + args.Count + ")"); + sbWhere.Append(" AND (cmsDocument." + SqlSyntax.GetQuotedColumnName("text") + " LIKE @" + args.Count + ")"); args.Add("%" + filter + "%"); } diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs index 250c3f4da4..4e3acfa885 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs @@ -28,8 +28,8 @@ namespace Umbraco.Core.Persistence.Repositories where TEntity : class, IContentTypeComposition { - protected ContentTypeBaseRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntaxProvider) - : base(work, cache, logger, sqlSyntaxProvider) + protected ContentTypeBaseRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) + : base(work, cache, logger, sqlSyntax) { } @@ -70,7 +70,7 @@ namespace Umbraco.Core.Persistence.Repositories //Cannot add a duplicate content type type var exists = Database.ExecuteScalar(@"SELECT COUNT(*) FROM cmsContentType INNER JOIN umbracoNode ON cmsContentType.nodeId = umbracoNode.id -WHERE cmsContentType." + SqlSyntaxProvider.GetQuotedColumnName("alias") + @"= @alias +WHERE cmsContentType." + SqlSyntax.GetQuotedColumnName("alias") + @"= @alias AND umbracoNode.nodeObjectType = @objectType", new { alias = entity.Alias, objectType = NodeObjectTypeId }); if (exists > 0) @@ -184,7 +184,7 @@ AND umbracoNode.nodeObjectType = @objectType", //Cannot update to a duplicate alias var exists = Database.ExecuteScalar(@"SELECT COUNT(*) FROM cmsContentType INNER JOIN umbracoNode ON cmsContentType.nodeId = umbracoNode.id -WHERE cmsContentType." + SqlSyntaxProvider.GetQuotedColumnName("alias") + @"= @alias +WHERE cmsContentType." + SqlSyntax.GetQuotedColumnName("alias") + @"= @alias AND umbracoNode.nodeObjectType = @objectType AND umbracoNode.id <> @id", new { id = dto.NodeId, alias = entity.Alias, objectType = NodeObjectTypeId }); diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs index 8218f67cf7..40679af854 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs @@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override IContentType PerformGet(int id) { var contentTypes = ContentTypeQueryMapper.GetContentTypes( - new[] {id}, Database, SqlSyntaxProvider, this, _templateRepository); + new[] {id}, Database, SqlSyntax, this, _templateRepository); var contentType = contentTypes.SingleOrDefault(); return contentType; @@ -42,13 +42,13 @@ namespace Umbraco.Core.Persistence.Repositories { if (ids.Any()) { - return ContentTypeQueryMapper.GetContentTypes(ids, Database, SqlSyntaxProvider, this, _templateRepository); + return ContentTypeQueryMapper.GetContentTypes(ids, Database, SqlSyntax, this, _templateRepository); } else { var sql = new Sql().Select("id").From().Where(dto => dto.NodeObjectType == NodeObjectTypeId); var allIds = Database.Fetch(sql).ToArray(); - return ContentTypeQueryMapper.GetContentTypes(allIds, Database, SqlSyntaxProvider, this, _templateRepository); + return ContentTypeQueryMapper.GetContentTypes(allIds, Database, SqlSyntax, this, _templateRepository); } } diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs index fba2e9f459..d2f4b3bebe 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs @@ -150,7 +150,7 @@ namespace Umbraco.Core.Persistence.Repositories //Cannot add a duplicate data type var exists = Database.ExecuteScalar(@"SELECT COUNT(*) FROM cmsDataType INNER JOIN umbracoNode ON cmsDataType.nodeId = umbracoNode.id -WHERE umbracoNode." + SqlSyntaxProvider.GetQuotedColumnName("text") + "= @name", new {name = entity.Name}); +WHERE umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + "= @name", new {name = entity.Name}); if (exists > 0) { throw new DuplicateNameException("A data type with the name " + entity.Name + " already exists"); @@ -195,7 +195,7 @@ WHERE umbracoNode." + SqlSyntaxProvider.GetQuotedColumnName("text") + "= @name", //Cannot change to a duplicate alias var exists = Database.ExecuteScalar(@"SELECT COUNT(*) FROM cmsDataType INNER JOIN umbracoNode ON cmsDataType.nodeId = umbracoNode.id -WHERE umbracoNode." + SqlSyntaxProvider.GetQuotedColumnName("text") + @"= @name +WHERE umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + @"= @name AND umbracoNode.id <> @id", new { id = entity.Id, name = entity.Name }); if (exists > 0) diff --git a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs index 241deaf05a..4c70d339b6 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs @@ -21,8 +21,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly ILanguageRepository _languageRepository; - public DictionaryRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider syntaxProvider, ILanguageRepository languageRepository) - : base(work, cache, logger, syntaxProvider) + public DictionaryRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider syntax, ILanguageRepository languageRepository) + : base(work, cache, logger, syntax) { _languageRepository = languageRepository; } @@ -224,13 +224,13 @@ namespace Umbraco.Core.Persistence.Repositories public IDictionaryItem Get(Guid uniqueId) { - var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntaxProvider); + var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax); return uniqueIdRepo.Get(uniqueId); } public IDictionaryItem Get(string key) { - var keyRepo = new DictionaryByKeyRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntaxProvider); + var keyRepo = new DictionaryByKeyRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax); return keyRepo.Get(key); } @@ -256,7 +256,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "cmsDictionary." + SqlSyntaxProvider.GetQuotedColumnName("id") + " = @Id"; + return "cmsDictionary." + SqlSyntax.GetQuotedColumnName("id") + " = @Id"; } protected override IDictionaryItem ConvertToEntity(DictionaryDto dto) @@ -271,7 +271,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetWhereInClauseForGetAll() { - return "cmsDictionary." + SqlSyntaxProvider.GetQuotedColumnName("id") + " in (@ids)"; + return "cmsDictionary." + SqlSyntax.GetQuotedColumnName("id") + " in (@ids)"; } } @@ -297,7 +297,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetBaseWhereClause() { - return "cmsDictionary." + SqlSyntaxProvider.GetQuotedColumnName("key") + " = @Id"; + return "cmsDictionary." + SqlSyntax.GetQuotedColumnName("key") + " = @Id"; } protected override IDictionaryItem ConvertToEntity(DictionaryDto dto) @@ -312,7 +312,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override string GetWhereInClauseForGetAll() { - return "cmsDictionary." + SqlSyntaxProvider.GetQuotedColumnName("key") + " in (@ids)"; + return "cmsDictionary." + SqlSyntax.GetQuotedColumnName("key") + " in (@ids)"; } } } diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs index d4359e3709..fe571a49da 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IAuditRepository.cs @@ -1,3 +1,4 @@ +using System.Collections; using Umbraco.Core.Auditing; using Umbraco.Core.Models; diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs new file mode 100644 index 0000000000..d112cc402a --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface ITaskRepository : IRepositoryQueryable + { + IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); + IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); + + //IEnumerable GetTasksForItem(int id); + //IEnumerable GetTasksForItem(Guid uniqueId); + //IEnumerable GetTasksByType(int typeId); + //IEnumerable GetTasksByType(string typeAlias); + + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs index 3b2e17e5bc..898dae9497 100644 --- a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs @@ -150,13 +150,13 @@ namespace Umbraco.Core.Persistence.Repositories public ILanguage GetByCultureName(string cultureName) { - var cultureNameRepo = new LanguageByCultureNameRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntaxProvider); + var cultureNameRepo = new LanguageByCultureNameRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax); return cultureNameRepo.Get(cultureName); } public ILanguage GetByIsoCode(string isoCode) { - var isoRepo = new LanguageByIsoCodeRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntaxProvider); + var isoRepo = new LanguageByIsoCodeRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax); return isoRepo.Get(isoCode); } diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs index 426a2055eb..e5334bfac2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs @@ -179,7 +179,7 @@ namespace Umbraco.Core.Persistence.Repositories .On(left => left.NodeId, right => right.NodeId) .Where(dto => dto.NodeObjectType == mediaObjectType); - var deleteSql = SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); } else @@ -198,7 +198,7 @@ namespace Umbraco.Core.Persistence.Repositories .Where(dto => dto.NodeObjectType == mediaObjectType) .Where(dto => dto.ContentTypeId == id1); - var deleteSql = SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); } } @@ -456,7 +456,7 @@ namespace Umbraco.Core.Persistence.Repositories Func> filterCallback = null; if (filter.IsNullOrWhiteSpace() == false) { - sbWhere.Append("AND (umbracoNode." + SqlSyntaxProvider.GetQuotedColumnName("text") + " LIKE @" + args.Count + ")"); + sbWhere.Append("AND (umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + " LIKE @" + args.Count + ")"); args.Add("%" + filter + "%"); filterCallback = () => new Tuple(sbWhere.ToString().Trim(), args.ToArray()); } diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs index 3b98c43079..cc51fd6e7c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs @@ -60,13 +60,13 @@ namespace Umbraco.Core.Persistence.Repositories { if (ids.Any()) { - return ContentTypeQueryMapper.GetMediaTypes(ids, Database, SqlSyntaxProvider, this); + return ContentTypeQueryMapper.GetMediaTypes(ids, Database, SqlSyntax, this); } else { var sql = new Sql().Select("id").From().Where(dto => dto.NodeObjectType == NodeObjectTypeId); var allIds = Database.Fetch(sql).ToArray(); - return ContentTypeQueryMapper.GetMediaTypes(allIds, Database, SqlSyntaxProvider, this); + return ContentTypeQueryMapper.GetMediaTypes(allIds, Database, SqlSyntax, this); } } diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs index 6008cc1d07..264409ddf4 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs @@ -283,7 +283,7 @@ namespace Umbraco.Core.Persistence.Repositories .Select("*") .From() .Where(dto => dto.NodeObjectType == NodeObjectTypeId) - .Where("umbracoNode." + SqlSyntaxProvider.GetQuotedColumnName("text") + " in (@names)", new { names = roleNames }); + .Where("umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + " in (@names)", new { names = roleNames }); var existingRoles = Database.Fetch(existingSql).Select(x => x.Text); var missingRoles = roleNames.Except(existingRoles); var missingGroups = missingRoles.Select(x => new MemberGroup {Name = x}).ToArray(); @@ -306,9 +306,9 @@ namespace Umbraco.Core.Persistence.Repositories var assignedSql = new Sql(); assignedSql.Select(string.Format( "{0},{1},{2}", - SqlSyntaxProvider.GetQuotedColumnName("text"), - SqlSyntaxProvider.GetQuotedColumnName("Member"), - SqlSyntaxProvider.GetQuotedColumnName("MemberGroup"))) + SqlSyntax.GetQuotedColumnName("text"), + SqlSyntax.GetQuotedColumnName("Member"), + SqlSyntax.GetQuotedColumnName("MemberGroup"))) .From() .InnerJoin() .On(dto => dto.NodeId, dto => dto.MemberGroup) @@ -350,7 +350,7 @@ namespace Umbraco.Core.Persistence.Repositories .Select("*") .From() .Where(dto => dto.NodeObjectType == NodeObjectTypeId) - .Where("umbracoNode." + SqlSyntaxProvider.GetQuotedColumnName("text") + " in (@names)", new { names = roleNames }); + .Where("umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + " in (@names)", new { names = roleNames }); var existingRolesIds = Database.Fetch(existingSql).Select(x => x.NodeId).ToArray(); Database.Execute("DELETE FROM cmsMember2MemberGroup WHERE Member IN (@memberIds) AND MemberGroup IN (@memberGroups)", diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs index 92d1758bae..8c08bf38c2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs @@ -424,7 +424,7 @@ namespace Umbraco.Core.Persistence.Repositories .On(left => left.NodeId, right => right.NodeId) .Where(dto => dto.NodeObjectType == memberObjectType); - var deleteSql = SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); } else @@ -443,7 +443,7 @@ namespace Umbraco.Core.Persistence.Repositories .Where(dto => dto.NodeObjectType == memberObjectType) .Where(dto => dto.ContentTypeId == id1); - var deleteSql = SqlSyntaxProvider.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); + var deleteSql = SqlSyntax.GetDeleteSubquery("cmsContentXml", "nodeId", subQuery); Database.Execute(deleteSql); } } @@ -650,7 +650,7 @@ namespace Umbraco.Core.Persistence.Repositories Func> filterCallback = null; if (filter.IsNullOrWhiteSpace() == false) { - sbWhere.Append("AND ((umbracoNode. " + SqlSyntaxProvider.GetQuotedColumnName("text") + " LIKE @" + args.Count + ") " + + sbWhere.Append("AND ((umbracoNode. " + SqlSyntax.GetQuotedColumnName("text") + " LIKE @" + args.Count + ") " + "OR (cmsMember.LoginName LIKE @0" + args.Count + "))"); args.Add("%" + filter + "%"); filterCallback = () => new Tuple(sbWhere.ToString().Trim(), args.ToArray()); diff --git a/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs index 463630ab98..872b7f1d14 100644 --- a/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs @@ -17,13 +17,13 @@ namespace Umbraco.Core.Persistence.Repositories internal abstract class PetaPocoRepositoryBase : RepositoryBase where TEntity : class, IAggregateRoot { - public ISqlSyntaxProvider SqlSyntaxProvider { get; private set; } + public ISqlSyntaxProvider SqlSyntax { get; private set; } - protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntaxProvider) + protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) : base(work, cache, logger) { - if (sqlSyntaxProvider == null) throw new ArgumentNullException("sqlSyntaxProvider"); - SqlSyntaxProvider = sqlSyntaxProvider; + if (sqlSyntax == null) throw new ArgumentNullException("sqlSyntax"); + SqlSyntax = sqlSyntax; } /// diff --git a/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs index 0f0ed659e4..14e32d6f9c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs @@ -165,7 +165,7 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable GetTaggedEntitiesByTagGroup(TaggableObjectTypes objectType, string tagGroup) { var sql = new Sql() - .Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntaxProvider.GetQuotedColumnName("group")) + .Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntax.GetQuotedColumnName("group")) .From() .InnerJoin() .On(left => left.TagId, right => right.Id) @@ -191,7 +191,7 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable GetTaggedEntitiesByTag(TaggableObjectTypes objectType, string tag, string tagGroup = null) { var sql = new Sql() - .Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntaxProvider.GetQuotedColumnName("group")) + .Select("cmsTagRelationship.nodeId, cmsPropertyType.Alias, cmsPropertyType.id as propertyTypeId, cmsTags.tag, cmsTags.id as tagId, cmsTags." + SqlSyntax.GetQuotedColumnName("group")) .From() .InnerJoin() .On(left => left.TagId, right => right.Id) @@ -298,7 +298,7 @@ namespace Umbraco.Core.Persistence.Repositories if (withGrouping) { - sql = sql.Select("cmsTags.Id, cmsTags.Tag, cmsTags." + SqlSyntaxProvider.GetQuotedColumnName("Group") + @", Count(*) NodeCount"); + sql = sql.Select("cmsTags.Id, cmsTags.Tag, cmsTags." + SqlSyntax.GetQuotedColumnName("Group") + @", Count(*) NodeCount"); } else { @@ -328,7 +328,7 @@ namespace Umbraco.Core.Persistence.Repositories private Sql ApplyGroupByToTagsQuery(Sql sql) { - return sql.GroupBy(new string[] { "cmsTags.Id", "cmsTags.Tag", "cmsTags." + SqlSyntaxProvider.GetQuotedColumnName("Group") + @"" }); + return sql.GroupBy(new string[] { "cmsTags.Id", "cmsTags.Tag", "cmsTags." + SqlSyntax.GetQuotedColumnName("Group") + @"" }); } private IEnumerable ExecuteTagsQuery(Sql sql) @@ -385,16 +385,16 @@ namespace Umbraco.Core.Persistence.Repositories //adds any tags found in the collection that aren't in cmsTag var insertTagsSql = string.Concat("insert into cmsTags (Tag,", - SqlSyntaxProvider.GetQuotedColumnName("Group"), + SqlSyntax.GetQuotedColumnName("Group"), ") ", " select TagSet.Tag, TagSet.", - SqlSyntaxProvider.GetQuotedColumnName("Group"), + SqlSyntax.GetQuotedColumnName("Group"), " from ", tagSetSql, " left outer join cmsTags on (TagSet.Tag = cmsTags.Tag and TagSet.", - SqlSyntaxProvider.GetQuotedColumnName("Group"), + SqlSyntax.GetQuotedColumnName("Group"), " = cmsTags.", - SqlSyntaxProvider.GetQuotedColumnName("Group"), + SqlSyntax.GetQuotedColumnName("Group"), ")", " where cmsTags.Id is null "); //insert the tags that don't exist @@ -413,9 +413,9 @@ namespace Umbraco.Core.Persistence.Repositories "select NewTags.Id from ", tagSetSql, " inner join cmsTags as NewTags on (TagSet.Tag = NewTags.Tag and TagSet.", - SqlSyntaxProvider.GetQuotedColumnName("Group"), + SqlSyntax.GetQuotedColumnName("Group"), " = TagSet.", - SqlSyntaxProvider.GetQuotedColumnName("Group"), + SqlSyntax.GetQuotedColumnName("Group"), ") ", ") as NewTagsSet ", "left outer join cmsTagRelationship ", @@ -451,7 +451,7 @@ namespace Umbraco.Core.Persistence.Repositories " AND tagId IN ", "(SELECT id FROM cmsTags INNER JOIN ", tagSetSql, - " ON (TagSet.Tag = cmsTags.Tag and TagSet." + SqlSyntaxProvider.GetQuotedColumnName("Group") + @" = cmsTags." + SqlSyntaxProvider.GetQuotedColumnName("Group") + @"))"); + " ON (TagSet.Tag = cmsTags.Tag and TagSet." + SqlSyntax.GetQuotedColumnName("Group") + @" = cmsTags." + SqlSyntax.GetQuotedColumnName("Group") + @"))"); Database.Execute(deleteSql); } @@ -503,7 +503,7 @@ namespace Umbraco.Core.Persistence.Repositories var array = tagsToInsert .Select(tag => - string.Format("select '{0}' as Tag, '{1}' as " + SqlSyntaxProvider.GetQuotedColumnName("Group") + @"", + string.Format("select '{0}' as Tag, '{1}' as " + SqlSyntax.GetQuotedColumnName("Group") + @"", PetaPocoExtensions.EscapeAtSymbols(tag.Text.Replace("'", "''")), tag.Group)) .ToArray(); return "(" + string.Join(" union ", array).Replace(" ", " ") + ") as TagSet"; diff --git a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs new file mode 100644 index 0000000000..6c801cc2a8 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs @@ -0,0 +1,184 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using AutoMapper; +using Umbraco.Core.Logging; +using Umbraco.Core.Models; +using Umbraco.Core.Models.EntityBase; +using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.SqlSyntax; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Persistence.Repositories +{ + internal class TaskRepository : PetaPocoRepositoryBase, ITaskRepository + { + public TaskRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) + : base(work, cache, logger, sqlSyntax) + { + } + + protected override Task PerformGet(int id) + { + var sql = GetBaseQuery(false); + sql.Where(GetBaseWhereClause(), new { Id = id }); + + var taskDto = Database.Fetch(sql).FirstOrDefault(); + if (taskDto == null) + return null; + + var factory = new TaskFactory(); + var entity = factory.BuildEntity(taskDto); + return entity; + } + + protected override IEnumerable PerformGetAll(params int[] ids) + { + var sql = GetBaseQuery(false); + + if (ids.Any()) + { + sql.Where("cmsTask.id IN (@ids)", new {ids = ids}); + } + + var factory = new TaskFactory(); + var dtos = Database.Fetch(sql); + return dtos.Select(factory.BuildEntity); + } + + protected override IEnumerable PerformGetByQuery(IQuery query) + { + var sqlClause = GetBaseQuery(false); + var translator = new SqlTranslator(sqlClause, query); + var sql = translator.Translate(); + + var factory = new TaskFactory(); + var dtos = Database.Fetch(sql); + return dtos.Select(factory.BuildEntity); + } + + protected override Sql GetBaseQuery(bool isCount) + { + var sql = new Sql(); + if (isCount) + { + sql.Select("COUNT(*)").From(SqlSyntax); + } + else + { + return GetBaseQuery(); + } + return sql; + } + + private Sql GetBaseQuery() + { + var sql = new Sql(); + sql.Select("cmsTask.closed,cmsTask.id,cmsTask.taskTypeId,cmsTask.nodeId,cmsTask.parentUserId,cmsTask.userId,cmsTask." + SqlSyntax.GetQuotedColumnName("DateTime") + ",cmsTask.Comment,cmsTaskType.id, cmsTaskType.alias") + .From(SqlSyntax) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.TaskTypeId, right => right.Id) + .InnerJoin(SqlSyntax) + .On(SqlSyntax, left => left.NodeId, right => right.NodeId); + return sql; + } + + protected override string GetBaseWhereClause() + { + return "cmsTask.id = @Id"; + } + + protected override IEnumerable GetDeleteClauses() + { + var list = new List + { + "DELETE FROM cmsTask WHERE id = @Id" + }; + return list; + } + + protected override Guid NodeObjectTypeId + { + get { throw new NotImplementedException(); } + } + + protected override void PersistNewItem(Task entity) + { + entity.AddingEntity(); + + + + //ensure the task type exists + var taskType = Database.SingleOrDefault("Where alias = @alias", new {alias = entity.TaskType.Alias}); + if (taskType == null) + { + var taskTypeId = Convert.ToInt32(Database.Insert(new TaskTypeDto {Alias = entity.TaskType.Alias})); + entity.TaskType.Id = taskTypeId; + } + + var factory = new TaskFactory(); + var dto = factory.BuildDto(entity); + + var id = Convert.ToInt32(Database.Insert(dto)); + entity.Id = id; + + entity.ResetDirtyProperties(); + } + + protected override void PersistUpdatedItem(Task entity) + { + throw new NotImplementedException(); + } + + public IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + { + var sql = GetGetTasksQuery(assignedUser, ownerUser, taskTypeAlias, includeClosed); + if (itemId.HasValue) + { + sql.Where(dto => dto.UniqueId == itemId.Value); + } + + var dtos = Database.Fetch(sql); + var entities = Mapper.Map>(dtos); + return entities; + } + + public IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + { + var sql = GetGetTasksQuery(assignedUser, ownerUser, taskTypeAlias, includeClosed); + if (itemId.HasValue) + { + sql.Where(dto => dto.NodeId == itemId.Value); + } + + var dtos = Database.Fetch(sql); + var entities = Mapper.Map>(dtos); + return entities; + } + + private Sql GetGetTasksQuery(int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + { + var sql = GetBaseQuery(false); + + if (includeClosed == false) + { + sql.Where(dto => dto.Closed == false); + } + if (taskTypeAlias.IsNullOrWhiteSpace() == false) + { + sql.Where("cmsTaskType.alias = @alias", new { alias = taskTypeAlias }); + } + if (ownerUser.HasValue) + { + sql.Where(dto => dto.UserId == ownerUser.Value); + } + if (assignedUser.HasValue) + { + sql.Where(dto => dto.ParentUserId == assignedUser.Value); + } + return sql; + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index cafb93224a..e56771fc7d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -121,7 +121,7 @@ namespace Umbraco.Core.Persistence.Repositories "DELETE FROM umbracoUser2NodePermission WHERE userId = @Id", "DELETE FROM umbracoUser2NodeNotify WHERE userId = @Id", "DELETE FROM umbracoUserLogins WHERE userID = @Id", - "DELETE FROM umbracoUser2app WHERE " + SqlSyntaxProvider.GetQuotedColumnName("user") + "=@Id", + "DELETE FROM umbracoUser2app WHERE " + SqlSyntax.GetQuotedColumnName("user") + "=@Id", "DELETE FROM umbracoUser WHERE id = @Id" }; return list; @@ -198,7 +198,7 @@ namespace Umbraco.Core.Persistence.Repositories foreach (var section in user.RemovedSections) { //we need to manually delete thsi record because it has a composite key - Database.Delete("WHERE app=@Section AND " + SqlSyntaxProvider.GetQuotedColumnName("user") + "=@UserId", + Database.Delete("WHERE app=@Section AND " + SqlSyntax.GetQuotedColumnName("user") + "=@UserId", new { Section = section, UserId = (int)user.Id }); } @@ -215,7 +215,7 @@ namespace Umbraco.Core.Persistence.Repositories else { //we need to manually update this record because it has a composite key - Database.Update("SET app=@Section WHERE app=@Section AND " + SqlSyntaxProvider.GetQuotedColumnName("user") + "=@UserId", + Database.Update("SET app=@Section WHERE app=@Section AND " + SqlSyntax.GetQuotedColumnName("user") + "=@UserId", new { Section = sectionDto.AppAlias, UserId = sectionDto.UserId }); } } @@ -270,7 +270,7 @@ namespace Umbraco.Core.Persistence.Repositories var sql = GetBaseQuery(false); var innerSql = GetBaseQuery("umbracoUser.id"); - innerSql.Where("umbracoUser2app.app = " + SqlSyntaxProvider.GetQuotedValue(sectionAlias)); + innerSql.Where("umbracoUser2app.app = " + SqlSyntax.GetQuotedValue(sectionAlias)); sql.Where(string.Format("umbracoUser.id IN ({0})", innerSql.SQL)); return ConvertFromDtos(Database.Fetch(new UserSectionRelator().Map, sql)); @@ -344,7 +344,7 @@ namespace Umbraco.Core.Persistence.Repositories /// public IEnumerable GetUserPermissionsForEntities(int userId, params int[] entityIds) { - var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntaxProvider); + var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntax); return repo.GetUserPermissionsForEntities(userId, entityIds); } @@ -356,7 +356,7 @@ namespace Umbraco.Core.Persistence.Repositories /// public void ReplaceUserPermissions(int userId, IEnumerable permissions, params int[] entityIds) { - var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntaxProvider); + var repo = new PermissionRepository(UnitOfWork, _cacheHelper, SqlSyntax); repo.ReplaceUserPermissions(userId, permissions, entityIds); } diff --git a/src/Umbraco.Core/Persistence/RepositoryFactory.cs b/src/Umbraco.Core/Persistence/RepositoryFactory.cs index d7b5fb2dbe..fa39f013ca 100644 --- a/src/Umbraco.Core/Persistence/RepositoryFactory.cs +++ b/src/Umbraco.Core/Persistence/RepositoryFactory.cs @@ -64,6 +64,11 @@ namespace Umbraco.Core.Persistence #endregion + public virtual ITaskRepository CreateTaskRepository(IDatabaseUnitOfWork uow) + { + return new TaskRepository(uow, _cacheHelper, _logger, _sqlSyntax); + } + public virtual IAuditRepository CreateAuditRepository(IDatabaseUnitOfWork uow) { return new AuditRepository(uow, _cacheHelper, _logger, _sqlSyntax); diff --git a/src/Umbraco.Core/Services/AuditService.cs b/src/Umbraco.Core/Services/AuditService.cs index ee2b6e19e4..032516421c 100644 --- a/src/Umbraco.Core/Services/AuditService.cs +++ b/src/Umbraco.Core/Services/AuditService.cs @@ -1,27 +1,22 @@ using System; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { - public sealed class AuditService : IAuditService + public sealed class AuditService : RepositoryService, IAuditService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - - public AuditService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + public AuditService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); - _uowProvider = provider; - _repositoryFactory = repositoryFactory; } public void Add(AuditType type, string comment, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repo = RepositoryFactory.CreateAuditRepository(uow)) { repo.AddOrUpdate(new AuditItem(objectId, comment, type, userId)); uow.Commit(); diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs index 43199dbf86..e5a99cf038 100644 --- a/src/Umbraco.Core/Services/ContentService.cs +++ b/src/Umbraco.Core/Services/ContentService.cs @@ -25,12 +25,10 @@ namespace Umbraco.Core.Services /// /// Represents the Content Service, which is an easy access to operations involving /// - public class ContentService : IContentService + public class ContentService : RepositoryService, IContentService { - private readonly ILogger _logger; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; + private readonly IPublishingStrategy _publishingStrategy; - private readonly RepositoryFactory _repositoryFactory; private readonly EntityXmlSerializer _entitySerializer = new EntityXmlSerializer(); private readonly IDataTypeService _dataTypeService; private readonly IUserService _userService; @@ -41,57 +39,48 @@ namespace Umbraco.Core.Services [Obsolete("Use the constructors that specify all dependencies instead")] public ContentService() - : this(LoggerResolver.Current.Logger, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())) + : this(new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())) { } [Obsolete("Use the constructors that specify all dependencies instead")] - public ContentService(ILogger logger, RepositoryFactory repositoryFactory) - : this(logger, new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory, new PublishingStrategy()) + public ContentService(RepositoryFactory repositoryFactory) + : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory, new PublishingStrategy()) { } [Obsolete("Use the constructors that specify all dependencies instead")] - public ContentService(ILogger logger, IDatabaseUnitOfWorkProvider provider) - : this(logger, provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), new PublishingStrategy()) + public ContentService(IDatabaseUnitOfWorkProvider provider) + : this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), new PublishingStrategy()) { } [Obsolete("Use the constructors that specify all dependencies instead")] - public ContentService(ILogger logger, IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) - : this(logger, provider, repositoryFactory, new PublishingStrategy()) + public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + : this(provider, repositoryFactory, new PublishingStrategy()) { } [Obsolete("Use the constructors that specify all dependencies instead")] - public ContentService(ILogger logger, IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IPublishingStrategy publishingStrategy) + public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IPublishingStrategy publishingStrategy) + : base(provider, repositoryFactory, LoggerResolver.Current.Logger) { - if (logger == null) throw new ArgumentNullException("logger"); - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); if (publishingStrategy == null) throw new ArgumentNullException("publishingStrategy"); - _logger = logger; - _uowProvider = provider; - _publishingStrategy = publishingStrategy; - _repositoryFactory = repositoryFactory; - _dataTypeService = new DataTypeService(provider, repositoryFactory); - _userService = new UserService(provider, repositoryFactory); + _dataTypeService = new DataTypeService(UowProvider, RepositoryFactory); + _userService = new UserService(UowProvider, RepositoryFactory); } - public ContentService(ILogger logger, IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IPublishingStrategy publishingStrategy, IDataTypeService dataTypeService, IUserService userService) + public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IPublishingStrategy publishingStrategy, IDataTypeService dataTypeService, IUserService userService) + : base(provider, repositoryFactory, logger) { - if (logger == null) throw new ArgumentNullException("logger"); - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); if (publishingStrategy == null) throw new ArgumentNullException("publishingStrategy"); - _logger = logger; - _uowProvider = provider; + if (dataTypeService == null) throw new ArgumentNullException("dataTypeService"); + if (userService == null) throw new ArgumentNullException("userService"); _publishingStrategy = publishingStrategy; - _repositoryFactory = repositoryFactory; _dataTypeService = dataTypeService; _userService = userService; } public int CountPublished(string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { return repository.CountPublished(); } @@ -99,8 +88,8 @@ namespace Umbraco.Core.Services public int Count(string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { return repository.Count(contentTypeAlias); } @@ -108,8 +97,8 @@ namespace Umbraco.Core.Services public int CountChildren(int parentId, string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { return repository.CountChildren(parentId, contentTypeAlias); } @@ -117,8 +106,8 @@ namespace Umbraco.Core.Services public int CountDescendants(int parentId, string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { return repository.CountDescendants(parentId, contentTypeAlias); } @@ -131,8 +120,8 @@ namespace Umbraco.Core.Services /// public void ReplaceContentPermissions(EntityPermissionSet permissionSet) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { repository.ReplaceContentPermissions(permissionSet); } @@ -146,8 +135,8 @@ namespace Umbraco.Core.Services /// public void AssignContentPermission(IContent entity, char permission, IEnumerable userIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { repository.AssignEntityPermission(entity, permission, userIds); } @@ -160,8 +149,8 @@ namespace Umbraco.Core.Services /// public IEnumerable GetPermissionsForEntity(IContent content) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { return repository.GetPermissionsForEntity(content.Id); } @@ -197,8 +186,8 @@ namespace Umbraco.Core.Services Created.RaiseEvent(new NewEventArgs(content, false, contentTypeAlias, parentId), this); - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(content.Id, string.Format("Content '{0}' was created", name), AuditType.New, content.CreatorId)); uow.Commit(); @@ -274,8 +263,8 @@ namespace Umbraco.Core.Services return content; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { content.CreatorId = userId; content.WriterId = userId; @@ -326,8 +315,8 @@ namespace Umbraco.Core.Services return content; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { content.CreatorId = userId; content.WriterId = userId; @@ -353,7 +342,7 @@ namespace Umbraco.Core.Services /// public IContent GetById(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -366,7 +355,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetByIds(IEnumerable ids) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids.ToArray()); } @@ -379,7 +368,7 @@ namespace Umbraco.Core.Services /// public IContent GetById(Guid key) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Key == key); var contents = repository.GetByQuery(query); @@ -394,7 +383,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetContentOfContentType(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ContentTypeId == id); var contents = repository.GetByQuery(query); @@ -405,7 +394,7 @@ namespace Umbraco.Core.Services internal IEnumerable GetPublishedContentOfContentType(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ContentTypeId == id); var contents = repository.GetByPublishedVersion(query); @@ -421,7 +410,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetByLevel(int level) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Level == level && !x.Path.StartsWith(Constants.System.RecycleBinContent.ToInvariantString())); var contents = repository.GetByQuery(query); @@ -437,7 +426,7 @@ namespace Umbraco.Core.Services /// An item public IContent GetByVersion(Guid versionId) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { return repository.GetByVersion(versionId); } @@ -451,7 +440,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetVersions(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var versions = repository.GetAllVersions(id); return versions; @@ -480,7 +469,7 @@ namespace Umbraco.Core.Services if (ids.Any() == false) return new List(); - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -493,7 +482,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetChildren(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); var contents = repository.GetByQuery(query).OrderBy(x => x.SortOrder); @@ -518,7 +507,7 @@ namespace Umbraco.Core.Services { Mandate.ParameterCondition(pageIndex >= 0, "pageSize"); Mandate.ParameterCondition(pageSize > 0, "pageSize"); - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder; @@ -548,7 +537,7 @@ namespace Umbraco.Core.Services { Mandate.ParameterCondition(pageIndex >= 0, "pageSize"); Mandate.ParameterCondition(pageSize > 0, "pageSize"); - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder; @@ -571,7 +560,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetChildrenByName(int parentId, string name) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == parentId && x.Name.Contains(name)); var contents = repository.GetByQuery(query); @@ -602,7 +591,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetDescendants(IContent content) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var pathMatch = content.Path + ","; var query = Query.Builder.Where(x => x.Path.StartsWith(pathMatch) && x.Id != content.Id); @@ -653,7 +642,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetRootContent() { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == Constants.System.Root); var contents = repository.GetByQuery(query); @@ -668,7 +657,7 @@ namespace Umbraco.Core.Services /// internal IEnumerable GetAllPublished() { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Trashed == false); return repository.GetByPublishedVersion(query); @@ -681,7 +670,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetContentForExpiration() { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Published == true && x.ExpireDate <= DateTime.Now); var contents = repository.GetByQuery(query); @@ -696,7 +685,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetContentForRelease() { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Published == false && x.ReleaseDate <= DateTime.Now); var contents = repository.GetByQuery(query); @@ -711,7 +700,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetContentInRecycleBin() { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Path.Contains(Constants.System.RecycleBinContent.ToInvariantString())); var contents = repository.GetByQuery(query); @@ -732,7 +721,7 @@ namespace Umbraco.Core.Services internal int CountChildren(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); var count = repository.Count(query); @@ -747,7 +736,7 @@ namespace Umbraco.Core.Services /// True if the content has any published version otherwise False public bool HasPublishedVersion(int id) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Published == true && x.Id == id && x.Trashed == false); int count = repository.Count(query); @@ -791,7 +780,7 @@ namespace Umbraco.Core.Services } catch (Exception ex) { - _logger.Error("An error occurred executing RePublishAll", ex); + Logger.Error("An error occurred executing RePublishAll", ex); return false; } } @@ -811,7 +800,7 @@ namespace Umbraco.Core.Services } catch (Exception ex) { - _logger.Error("An error occurred executing RePublishAll", ex); + Logger.Error("An error occurred executing RePublishAll", ex); } } @@ -824,7 +813,7 @@ namespace Umbraco.Core.Services public bool Publish(IContent content, int userId = 0) { var result = SaveAndPublishDo(content, userId); - _logger.Info("Call was made to ContentService.Publish, use PublishWithStatus instead since that method will provide more detailed information on the outcome"); + Logger.Info("Call was made to ContentService.Publish, use PublishWithStatus instead since that method will provide more detailed information on the outcome"); return result.Success; } @@ -941,8 +930,8 @@ namespace Umbraco.Core.Services { var containsNew = asArray.Any(x => x.HasIdentity == false); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { if (containsNew) { @@ -990,9 +979,9 @@ namespace Umbraco.Core.Services { using (new WriteLock(Locker)) { - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { - var repository = _repositoryFactory.CreateContentRepository(uow); + var repository = RepositoryFactory.CreateContentRepository(uow); //NOTE What about content that has the contenttype as part of its composition? var query = Query.Builder.Where(x => x.ContentTypeId == contentTypeId); var contents = repository.GetByQuery(query).ToArray(); @@ -1053,8 +1042,8 @@ namespace Umbraco.Core.Services Delete(child, userId); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { repository.Delete(content); uow.Commit(); @@ -1082,8 +1071,8 @@ namespace Umbraco.Core.Services if (DeletingVersions.IsRaisedEventCancelled(new DeleteRevisionsEventArgs(id, dateToRetain: versionDate), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { repository.DeleteVersions(id, versionDate); uow.Commit(); @@ -1115,8 +1104,8 @@ namespace Umbraco.Core.Services DeleteVersions(id, content.UpdateDate, userId); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { repository.DeleteVersion(versionId); uow.Commit(); @@ -1165,8 +1154,8 @@ namespace Umbraco.Core.Services UnPublish(descendant, userId); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { content.WriterId = userId; content.ChangeTrashedState(true); @@ -1244,7 +1233,7 @@ namespace Umbraco.Core.Services bool success; var nodeObjectType = new Guid(Constants.ObjectTypes.Document); - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { //Create a dictionary of ids -> dictionary of property aliases + values entities = repository.GetEntitiesInRecycleBin() @@ -1295,8 +1284,8 @@ namespace Umbraco.Core.Services if (Copying.IsRaisedEventCancelled(new CopyEventArgs(content, copy, parentId), this)) return null; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { // Update the create author and last edit author copy.CreatorId = userId; @@ -1381,8 +1370,8 @@ namespace Umbraco.Core.Services if (RollingBack.IsRaisedEventCancelled(new RollbackEventArgs(content), this)) return content; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { content.WriterId = userId; content.CreatorId = userId; @@ -1427,8 +1416,8 @@ namespace Umbraco.Core.Services var asArray = items.ToArray(); using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { int i = 0; foreach (var content in asArray) @@ -1489,13 +1478,13 @@ namespace Umbraco.Core.Services /// public void RebuildXmlStructures(params int[] contentTypeIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { repository.RebuildXmlStructures( content => _entitySerializer.Serialize(this, _dataTypeService, _userService, content), contentTypeIds: contentTypeIds.Length == 0 ? null : contentTypeIds); - + uow.Commit(); } @@ -1512,7 +1501,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects internal IEnumerable GetPublishedDescendants(IContent content) { - using (var repository = _repositoryFactory.CreateContentRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Id != content.Id && x.Path.StartsWith(content.Path) && x.Trashed == false); var contents = repository.GetByPublishedVersion(query); @@ -1527,8 +1516,8 @@ namespace Umbraco.Core.Services private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); @@ -1580,7 +1569,7 @@ namespace Umbraco.Core.Services //TODO: This shouldn't be here! This needs to be part of the repository logic but in order to fix this we need to // change how this method calls "Save" as it needs to save using an internal method - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { var xml = _entitySerializer.Serialize(this, _dataTypeService, _userService, content); @@ -1634,7 +1623,7 @@ namespace Umbraco.Core.Services //Check if parent is published (although not if its a root node) - if parent isn't published this Content cannot be published if (content.ParentId != Constants.System.Root && content.ParentId != Constants.System.RecycleBinContent && IsPublishable(content) == false) { - _logger.Info( + Logger.Info( string.Format( "Content '{0}' with Id '{1}' could not be published because its parent or one of its ancestors is not published.", content.Name, content.Id)); @@ -1645,7 +1634,7 @@ namespace Umbraco.Core.Services //Content contains invalid property values and can therefore not be published - fire event? if (!content.IsValid()) { - _logger.Info( + Logger.Info( string.Format("Content '{0}' with Id '{1}' could not be published because of invalid properties.", content.Name, content.Id)); result.Add( @@ -1670,8 +1659,8 @@ namespace Umbraco.Core.Services //Publish and then update the database with new status var publishedOutcome = internalStrategy.PublishWithChildrenInternal(list, userId, includeUnpublished).ToArray(); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { //NOTE The Publish with subpages-dialog was used more as a republish-type-thing, so we'll have to include PublishStatusType.SuccessAlreadyPublished //in the updated-list, so the Published event is triggered with the expected set of pages and the xml is updated. @@ -1712,8 +1701,8 @@ namespace Umbraco.Core.Services var unpublished = _publishingStrategy.UnPublish(content, userId); if (unpublished) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { content.WriterId = userId; repository.AddOrUpdate(content); @@ -1777,8 +1766,8 @@ namespace Umbraco.Core.Services //we are successfully published if our publishStatus is still Successful bool published = publishStatus.StatusType == PublishStatusType.Success; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { //Since this is the Save and Publish method, the content should be saved even though the publish fails or isn't allowed if (content.HasIdentity == false) @@ -1841,8 +1830,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentRepository(uow)) { if (content.HasIdentity == false) { @@ -1908,7 +1897,7 @@ namespace Umbraco.Core.Services //Check if parent is published (although not if its a root node) - if parent isn't published this Content cannot be published if (content.ParentId != Constants.System.Root && content.ParentId != Constants.System.RecycleBinContent && IsPublishable(content) == false) { - _logger.Info( + Logger.Info( string.Format( "Content '{0}' with Id '{1}' could not be published because its parent is not published.", content.Name, content.Id)); @@ -1923,7 +1912,7 @@ namespace Umbraco.Core.Services //Content contains invalid property values and can therefore not be published - fire event? if (content.IsValid() == false) { - _logger.Info( + Logger.Info( string.Format( "Content '{0}' with Id '{1}' could not be published because of invalid properties.", content.Name, content.Id)); @@ -1935,7 +1924,7 @@ namespace Umbraco.Core.Services private IContentType FindContentTypeByAlias(string contentTypeAlias) { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Alias == contentTypeAlias); var types = repository.GetByQuery(query); diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs index 539eab8987..9bff23a99b 100644 --- a/src/Umbraco.Core/Services/ContentTypeService.cs +++ b/src/Umbraco.Core/Services/ContentTypeService.cs @@ -25,46 +25,49 @@ namespace Umbraco.Core.Services /// public class ContentTypeService : ContentTypeServiceBase, IContentTypeService { - private readonly RepositoryFactory _repositoryFactory; private readonly IContentService _contentService; private readonly IMediaService _mediaService; - private readonly ILogger _logger; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; + //Support recursive locks because some of the methods that require locking call other methods that require locking. //for example, the Move method needs to be locked but this calls the Save method which also needs to be locked. private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); [Obsolete("Use the constructors that specify all dependencies instead")] - public ContentTypeService(ILogger logger, IContentService contentService, IMediaService mediaService) - : this(logger, new PetaPocoUnitOfWorkProvider(logger), new RepositoryFactory(), contentService, mediaService) + public ContentTypeService(IContentService contentService, IMediaService mediaService) + : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), new RepositoryFactory(), contentService, mediaService) {} [Obsolete("Use the constructors that specify all dependencies instead")] - public ContentTypeService(ILogger logger, RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService) - : this(logger, new PetaPocoUnitOfWorkProvider(), repositoryFactory, contentService, mediaService) + public ContentTypeService( RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService) + : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory, contentService, mediaService) { } - public ContentTypeService(ILogger logger, IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService) + [Obsolete("Use the constructors that specify all dependencies instead")] + public ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService) + : base(provider, repositoryFactory, LoggerResolver.Current.Logger) { - if (logger == null) throw new ArgumentNullException("logger"); - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); if (contentService == null) throw new ArgumentNullException("contentService"); if (mediaService == null) throw new ArgumentNullException("mediaService"); - _logger = logger; - _uowProvider = provider; - _repositoryFactory = repositoryFactory; _contentService = contentService; _mediaService = mediaService; } + public ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IContentService contentService, IMediaService mediaService) + : base(provider, repositoryFactory, logger) + { + if (contentService == null) throw new ArgumentNullException("contentService"); + if (mediaService == null) throw new ArgumentNullException("mediaService"); + _contentService = contentService; + _mediaService = mediaService; + } + /// /// Gets all property type aliases. /// /// public IEnumerable GetAllPropertyTypeAliases() { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { return repository.GetAllPropertyTypeAliases(); } @@ -160,7 +163,7 @@ namespace Umbraco.Core.Services /// public IContentType GetContentType(int id) { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -173,7 +176,7 @@ namespace Umbraco.Core.Services /// public IContentType GetContentType(string alias) { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Alias == alias); var contentTypes = repository.GetByQuery(query); @@ -189,7 +192,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetAllContentTypes(params int[] ids) { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -202,7 +205,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetContentTypeChildren(int id) { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); var contentTypes = repository.GetByQuery(query); @@ -217,7 +220,7 @@ namespace Umbraco.Core.Services ///// //internal IEnumerable GetDescendantContentTypeIds(int contentTypeId) //{ - // using (var uow = _uowProvider.GetUnitOfWork()) + // using (var uow = UowProvider.GetUnitOfWork()) // { // //method to return the child content type ids for the id specified // Func getChildIds = @@ -237,7 +240,7 @@ namespace Umbraco.Core.Services /// True if the content type has any children otherwise False public bool HasChildren(int id) { - using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateContentTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); int count = repository.Count(query); @@ -365,8 +368,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentTypeRepository(uow)) { ValidateLocked(contentType); // throws if invalid contentType.CreatorId = userId; @@ -395,8 +398,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentTypeRepository(uow)) { // all-or-nothing, validate them all first foreach (var contentType in asArray) @@ -434,8 +437,8 @@ namespace Umbraco.Core.Services { _contentService.DeleteContentOfType(contentType.Id); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentTypeRepository(uow)) { repository.Delete(contentType); uow.Commit(); @@ -469,8 +472,8 @@ namespace Umbraco.Core.Services _contentService.DeleteContentOfType(contentType.Id); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateContentTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateContentTypeRepository(uow)) { foreach (var contentType in asArray) { @@ -493,7 +496,7 @@ namespace Umbraco.Core.Services /// public IMediaType GetMediaType(int id) { - using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -506,7 +509,7 @@ namespace Umbraco.Core.Services /// public IMediaType GetMediaType(string alias) { - using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Alias == alias); var contentTypes = repository.GetByQuery(query); @@ -522,7 +525,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetAllMediaTypes(params int[] ids) { - using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -535,7 +538,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetMediaTypeChildren(int id) { - using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); var contentTypes = repository.GetByQuery(query); @@ -550,7 +553,7 @@ namespace Umbraco.Core.Services /// True if the media type has any children otherwise False public bool MediaTypeHasChildren(int id) { - using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); int count = repository.Count(query); @@ -570,8 +573,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaTypeRepository(uow)) { ValidateLocked(mediaType); // throws if invalid mediaType.CreatorId = userId; @@ -601,8 +604,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaTypeRepository(uow)) { // all-or-nothing, validate them all first foreach (var mediaType in asArray) @@ -640,8 +643,8 @@ namespace Umbraco.Core.Services { _mediaService.DeleteMediaOfType(mediaType.Id, userId); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaTypeRepository(uow)) { repository.Delete(mediaType); @@ -673,8 +676,8 @@ namespace Umbraco.Core.Services _mediaService.DeleteMediaOfType(mediaType.Id); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaTypeRepository(uow)) { foreach (var mediaType in asArray) { @@ -746,8 +749,8 @@ namespace Umbraco.Core.Services private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); diff --git a/src/Umbraco.Core/Services/ContentTypeServiceBase.cs b/src/Umbraco.Core/Services/ContentTypeServiceBase.cs index b5115d61c2..d5ebaabdb6 100644 --- a/src/Umbraco.Core/Services/ContentTypeServiceBase.cs +++ b/src/Umbraco.Core/Services/ContentTypeServiceBase.cs @@ -1,12 +1,20 @@ using System.Collections.Generic; using System.Linq; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { - public class ContentTypeServiceBase + public class ContentTypeServiceBase : RepositoryService { + public ContentTypeServiceBase(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) + { + } + /// /// This is called after an content type is saved and is used to update the content xml structures in the database /// if they are required to be updated. diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index e6f5005197..a30945e5c2 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading; using Umbraco.Core.Auditing; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence; @@ -17,10 +18,8 @@ namespace Umbraco.Core.Services /// /// Represents the DataType Service, which is an easy access to operations involving /// - public class DataTypeService : IDataTypeService + public class DataTypeService : RepositoryService, IDataTypeService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; [Obsolete("Use the constructors that specify all dependencies instead")] public DataTypeService() @@ -39,10 +38,15 @@ namespace Umbraco.Core.Services { } + [Obsolete("Use the constructors that specify all dependencies instead")] public DataTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + : this(provider, repositoryFactory, LoggerResolver.Current.Logger) + { + } + + public DataTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - _repositoryFactory = repositoryFactory; - _uowProvider = provider; } /// @@ -52,7 +56,7 @@ namespace Umbraco.Core.Services /// public IDataTypeDefinition GetDataTypeDefinitionByName(string name) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { return repository.GetByQuery(new Query().Where(x => x.Name == name)).FirstOrDefault(); } @@ -65,7 +69,7 @@ namespace Umbraco.Core.Services /// public IDataTypeDefinition GetDataTypeDefinitionById(int id) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -78,7 +82,7 @@ namespace Umbraco.Core.Services /// public IDataTypeDefinition GetDataTypeDefinitionById(Guid id) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Key == id); var definitions = repository.GetByQuery(query); @@ -106,7 +110,7 @@ namespace Umbraco.Core.Services /// Collection of objects with a matching contorl id public IEnumerable GetDataTypeDefinitionByPropertyEditorAlias(string propertyEditorAlias) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.PropertyEditorAlias == propertyEditorAlias); var definitions = repository.GetByQuery(query); @@ -122,7 +126,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetAllDataTypeDefinitions(params int[] ids) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -135,7 +139,7 @@ namespace Umbraco.Core.Services /// An enumerable list of string values public IEnumerable GetPreValuesByDataTypeId(int id) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { var collection = repository.GetPreValuesCollectionByDataTypeId(id); //now convert the collection to a string list @@ -153,7 +157,7 @@ namespace Umbraco.Core.Services /// public PreValueCollection GetPreValuesCollectionByDataTypeId(int id) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { return repository.GetPreValuesCollectionByDataTypeId(id); } @@ -166,7 +170,7 @@ namespace Umbraco.Core.Services /// PreValue as a string public string GetPreValueAsString(int id) { - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork())) { return repository.GetPreValueAsString(id); } @@ -182,8 +186,8 @@ namespace Umbraco.Core.Services if (Saving.IsRaisedEventCancelled(new SaveEventArgs(dataTypeDefinition), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(uow)) { dataTypeDefinition.CreatorId = userId; repository.AddOrUpdate(dataTypeDefinition); @@ -219,8 +223,8 @@ namespace Umbraco.Core.Services return; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(uow)) { foreach (var dataTypeDefinition in dataTypeDefinitions) { @@ -246,7 +250,7 @@ namespace Umbraco.Core.Services { //TODO: Should we raise an event here since we are really saving values for the data type? - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { using (var transaction = uow.Database.GetTransaction()) { @@ -303,8 +307,8 @@ namespace Umbraco.Core.Services { //TODO: Should we raise an event here since we are really saving values for the data type? - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(uow)) { repository.AddOrUpdatePreValues(dataTypeDefinition, values); uow.Commit(); @@ -322,8 +326,8 @@ namespace Umbraco.Core.Services if (Saving.IsRaisedEventCancelled(new SaveEventArgs(dataTypeDefinition), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(uow)) { dataTypeDefinition.CreatorId = userId; @@ -356,8 +360,8 @@ namespace Umbraco.Core.Services if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(dataTypeDefinition), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDataTypeDefinitionRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(uow)) { repository.Delete(dataTypeDefinition); @@ -392,8 +396,8 @@ namespace Umbraco.Core.Services private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); diff --git a/src/Umbraco.Core/Services/EntityService.cs b/src/Umbraco.Core/Services/EntityService.cs index 0b3e4a924f..2bdd73288e 100644 --- a/src/Umbraco.Core/Services/EntityService.cs +++ b/src/Umbraco.Core/Services/EntityService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Umbraco.Core.CodeAnnotations; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; @@ -10,40 +11,36 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { - public class EntityService : IService, IEntityService + public class EntityService : RepositoryService, IEntityService { - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - private readonly RepositoryFactory _repositoryFactory; - private readonly IContentService _contentService; - private readonly IContentTypeService _contentTypeService; - private readonly IMediaService _mediaService; - private readonly IMemberService _memberService; - private readonly IMemberTypeService _memberTypeService; - private readonly IDataTypeService _dataTypeService; private readonly Dictionary>> _supportedObjectTypes; + [Obsolete("Use the constructors that specify all dependencies instead")] public EntityService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IContentService contentService, IContentTypeService contentTypeService, IMediaService mediaService, IDataTypeService dataTypeService, IMemberService memberService, IMemberTypeService memberTypeService) + : this(provider, repositoryFactory, LoggerResolver.Current.Logger, contentService, contentTypeService, mediaService, + dataTypeService, memberService, memberTypeService) { - _uowProvider = provider; - _repositoryFactory = repositoryFactory; - _contentService = contentService; - _contentTypeService = contentTypeService; - _mediaService = mediaService; - _dataTypeService = dataTypeService; - _memberService = memberService; - _memberTypeService = memberTypeService; + + } + + public EntityService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, + IContentService contentService, IContentTypeService contentTypeService, IMediaService mediaService, IDataTypeService dataTypeService, + IMemberService memberService, IMemberTypeService memberTypeService) + : base(provider, repositoryFactory, logger) + { + IContentTypeService contentTypeService1 = contentTypeService; _supportedObjectTypes = new Dictionary>> { - {typeof (IDataTypeDefinition).FullName, new Tuple>(UmbracoObjectTypes.DataType, _dataTypeService.GetDataTypeDefinitionById)}, - {typeof (IContent).FullName, new Tuple>(UmbracoObjectTypes.Document, _contentService.GetById)}, - {typeof (IContentType).FullName, new Tuple>(UmbracoObjectTypes.DocumentType, _contentTypeService.GetContentType)}, - {typeof (IMedia).FullName, new Tuple>(UmbracoObjectTypes.Media, _mediaService.GetById)}, - {typeof (IMediaType).FullName, new Tuple>(UmbracoObjectTypes.MediaType, _contentTypeService.GetMediaType)}, - {typeof (IMember).FullName, new Tuple>(UmbracoObjectTypes.Member, _memberService.GetById)}, - {typeof (IMemberType).FullName, new Tuple>(UmbracoObjectTypes.MemberType, _memberTypeService.Get)} + {typeof (IDataTypeDefinition).FullName, new Tuple>(UmbracoObjectTypes.DataType, dataTypeService.GetDataTypeDefinitionById)}, + {typeof (IContent).FullName, new Tuple>(UmbracoObjectTypes.Document, contentService.GetById)}, + {typeof (IContentType).FullName, new Tuple>(UmbracoObjectTypes.DocumentType, contentTypeService1.GetContentType)}, + {typeof (IMedia).FullName, new Tuple>(UmbracoObjectTypes.Media, mediaService.GetById)}, + {typeof (IMediaType).FullName, new Tuple>(UmbracoObjectTypes.MediaType, contentTypeService1.GetMediaType)}, + {typeof (IMember).FullName, new Tuple>(UmbracoObjectTypes.Member, memberService.GetById)}, + {typeof (IMemberType).FullName, new Tuple>(UmbracoObjectTypes.MemberType, memberTypeService.Get)} }; } @@ -51,7 +48,7 @@ namespace Umbraco.Core.Services { if (loadBaseType) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.GetByKey(key); } @@ -81,7 +78,7 @@ namespace Umbraco.Core.Services { if (loadBaseType) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -100,7 +97,7 @@ namespace Umbraco.Core.Services if (loadBaseType) { var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.GetByKey(key, objectTypeId); } @@ -131,7 +128,7 @@ namespace Umbraco.Core.Services if (loadBaseType) { var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id, objectTypeId); } @@ -163,7 +160,7 @@ namespace Umbraco.Core.Services { if (loadBaseType) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -187,7 +184,7 @@ namespace Umbraco.Core.Services /// An public virtual IUmbracoEntity GetParent(int id) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var entity = repository.Get(id); if (entity.ParentId == -1 || entity.ParentId == -20 || entity.ParentId == -21) @@ -205,7 +202,7 @@ namespace Umbraco.Core.Services /// An public virtual IUmbracoEntity GetParent(int id, UmbracoObjectTypes umbracoObjectType) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var entity = repository.Get(id); if (entity.ParentId == -1 || entity.ParentId == -20 || entity.ParentId == -21) @@ -223,7 +220,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public virtual IEnumerable GetChildren(int parentId) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == parentId); var contents = repository.GetByQuery(query); @@ -241,7 +238,7 @@ namespace Umbraco.Core.Services public virtual IEnumerable GetChildren(int parentId, UmbracoObjectTypes umbracoObjectType) { var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == parentId); var contents = repository.GetByQuery(query, objectTypeId); @@ -257,7 +254,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public virtual IEnumerable GetDescendents(int id) { - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var entity = repository.Get(id); var pathMatch = entity.Path + ","; @@ -277,7 +274,7 @@ namespace Umbraco.Core.Services public virtual IEnumerable GetDescendents(int id, UmbracoObjectTypes umbracoObjectType) { var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var entity = repository.Get(id); var query = Query.Builder.Where(x => x.Path.StartsWith(entity.Path) && x.Id != id); @@ -295,7 +292,7 @@ namespace Umbraco.Core.Services public virtual IEnumerable GetRootEntities(UmbracoObjectTypes umbracoObjectType) { var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == -1); var entities = repository.GetByQuery(query, objectTypeId); @@ -339,7 +336,7 @@ namespace Umbraco.Core.Services }); var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(objectTypeId, ids); } @@ -356,7 +353,7 @@ namespace Umbraco.Core.Services }); var objectTypeId = umbracoObjectType.GetGuid(); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(objectTypeId, keys); } @@ -379,7 +376,7 @@ namespace Umbraco.Core.Services ("The passed in type is not supported"); }); - using (var repository = _repositoryFactory.CreateEntityRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateEntityRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(objectTypeId, ids); } @@ -392,7 +389,7 @@ namespace Umbraco.Core.Services /// public virtual UmbracoObjectTypes GetObjectType(int id) { - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { var sql = new Sql().Select("nodeObjectType").From().Where(x => x.NodeId == id); var nodeObjectTypeId = uow.Database.ExecuteScalar(sql); @@ -408,7 +405,7 @@ namespace Umbraco.Core.Services /// public virtual UmbracoObjectTypes GetObjectType(Guid key) { - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { var sql = new Sql().Select("nodeObjectType").From().Where(x => x.UniqueId == key); var nodeObjectTypeId = uow.Database.ExecuteScalar(sql); diff --git a/src/Umbraco.Core/Services/ITaskService.cs b/src/Umbraco.Core/Services/ITaskService.cs new file mode 100644 index 0000000000..e59929d095 --- /dev/null +++ b/src/Umbraco.Core/Services/ITaskService.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Services +{ + public interface ITaskService + { + IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); + IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Services/LocalizationService.cs b/src/Umbraco.Core/Services/LocalizationService.cs index f5c489c89f..bd695b65e5 100644 --- a/src/Umbraco.Core/Services/LocalizationService.cs +++ b/src/Umbraco.Core/Services/LocalizationService.cs @@ -16,33 +16,30 @@ namespace Umbraco.Core.Services /// /// Represents the Localization Service, which is an easy access to operations involving and /// - public class LocalizationService : ILocalizationService + public class LocalizationService : RepositoryService, ILocalizationService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; private static readonly Guid RootParentId = new Guid(Constants.Conventions.Localization.DictionaryItemRootId); [Obsolete("Use the constructors that specify all dependencies instead")] public LocalizationService() : this(new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())) - {} + { } [Obsolete("Use the constructors that specify all dependencies instead")] public LocalizationService(RepositoryFactory repositoryFactory) - : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory) + : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory, LoggerResolver.Current.Logger) { } [Obsolete("Use the constructors that specify all dependencies instead")] public LocalizationService(IDatabaseUnitOfWorkProvider provider) - : this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())) + : this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), LoggerResolver.Current.Logger) { } - public LocalizationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + public LocalizationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - _repositoryFactory = repositoryFactory; - _uowProvider = provider; } /// @@ -83,8 +80,8 @@ namespace Umbraco.Core.Services /// public IDictionaryItem CreateDictionaryItemWithIdentity(string key, Guid? parentId, string defaultValue = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDictionaryRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDictionaryRepository(uow)) { //validate the parent if (parentId.HasValue && parentId.Value != Guid.Empty) @@ -127,7 +124,7 @@ namespace Umbraco.Core.Services /// public IDictionaryItem GetDictionaryItemById(int id) { - using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -140,7 +137,7 @@ namespace Umbraco.Core.Services /// public IDictionaryItem GetDictionaryItemById(Guid id) { - using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); //var query = Query.Builder.Where(x => x.Key == id); @@ -157,7 +154,7 @@ namespace Umbraco.Core.Services /// public IDictionaryItem GetDictionaryItemByKey(string key) { - using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { return repository.Get(key); //var query = Query.Builder.Where(x => x.ItemKey == key); @@ -174,7 +171,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetDictionaryItemChildren(Guid parentId) { - using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == parentId); var items = repository.GetByQuery(query); @@ -189,7 +186,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetRootDictionaryItems() { - using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == RootParentId); var items = repository.GetByQuery(query); @@ -205,7 +202,7 @@ namespace Umbraco.Core.Services /// True if a exists, otherwise false public bool DictionaryItemExists(string key) { - using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateDictionaryRepository(UowProvider.GetUnitOfWork())) { return repository.Get(key) != null; //var query = Query.Builder.Where(x => x.ItemKey == key); @@ -222,19 +219,19 @@ namespace Umbraco.Core.Services /// Optional id of the user saving the dictionary item public void Save(IDictionaryItem dictionaryItem, int userId = 0) { - if (SavingDictionaryItem.IsRaisedEventCancelled(new SaveEventArgs(dictionaryItem), this)) - return; - - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDictionaryRepository(uow)) - { - repository.AddOrUpdate(dictionaryItem); - uow.Commit(); - } + if (SavingDictionaryItem.IsRaisedEventCancelled(new SaveEventArgs(dictionaryItem), this)) + return; + + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDictionaryRepository(uow)) + { + repository.AddOrUpdate(dictionaryItem); + uow.Commit(); + } SavedDictionaryItem.RaiseEvent(new SaveEventArgs(dictionaryItem, false), this); - Audit(AuditType.Save, "Save DictionaryItem performed by user", userId, dictionaryItem.Id); + Audit(AuditType.Save, "Save DictionaryItem performed by user", userId, dictionaryItem.Id); } /// @@ -245,20 +242,20 @@ namespace Umbraco.Core.Services /// Optional id of the user deleting the dictionary item public void Delete(IDictionaryItem dictionaryItem, int userId = 0) { - if (DeletingDictionaryItem.IsRaisedEventCancelled(new DeleteEventArgs(dictionaryItem), this)) - return; - - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateDictionaryRepository(uow)) - { - //NOTE: The recursive delete is done in the repository - repository.Delete(dictionaryItem); - uow.Commit(); - } + if (DeletingDictionaryItem.IsRaisedEventCancelled(new DeleteEventArgs(dictionaryItem), this)) + return; + + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateDictionaryRepository(uow)) + { + //NOTE: The recursive delete is done in the repository + repository.Delete(dictionaryItem); + uow.Commit(); + } DeletedDictionaryItem.RaiseEvent(new DeleteEventArgs(dictionaryItem, false), this); - Audit(AuditType.Delete, "Delete DictionaryItem performed by user", userId, dictionaryItem.Id); + Audit(AuditType.Delete, "Delete DictionaryItem performed by user", userId, dictionaryItem.Id); } /// @@ -268,7 +265,7 @@ namespace Umbraco.Core.Services /// public ILanguage GetLanguageById(int id) { - using (var repository = _repositoryFactory.CreateLanguageRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateLanguageRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -281,7 +278,7 @@ namespace Umbraco.Core.Services /// public ILanguage GetLanguageByCultureCode(string cultureName) { - using (var repository = _repositoryFactory.CreateLanguageRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateLanguageRepository(UowProvider.GetUnitOfWork())) { return repository.GetByCultureName(cultureName); //var query = Query.Builder.Where(x => x.CultureName == cultureName); @@ -298,7 +295,7 @@ namespace Umbraco.Core.Services /// public ILanguage GetLanguageByIsoCode(string isoCode) { - using (var repository = _repositoryFactory.CreateLanguageRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateLanguageRepository(UowProvider.GetUnitOfWork())) { return repository.GetByIsoCode(isoCode); //var query = Query.Builder.Where(x => x.IsoCode == isoCode); @@ -314,7 +311,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetAllLanguages() { - using (var repository = _repositoryFactory.CreateLanguageRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateLanguageRepository(UowProvider.GetUnitOfWork())) { var languages = repository.GetAll(); return languages; @@ -328,19 +325,19 @@ namespace Umbraco.Core.Services /// Optional id of the user saving the language public void Save(ILanguage language, int userId = 0) { - if (SavingLanguage.IsRaisedEventCancelled(new SaveEventArgs(language), this)) - return; - - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateLanguageRepository(uow)) - { - repository.AddOrUpdate(language); - uow.Commit(); - } + if (SavingLanguage.IsRaisedEventCancelled(new SaveEventArgs(language), this)) + return; + + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateLanguageRepository(uow)) + { + repository.AddOrUpdate(language); + uow.Commit(); + } SavedLanguage.RaiseEvent(new SaveEventArgs(language, false), this); - Audit(AuditType.Save, "Save Language performed by user", userId, language.Id); + Audit(AuditType.Save, "Save Language performed by user", userId, language.Id); } /// @@ -350,26 +347,26 @@ namespace Umbraco.Core.Services /// Optional id of the user deleting the language public void Delete(ILanguage language, int userId = 0) { - if (DeletingLanguage.IsRaisedEventCancelled(new DeleteEventArgs(language), this)) - return; - - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateLanguageRepository(uow)) - { - //NOTE: There isn't any constraints in the db, so possible references aren't deleted - repository.Delete(language); - uow.Commit(); - } + if (DeletingLanguage.IsRaisedEventCancelled(new DeleteEventArgs(language), this)) + return; + + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateLanguageRepository(uow)) + { + //NOTE: There isn't any constraints in the db, so possible references aren't deleted + repository.Delete(language); + uow.Commit(); + } DeletedLanguage.RaiseEvent(new DeleteEventArgs(language, false), this); - Audit(AuditType.Delete, "Delete Language performed by user", userId, language.Id); + Audit(AuditType.Delete, "Delete Language performed by user", userId, language.Id); } private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); @@ -377,45 +374,45 @@ namespace Umbraco.Core.Services } #region Event Handlers - /// - /// Occurs before Delete - /// - public static event TypedEventHandler> DeletingLanguage; - - /// - /// Occurs after Delete - /// - public static event TypedEventHandler> DeletedLanguage; - - /// + /// /// Occurs before Delete /// - public static event TypedEventHandler> DeletingDictionaryItem; + public static event TypedEventHandler> DeletingLanguage; /// /// Occurs after Delete /// - public static event TypedEventHandler> DeletedDictionaryItem; + public static event TypedEventHandler> DeletedLanguage; + + /// + /// Occurs before Delete + /// + public static event TypedEventHandler> DeletingDictionaryItem; + + /// + /// Occurs after Delete + /// + public static event TypedEventHandler> DeletedDictionaryItem; /// /// Occurs before Save /// - public static event TypedEventHandler> SavingDictionaryItem; + public static event TypedEventHandler> SavingDictionaryItem; /// /// Occurs after Save /// - public static event TypedEventHandler> SavedDictionaryItem; + public static event TypedEventHandler> SavedDictionaryItem; - /// - /// Occurs before Save - /// - public static event TypedEventHandler> SavingLanguage; + /// + /// Occurs before Save + /// + public static event TypedEventHandler> SavingLanguage; - /// - /// Occurs after Save - /// - public static event TypedEventHandler> SavedLanguage; + /// + /// Occurs after Save + /// + public static event TypedEventHandler> SavedLanguage; #endregion } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index edaa584b73..bfa201e718 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -5,6 +5,7 @@ using System.Text.RegularExpressions; using Umbraco.Core.Auditing; using Umbraco.Core.Events; using Umbraco.Core.IO; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -16,10 +17,8 @@ namespace Umbraco.Core.Services /// /// Represents the Macro Service, which is an easy access to operations involving /// - public class MacroService : IMacroService + public class MacroService : RepositoryService, IMacroService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; [Obsolete("Use the constructors that specify all dependencies instead")] public MacroService() @@ -33,10 +32,15 @@ namespace Umbraco.Core.Services { } + [Obsolete("Use the constructors that specify all dependencies instead")] public MacroService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + : this(provider, repositoryFactory, LoggerResolver.Current.Logger) + { + } + + public MacroService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - _uowProvider = provider; - _repositoryFactory = repositoryFactory; } /// @@ -75,7 +79,7 @@ namespace Umbraco.Core.Services /// An object public IMacro GetByAlias(string alias) { - using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMacroRepository(UowProvider.GetUnitOfWork())) { var q = new Query(); q.Where(macro => macro.Alias == alias); @@ -90,7 +94,7 @@ namespace Umbraco.Core.Services ///// An enumerable list of objects //public IEnumerable GetAll(params string[] aliases) //{ - // using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + // using (var repository = RepositoryFactory.CreateMacroRepository(UowProvider.GetUnitOfWork())) // { // if (aliases.Any()) // { @@ -103,7 +107,7 @@ namespace Umbraco.Core.Services public IEnumerable GetAll(params int[] ids) { - using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMacroRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -111,7 +115,7 @@ namespace Umbraco.Core.Services public IMacro GetById(int id) { - using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMacroRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -137,8 +141,8 @@ namespace Umbraco.Core.Services if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(macro), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMacroRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMacroRepository(uow)) { repository.Delete(macro); uow.Commit(); @@ -159,8 +163,8 @@ namespace Umbraco.Core.Services if (Saving.IsRaisedEventCancelled(new SaveEventArgs(macro), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMacroRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMacroRepository(uow)) { repository.AddOrUpdate(macro); uow.Commit(); @@ -192,8 +196,8 @@ namespace Umbraco.Core.Services private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs index c0032c840c..2c4546479b 100644 --- a/src/Umbraco.Core/Services/MediaService.cs +++ b/src/Umbraco.Core/Services/MediaService.cs @@ -8,6 +8,7 @@ using System.Xml.Linq; using Umbraco.Core.Auditing; using Umbraco.Core.Configuration; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence; @@ -23,10 +24,8 @@ namespace Umbraco.Core.Services /// /// Represents the Media Service, which is an easy access to operations involving /// - public class MediaService : IMediaService + public class MediaService : RepositoryService, IMediaService { - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - private readonly RepositoryFactory _repositoryFactory; //Support recursive locks because some of the methods that require locking call other methods that require locking. //for example, the Move method needs to be locked but this calls the Save method which also needs to be locked. @@ -44,17 +43,23 @@ namespace Umbraco.Core.Services [Obsolete("Use the constructors that specify all dependencies instead")] public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + : base(provider, repositoryFactory, LoggerResolver.Current.Logger) { - _uowProvider = provider; - _repositoryFactory = repositoryFactory; _dataTypeService = new DataTypeService(provider, repositoryFactory); _userService = new UserService(provider, repositoryFactory); } + [Obsolete("Use the constructors that specify all dependencies instead")] public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IDataTypeService dataTypeService, IUserService userService) + : this(provider, repositoryFactory, LoggerResolver.Current.Logger, dataTypeService, userService) { - _uowProvider = provider; - _repositoryFactory = repositoryFactory; + } + + public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IDataTypeService dataTypeService, IUserService userService) + : base(provider, repositoryFactory, logger) + { + if (dataTypeService == null) throw new ArgumentNullException("dataTypeService"); + if (userService == null) throw new ArgumentNullException("userService"); _dataTypeService = dataTypeService; _userService = userService; } @@ -158,8 +163,8 @@ namespace Umbraco.Core.Services return media; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { media.CreatorId = userId; repository.AddOrUpdate(media); @@ -215,8 +220,8 @@ namespace Umbraco.Core.Services return media; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { media.CreatorId = userId; repository.AddOrUpdate(media); @@ -246,8 +251,8 @@ namespace Umbraco.Core.Services /// public IMedia GetById(int id) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { return repository.Get(id); } @@ -255,8 +260,8 @@ namespace Umbraco.Core.Services public int Count(string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { return repository.Count(contentTypeAlias); } @@ -264,8 +269,8 @@ namespace Umbraco.Core.Services public int CountChildren(int parentId, string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { return repository.CountChildren(parentId, contentTypeAlias); } @@ -273,8 +278,8 @@ namespace Umbraco.Core.Services public int CountDescendants(int parentId, string contentTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { return repository.CountDescendants(parentId, contentTypeAlias); } @@ -287,7 +292,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetByIds(IEnumerable ids) { - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids.ToArray()); } @@ -300,7 +305,7 @@ namespace Umbraco.Core.Services /// public IMedia GetById(Guid key) { - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Key == key); var contents = repository.GetByQuery(query); @@ -315,7 +320,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetByLevel(int level) { - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Level == level && !x.Path.StartsWith("-21")); var contents = repository.GetByQuery(query); @@ -331,7 +336,7 @@ namespace Umbraco.Core.Services /// An item public IMedia GetByVersion(Guid versionId) { - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { return repository.GetByVersion(versionId); } @@ -344,7 +349,7 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetVersions(int id) { - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { var versions = repository.GetAllVersions(id); return versions; @@ -373,7 +378,7 @@ namespace Umbraco.Core.Services if (ids.Any() == false) return new List(); - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -386,8 +391,8 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetChildren(int id) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { var query = Query.Builder.Where(x => x.ParentId == id); var medias = repository.GetByQuery(query); @@ -412,7 +417,7 @@ namespace Umbraco.Core.Services { Mandate.ParameterCondition(pageIndex >= 0, "pageSize"); Mandate.ParameterCondition(pageSize > 0, "pageSize"); - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder; //if the id is -1, then just get all @@ -441,7 +446,7 @@ namespace Umbraco.Core.Services { Mandate.ParameterCondition(pageIndex >= 0, "pageSize"); Mandate.ParameterCondition(pageSize > 0, "pageSize"); - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder; @@ -478,8 +483,8 @@ namespace Umbraco.Core.Services /// An Enumerable flat list of objects public IEnumerable GetDescendants(IMedia media) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { var pathMatch = media.Path + ","; var query = Query.Builder.Where(x => x.Path.StartsWith(pathMatch) && x.Id != media.Id); @@ -520,8 +525,8 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetMediaOfMediaType(int id) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { var query = Query.Builder.Where(x => x.ContentTypeId == id); var medias = repository.GetByQuery(query); @@ -536,8 +541,8 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetRootMedia() { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { var query = Query.Builder.Where(x => x.ParentId == -1); var medias = repository.GetByQuery(query); @@ -552,8 +557,8 @@ namespace Umbraco.Core.Services /// An Enumerable list of objects public IEnumerable GetMediaInRecycleBin() { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { var query = Query.Builder.Where(x => x.Path.Contains("-21")); var medias = repository.GetByQuery(query); @@ -590,7 +595,7 @@ namespace Umbraco.Core.Services var sql = createSql(umbracoFileValue); - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { var propertyDataDto = uow.Database.Fetch(sql).FirstOrDefault(); @@ -613,7 +618,7 @@ namespace Umbraco.Core.Services /// True if the media has any children otherwise False public bool HasChildren(int id) { - using (var repository = _repositoryFactory.CreateMediaRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMediaRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ParentId == id); int count = repository.Count(query); @@ -711,8 +716,8 @@ namespace Umbraco.Core.Services //Find Descendants, which will be moved to the recycle bin along with the parent/grandparent. var descendants = GetDescendants(media).OrderBy(x => x.Level).ToList(); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { //TODO: This should be part of the repo! @@ -754,8 +759,8 @@ namespace Umbraco.Core.Services bool success; var nodeObjectType = new Guid(Constants.ObjectTypes.Media); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { //Create a dictionary of ids -> dictionary of property aliases + values entities = repository.GetEntitiesInRecycleBin() @@ -791,8 +796,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { //NOTE What about media that has the contenttype as part of its composition? //The ContentType has to be removed from the composition somehow as it would otherwise break @@ -848,8 +853,8 @@ namespace Umbraco.Core.Services Delete(child, userId); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { repository.Delete(media); uow.Commit(); @@ -876,8 +881,8 @@ namespace Umbraco.Core.Services if (DeletingVersions.IsRaisedEventCancelled(new DeleteRevisionsEventArgs(id, dateToRetain: versionDate), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { repository.DeleteVersions(id, versionDate); uow.Commit(); @@ -907,8 +912,8 @@ namespace Umbraco.Core.Services DeleteVersions(id, content.UpdateDate, userId); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { repository.DeleteVersion(versionId); uow.Commit(); @@ -933,8 +938,8 @@ namespace Umbraco.Core.Services return; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { media.CreatorId = userId; repository.AddOrUpdate(media); @@ -970,8 +975,8 @@ namespace Umbraco.Core.Services return; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { foreach (var media in asArray) { @@ -1013,8 +1018,8 @@ namespace Umbraco.Core.Services return false; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { int i = 0; foreach (var media in asArray) @@ -1060,8 +1065,8 @@ namespace Umbraco.Core.Services /// public void RebuildXmlStructures(params int[] contentTypeIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaRepository(uow)) { repository.RebuildXmlStructures( media => _entitySerializer.Serialize(this, _dataTypeService, _userService, media), @@ -1117,8 +1122,8 @@ namespace Umbraco.Core.Services { Mandate.ParameterNotNullOrEmpty(mediaTypeAlias, "mediaTypeAlias"); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMediaTypeRepository(uow)) { var query = Query.Builder.Where(x => x.Alias == mediaTypeAlias); var mediaTypes = repository.GetByQuery(query); @@ -1139,8 +1144,8 @@ namespace Umbraco.Core.Services private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); diff --git a/src/Umbraco.Core/Services/MemberGroupService.cs b/src/Umbraco.Core/Services/MemberGroupService.cs index dd223e69ba..0f75bec93e 100644 --- a/src/Umbraco.Core/Services/MemberGroupService.cs +++ b/src/Umbraco.Core/Services/MemberGroupService.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -10,10 +11,8 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { - public class MemberGroupService : IMemberGroupService + public class MemberGroupService : RepositoryService, IMemberGroupService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; [Obsolete("Use the constructors that specify all dependencies instead")] public MemberGroupService(RepositoryFactory repositoryFactory) @@ -27,11 +26,15 @@ namespace Umbraco.Core.Services { } + [Obsolete("Use the constructors that specify all dependencies instead")] public MemberGroupService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) - { - _repositoryFactory = repositoryFactory; - _uowProvider = provider; + : this(provider, repositoryFactory, LoggerResolver.Current.Logger) + { + } + public MemberGroupService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) + { //Proxy events! MemberGroupRepository.SavedMemberGroup += MemberGroupRepository_SavedMemberGroup; MemberGroupRepository.SavingMemberGroup += MemberGroupRepository_SavingMemberGroup; @@ -54,7 +57,7 @@ namespace Umbraco.Core.Services public IEnumerable GetAll() { - using (var repository = _repositoryFactory.CreateMemberGroupRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberGroupRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(); } @@ -62,7 +65,7 @@ namespace Umbraco.Core.Services public IMemberGroup GetById(int id) { - using (var repository = _repositoryFactory.CreateMemberGroupRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberGroupRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -70,7 +73,7 @@ namespace Umbraco.Core.Services public IMemberGroup GetByName(string name) { - using (var repository = _repositoryFactory.CreateMemberGroupRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberGroupRepository(UowProvider.GetUnitOfWork())) { return repository.GetByName(name); } @@ -86,8 +89,8 @@ namespace Umbraco.Core.Services } } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.AddOrUpdate(memberGroup); uow.Commit(); @@ -102,8 +105,8 @@ namespace Umbraco.Core.Services if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(memberGroup), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.Delete(memberGroup); uow.Commit(); diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs index 28511f4cfa..2bb1643b71 100644 --- a/src/Umbraco.Core/Services/MemberService.cs +++ b/src/Umbraco.Core/Services/MemberService.cs @@ -6,6 +6,7 @@ using System.Xml.Linq; using Umbraco.Core.Auditing; using Umbraco.Core.Configuration; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; @@ -22,11 +23,9 @@ namespace Umbraco.Core.Services /// /// Represents the MemberService. /// - public class MemberService : IMemberService + public class MemberService : RepositoryService, IMemberService { - private readonly RepositoryFactory _repositoryFactory; private readonly IMemberGroupService _memberGroupService; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; private readonly EntityXmlSerializer _entitySerializer = new EntityXmlSerializer(); private readonly IDataTypeService _dataTypeService; private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(); @@ -45,31 +44,26 @@ namespace Umbraco.Core.Services [Obsolete("Use the constructors that specify all dependencies instead")] public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService) + : base(provider, repositoryFactory, LoggerResolver.Current.Logger) { - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); if (memberGroupService == null) throw new ArgumentNullException("memberGroupService"); - _repositoryFactory = repositoryFactory; _memberGroupService = memberGroupService; - _uowProvider = provider; _dataTypeService = new DataTypeService(provider, repositoryFactory); } [Obsolete("Use the constructors that specify all dependencies instead")] public MemberService(IDatabaseUnitOfWorkProvider provider, IMemberGroupService memberGroupService, IDataTypeService dataTypeService) - : this(provider, new RepositoryFactory(), memberGroupService, dataTypeService) + : this(provider, new RepositoryFactory(), LoggerResolver.Current.Logger, memberGroupService, dataTypeService) { } - public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService, IDataTypeService dataTypeService) + public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IMemberGroupService memberGroupService, IDataTypeService dataTypeService) + : base(provider, repositoryFactory, logger) { - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); if (memberGroupService == null) throw new ArgumentNullException("memberGroupService"); - _repositoryFactory = repositoryFactory; + if (dataTypeService == null) throw new ArgumentNullException("dataTypeService"); _memberGroupService = memberGroupService; - _uowProvider = provider; _dataTypeService = dataTypeService; } @@ -83,7 +77,7 @@ namespace Umbraco.Core.Services /// Alias of the default MemberType public string GetDefaultMemberType() { - using (var repository = _repositoryFactory.CreateMemberTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { var types = repository.GetAll().Select(x => x.Alias).ToArray(); @@ -108,7 +102,7 @@ namespace Umbraco.Core.Services /// True if the Member exists otherwise False public bool Exists(string username) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { return repository.Exists(username); } @@ -154,7 +148,7 @@ namespace Umbraco.Core.Services /// True if the Member exists otherwise False public bool Exists(int id) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { return repository.Exists(id); } @@ -167,7 +161,7 @@ namespace Umbraco.Core.Services /// public IMember GetById(int id) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -182,7 +176,7 @@ namespace Umbraco.Core.Services /// public IMember GetByKey(Guid id) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Key == id); var member = repository.GetByQuery(query).FirstOrDefault(); @@ -197,7 +191,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByMemberType(string memberTypeAlias) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.ContentTypeAlias == memberTypeAlias); var members = repository.GetByQuery(query); @@ -212,7 +206,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByMemberType(int memberTypeId) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { repository.Get(memberTypeId); var query = Query.Builder.Where(x => x.ContentTypeId == memberTypeId); @@ -228,7 +222,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByGroup(string memberGroupName) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { return repository.GetByMemberGroup(memberGroupName); } @@ -242,7 +236,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetAllMembers(params int[] ids) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -256,9 +250,9 @@ namespace Umbraco.Core.Services { using (new WriteLock(Locker)) { - using (var uow = _uowProvider.GetUnitOfWork()) + using (var uow = UowProvider.GetUnitOfWork()) { - var repository = _repositoryFactory.CreateMemberRepository(uow); + var repository = RepositoryFactory.CreateMemberRepository(uow); //TODO: What about content that has the contenttype as part of its composition? var query = Query.Builder.Where(x => x.ContentTypeId == memberTypeId); var members = repository.GetByQuery(query).ToArray(); @@ -286,8 +280,8 @@ namespace Umbraco.Core.Services /// public IEnumerable FindMembersByDisplayName(string displayNameToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { var query = new Query(); @@ -327,8 +321,8 @@ namespace Umbraco.Core.Services /// public IEnumerable FindByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { var query = new Query(); @@ -368,8 +362,8 @@ namespace Umbraco.Core.Services /// public IEnumerable FindByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { var query = new Query(); @@ -407,7 +401,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, string value, StringPropertyMatchType matchType = StringPropertyMatchType.Exact) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { IQuery query; @@ -463,7 +457,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, int value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { IQuery query; @@ -521,7 +515,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, bool value) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where( @@ -543,7 +537,7 @@ namespace Umbraco.Core.Services /// public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, DateTime value, ValuePropertyMatchType matchType = ValuePropertyMatchType.Exact) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { IQuery query; @@ -604,8 +598,8 @@ namespace Umbraco.Core.Services /// True if publishing succeeded, otherwise False public void RebuildXmlStructures(params int[] memberTypeIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { repository.RebuildXmlStructures( member => _entitySerializer.Serialize(_dataTypeService, member), @@ -631,7 +625,7 @@ namespace Umbraco.Core.Services /// with number of Members for passed in type public int GetCount(MemberCountType countType) { - using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberRepository(UowProvider.GetUnitOfWork())) { IQuery query; @@ -678,8 +672,8 @@ namespace Umbraco.Core.Services /// public IEnumerable GetAll(int pageIndex, int pageSize, out int totalRecords) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { return repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, "LoginName", Direction.Ascending); } @@ -688,8 +682,8 @@ namespace Umbraco.Core.Services public IEnumerable GetAll(int pageIndex, int pageSize, out int totalRecords, string orderBy, Direction orderDirection, string memberTypeAlias = null, string filter = "") { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { if (memberTypeAlias == null) { @@ -708,8 +702,8 @@ namespace Umbraco.Core.Services /// with number of Members public int Count(string memberTypeAlias = null) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { return repository.Count(memberTypeAlias); } @@ -835,8 +829,8 @@ namespace Umbraco.Core.Services return member; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { repository.AddOrUpdate(member); //insert the xml @@ -884,8 +878,8 @@ namespace Umbraco.Core.Services /// public IMember GetByEmail(string email) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { var query = Query.Builder.Where(x => x.Email.Equals(email)); var member = repository.GetByQuery(query).FirstOrDefault(); @@ -905,8 +899,8 @@ namespace Umbraco.Core.Services // a caching mechanism since this method is used by all the membership providers and could be // called quite a bit when dealing with members. - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { var query = Query.Builder.Where(x => x.Username.Equals(username)); var member = repository.GetByQuery(query).FirstOrDefault(); @@ -924,8 +918,8 @@ namespace Umbraco.Core.Services if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs(member), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { repository.Delete(member); uow.Commit(); @@ -950,8 +944,8 @@ namespace Umbraco.Core.Services } } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { repository.AddOrUpdate(entity); repository.AddOrUpdateContentXml(entity, m => _entitySerializer.Serialize(_dataTypeService, m)); @@ -985,8 +979,8 @@ namespace Umbraco.Core.Services } using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { foreach (var member in asArray) { @@ -1014,8 +1008,8 @@ namespace Umbraco.Core.Services public void AddRole(string roleName) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.CreateIfNotExists(roleName); } @@ -1023,8 +1017,8 @@ namespace Umbraco.Core.Services public IEnumerable GetAllRoles() { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { var result = repository.GetAll(); return result.Select(x => x.Name).Distinct(); @@ -1033,8 +1027,8 @@ namespace Umbraco.Core.Services public IEnumerable GetAllRoles(int memberId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { var result = repository.GetMemberGroupsForMember(memberId); return result.Select(x => x.Name).Distinct(); @@ -1043,8 +1037,8 @@ namespace Umbraco.Core.Services public IEnumerable GetAllRoles(string username) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { var result = repository.GetMemberGroupsForMember(username); return result.Select(x => x.Name).Distinct(); @@ -1053,8 +1047,8 @@ namespace Umbraco.Core.Services public IEnumerable GetMembersInRole(string roleName) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { return repository.GetByMemberGroup(roleName); } @@ -1062,8 +1056,8 @@ namespace Umbraco.Core.Services public IEnumerable FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberRepository(uow)) { return repository.FindMembersInRole(roleName, usernameToMatch, matchType); } @@ -1082,8 +1076,8 @@ namespace Umbraco.Core.Services } } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { var qry = new Query().Where(g => g.Name == roleName); var found = repository.GetByQuery(qry).ToArray(); @@ -1103,8 +1097,8 @@ namespace Umbraco.Core.Services public void AssignRoles(string[] usernames, string[] roleNames) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.AssignRoles(usernames, roleNames); } @@ -1117,8 +1111,8 @@ namespace Umbraco.Core.Services public void DissociateRoles(string[] usernames, string[] roleNames) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.DissociateRoles(usernames, roleNames); } @@ -1131,8 +1125,8 @@ namespace Umbraco.Core.Services public void AssignRoles(int[] memberIds, string[] roleNames) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.AssignRoles(memberIds, roleNames); } @@ -1145,8 +1139,8 @@ namespace Umbraco.Core.Services public void DissociateRoles(int[] memberIds, string[] roleNames) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberGroupRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberGroupRepository(uow)) { repository.DissociateRoles(memberIds, roleNames); } @@ -1158,7 +1152,7 @@ namespace Umbraco.Core.Services private IMemberType FindMemberTypeByAlias(string memberTypeAlias) { - using (var repository = _repositoryFactory.CreateMemberTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Alias == memberTypeAlias); var types = repository.GetByQuery(query); @@ -1180,8 +1174,8 @@ namespace Umbraco.Core.Services private void Audit(AuditType type, string message, int userId, int objectId) { - var uow = _uowProvider.GetUnitOfWork(); - using (var auditRepo = _repositoryFactory.CreateAuditRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var auditRepo = RepositoryFactory.CreateAuditRepository(uow)) { auditRepo.AddOrUpdate(new AuditItem(objectId, message, type, userId)); uow.Commit(); diff --git a/src/Umbraco.Core/Services/MemberTypeService.cs b/src/Umbraco.Core/Services/MemberTypeService.cs index dc49d89230..022b8721ef 100644 --- a/src/Umbraco.Core/Services/MemberTypeService.cs +++ b/src/Umbraco.Core/Services/MemberTypeService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading; using Umbraco.Core.Auditing; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -13,8 +14,6 @@ namespace Umbraco.Core.Services { public class MemberTypeService : ContentTypeServiceBase, IMemberTypeService { - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - private readonly RepositoryFactory _repositoryFactory; private readonly IMemberService _memberService; private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(); @@ -29,18 +28,22 @@ namespace Umbraco.Core.Services : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory, memberService) { } + [Obsolete("Use the constructors that specify all dependencies instead")] public MemberTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IMemberService memberService) + : this(provider, repositoryFactory, LoggerResolver.Current.Logger, memberService) { - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); - _uowProvider = provider; - _repositoryFactory = repositoryFactory; + } + + public MemberTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IMemberService memberService) + : base(provider, repositoryFactory, logger) + { + if (memberService == null) throw new ArgumentNullException("memberService"); _memberService = memberService; } public IEnumerable GetAll(params int[] ids) { - using (var repository = _repositoryFactory.CreateMemberTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -53,7 +56,7 @@ namespace Umbraco.Core.Services /// public IMemberType Get(int id) { - using (var repository = _repositoryFactory.CreateMemberTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -66,7 +69,7 @@ namespace Umbraco.Core.Services /// public IMemberType Get(string alias) { - using (var repository = _repositoryFactory.CreateMemberTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateMemberTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Alias == alias); var contentTypes = repository.GetByQuery(query); @@ -82,8 +85,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberTypeRepository(uow)) { memberType.CreatorId = userId; repository.AddOrUpdate(memberType); @@ -105,8 +108,8 @@ namespace Umbraco.Core.Services using (new WriteLock(Locker)) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberTypeRepository(uow)) { foreach (var memberType in asArray) { @@ -132,8 +135,8 @@ namespace Umbraco.Core.Services { _memberService.DeleteMembersOfType(memberType.Id); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberTypeRepository(uow)) { repository.Delete(memberType); uow.Commit(); @@ -157,8 +160,8 @@ namespace Umbraco.Core.Services _memberService.DeleteMembersOfType(contentType.Id); } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateMemberTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateMemberTypeRepository(uow)) { foreach (var memberType in asArray) { diff --git a/src/Umbraco.Core/Services/RelationService.cs b/src/Umbraco.Core/Services/RelationService.cs index bd4a46c75e..becde9c416 100644 --- a/src/Umbraco.Core/Services/RelationService.cs +++ b/src/Umbraco.Core/Services/RelationService.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Persistence; @@ -10,17 +11,20 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { - public class RelationService : IRelationService + public class RelationService : RepositoryService, IRelationService { - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - private readonly RepositoryFactory _repositoryFactory; private readonly IEntityService _entityService; - public RelationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, - IEntityService entityService) + [Obsolete("Use the constructors that specify all dependencies instead")] + public RelationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, IEntityService entityService) + : this(uowProvider, repositoryFactory, LoggerResolver.Current.Logger, entityService) { - _uowProvider = uowProvider; - _repositoryFactory = repositoryFactory; + } + + public RelationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, ILogger logger, IEntityService entityService) + : base(uowProvider, repositoryFactory, logger) + { + if (entityService == null) throw new ArgumentNullException("entityService"); _entityService = entityService; } @@ -31,7 +35,7 @@ namespace Umbraco.Core.Services /// A object public IRelation GetById(int id) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -44,7 +48,7 @@ namespace Umbraco.Core.Services /// A object public IRelationType GetRelationTypeById(int id) { - using (var repository = _repositoryFactory.CreateRelationTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -57,7 +61,7 @@ namespace Umbraco.Core.Services /// A object public IRelationType GetRelationTypeByAlias(string alias) { - using (var repository = _repositoryFactory.CreateRelationTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.Alias == alias); return repository.GetByQuery(query).FirstOrDefault(); @@ -71,7 +75,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetAllRelations(params int[] ids) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -94,7 +98,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetAllRelationsByRelationType(int relationTypeId) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.RelationTypeId == relationTypeId); return repository.GetByQuery(query); @@ -108,7 +112,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetAllRelationTypes(params int[] ids) { - using (var repository = _repositoryFactory.CreateRelationTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { return repository.GetAll(ids); } @@ -121,7 +125,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetByParentId(int id) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.ParentId == id); return repository.GetByQuery(query); @@ -156,7 +160,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetByChildId(int id) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.ChildId == id); return repository.GetByQuery(query); @@ -192,7 +196,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetByParentOrChildId(int id) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.ChildId == id || x.ParentId == id); return repository.GetByQuery(query); @@ -207,7 +211,7 @@ namespace Umbraco.Core.Services public IEnumerable GetByRelationTypeName(string relationTypeName) { List relationTypeIds = null; - using (var repository = _repositoryFactory.CreateRelationTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.Name == relationTypeName); var relationTypes = repository.GetByQuery(query); @@ -231,7 +235,7 @@ namespace Umbraco.Core.Services public IEnumerable GetByRelationTypeAlias(string relationTypeAlias) { List relationTypeIds = null; - using (var repository = _repositoryFactory.CreateRelationTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationTypeRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.Alias == relationTypeAlias); var relationTypes = repository.GetByQuery(query); @@ -254,7 +258,7 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetByRelationTypeId(int relationTypeId) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.RelationTypeId == relationTypeId); return repository.GetByQuery(query); @@ -372,8 +376,8 @@ namespace Umbraco.Core.Services if (SavingRelation.IsRaisedEventCancelled(new SaveEventArgs(relation), this)) return relation; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationRepository(uow)) { repository.AddOrUpdate(relation); uow.Commit(); @@ -400,8 +404,8 @@ namespace Umbraco.Core.Services if (SavingRelation.IsRaisedEventCancelled(new SaveEventArgs(relation), this)) return relation; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationRepository(uow)) { repository.AddOrUpdate(relation); uow.Commit(); @@ -418,7 +422,7 @@ namespace Umbraco.Core.Services /// Returns True if any relations exists for the given , otherwise False public bool HasRelations(IRelationType relationType) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); @@ -432,7 +436,7 @@ namespace Umbraco.Core.Services /// Returns True if any relations exists with the given Id, otherwise False public bool IsRelated(int id) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.ParentId == id || x.ChildId == id); return repository.GetByQuery(query).Any(); @@ -447,7 +451,7 @@ namespace Umbraco.Core.Services /// Returns True if any relations exists with the given Ids, otherwise False public bool AreRelated(int parentId, int childId) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.ParentId == parentId && x.ChildId == childId); return repository.GetByQuery(query).Any(); @@ -480,7 +484,7 @@ namespace Umbraco.Core.Services /// Returns True if any relations exists with the given Ids and relation type, otherwise False public bool AreRelated(int parentId, int childId, IRelationType relationType) { - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { var query = new Query().Where(x => x.ParentId == parentId && x.ChildId == childId && x.RelationTypeId == relationType.Id); return repository.GetByQuery(query).Any(); @@ -520,8 +524,8 @@ namespace Umbraco.Core.Services if (SavingRelation.IsRaisedEventCancelled(new SaveEventArgs(relation), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationRepository(uow)) { repository.AddOrUpdate(relation); uow.Commit(); @@ -539,8 +543,8 @@ namespace Umbraco.Core.Services if (SavingRelationType.IsRaisedEventCancelled(new SaveEventArgs(relationType), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationTypeRepository(uow)) { repository.AddOrUpdate(relationType); uow.Commit(); @@ -558,8 +562,8 @@ namespace Umbraco.Core.Services if (DeletingRelation.IsRaisedEventCancelled(new DeleteEventArgs(relation), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationRepository(uow)) { repository.Delete(relation); uow.Commit(); @@ -577,8 +581,8 @@ namespace Umbraco.Core.Services if (DeletingRelationType.IsRaisedEventCancelled(new DeleteEventArgs(relationType), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationTypeRepository(uow)) { repository.Delete(relationType); uow.Commit(); @@ -594,8 +598,8 @@ namespace Umbraco.Core.Services public void DeleteRelationsOfType(IRelationType relationType) { var relations = new List(); - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateRelationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateRelationRepository(uow)) { var query = new Query().Where(x => x.RelationTypeId == relationType.Id); relations.AddRange(repository.GetByQuery(query).ToList()); @@ -614,7 +618,7 @@ namespace Umbraco.Core.Services private IEnumerable GetRelationsByListOfTypeIds(IEnumerable relationTypeIds) { var relations = new List(); - using (var repository = _repositoryFactory.CreateRelationRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateRelationRepository(UowProvider.GetUnitOfWork())) { foreach (var relationTypeId in relationTypeIds) { diff --git a/src/Umbraco.Core/Services/RepositoryService.cs b/src/Umbraco.Core/Services/RepositoryService.cs new file mode 100644 index 0000000000..e1c70ab580 --- /dev/null +++ b/src/Umbraco.Core/Services/RepositoryService.cs @@ -0,0 +1,27 @@ +using System; +using Umbraco.Core.Logging; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Services +{ + /// + /// Base service class + /// + public abstract class RepositoryService : IService + { + protected ILogger Logger { get; private set; } + protected RepositoryFactory RepositoryFactory { get; private set; } + protected IDatabaseUnitOfWorkProvider UowProvider { get; private set; } + + protected RepositoryService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + { + if (provider == null) throw new ArgumentNullException("provider"); + if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); + if (logger == null) throw new ArgumentNullException("logger"); + Logger = logger; + RepositoryFactory = repositoryFactory; + UowProvider = provider; + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Services/ServerRegistrationService.cs b/src/Umbraco.Core/Services/ServerRegistrationService.cs index 948181c4c9..f52c05768f 100644 --- a/src/Umbraco.Core/Services/ServerRegistrationService.cs +++ b/src/Umbraco.Core/Services/ServerRegistrationService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -12,17 +13,12 @@ namespace Umbraco.Core.Services /// /// Service to manage server registrations in the database /// - internal class ServerRegistrationService + internal class ServerRegistrationService : RepositoryService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - public ServerRegistrationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + public ServerRegistrationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - if (provider == null) throw new ArgumentNullException("provider"); - if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory"); - _uowProvider = provider; - _repositoryFactory = repositoryFactory; } /// @@ -32,8 +28,8 @@ namespace Umbraco.Core.Services public void EnsureActive(string address) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repo = _repositoryFactory.CreateServerRegistrationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repo = RepositoryFactory.CreateServerRegistrationRepository(uow)) { //NOTE: we cannot use Environment.MachineName as this does not work in medium trust // found this out in CDF a while back: http://clientdependency.codeplex.com/workitem/13191 @@ -64,8 +60,8 @@ namespace Umbraco.Core.Services /// public void DeactiveServer(string computerName) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repo = _repositoryFactory.CreateServerRegistrationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repo = RepositoryFactory.CreateServerRegistrationRepository(uow)) { var query = Query.Builder.Where(x => x.ComputerName.ToUpper() == computerName.ToUpper()); var found = repo.GetByQuery(query).ToArray(); @@ -85,8 +81,8 @@ namespace Umbraco.Core.Services /// public IEnumerable GetActiveServers() { - var uow = _uowProvider.GetUnitOfWork(); - using (var repo = _repositoryFactory.CreateServerRegistrationRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repo = RepositoryFactory.CreateServerRegistrationRepository(uow)) { var query = Query.Builder.Where(x => x.IsActive); return repo.GetByQuery(query).ToArray(); diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs index 31795ccbb0..c4e2d83796 100644 --- a/src/Umbraco.Core/Services/ServiceContext.cs +++ b/src/Umbraco.Core/Services/ServiceContext.cs @@ -130,7 +130,7 @@ namespace Umbraco.Core.Services var fileProvider = fileUnitOfWorkProvider; if (_auditService == null) - _auditService = new Lazy(() => new AuditService(provider, repositoryFactory)); + _auditService = new Lazy(() => new AuditService(provider, repositoryFactory, logger)); if (_localizedTextService == null) _localizedTextService = new Lazy(() => new LocalizedTextService( @@ -141,42 +141,42 @@ namespace Umbraco.Core.Services _notificationService = new Lazy(() => new NotificationService(provider, _userService.Value, _contentService.Value, logger)); if (_serverRegistrationService == null) - _serverRegistrationService = new Lazy(() => new ServerRegistrationService(provider, repositoryFactory)); + _serverRegistrationService = new Lazy(() => new ServerRegistrationService(provider, repositoryFactory, logger)); if (_userService == null) - _userService = new Lazy(() => new UserService(provider, repositoryFactory)); + _userService = new Lazy(() => new UserService(provider, repositoryFactory, logger)); if (_memberService == null) - _memberService = new Lazy(() => new MemberService(provider, repositoryFactory, _memberGroupService.Value, _dataTypeService.Value)); + _memberService = new Lazy(() => new MemberService(provider, repositoryFactory, logger, _memberGroupService.Value, _dataTypeService.Value)); if (_contentService == null) - _contentService = new Lazy(() => new ContentService(logger, provider, repositoryFactory, publishingStrategy, _dataTypeService.Value, _userService.Value)); + _contentService = new Lazy(() => new ContentService(provider, repositoryFactory, logger, publishingStrategy, _dataTypeService.Value, _userService.Value)); if (_mediaService == null) - _mediaService = new Lazy(() => new MediaService(provider, repositoryFactory, _dataTypeService.Value, _userService.Value)); + _mediaService = new Lazy(() => new MediaService(provider, repositoryFactory, logger, _dataTypeService.Value, _userService.Value)); if (_contentTypeService == null) - _contentTypeService = new Lazy(() => new ContentTypeService(logger, provider, repositoryFactory, _contentService.Value, _mediaService.Value)); + _contentTypeService = new Lazy(() => new ContentTypeService(provider, repositoryFactory, logger, _contentService.Value, _mediaService.Value)); if (_dataTypeService == null) - _dataTypeService = new Lazy(() => new DataTypeService(provider, repositoryFactory)); + _dataTypeService = new Lazy(() => new DataTypeService(provider, repositoryFactory, logger)); if (_fileService == null) _fileService = new Lazy(() => new FileService(fileProvider, provider, repositoryFactory)); if (_localizationService == null) - _localizationService = new Lazy(() => new LocalizationService(provider, repositoryFactory)); + _localizationService = new Lazy(() => new LocalizationService(provider, repositoryFactory, logger)); if (_packagingService == null) _packagingService = new Lazy(() => new PackagingService(logger, _contentService.Value, _contentTypeService.Value, _mediaService.Value, _macroService.Value, _dataTypeService.Value, _fileService.Value, _localizationService.Value, _userService.Value, repositoryFactory, provider)); if (_entityService == null) _entityService = new Lazy(() => new EntityService( - provider, repositoryFactory, + provider, repositoryFactory, logger, _contentService.Value, _contentTypeService.Value, _mediaService.Value, _dataTypeService.Value, _memberService.Value, _memberTypeService.Value)); if (_relationService == null) - _relationService = new Lazy(() => new RelationService(provider, repositoryFactory, _entityService.Value)); + _relationService = new Lazy(() => new RelationService(provider, repositoryFactory, logger, _entityService.Value)); if (_treeService == null) _treeService = new Lazy(() => new ApplicationTreeService(logger, cache)); @@ -185,16 +185,16 @@ namespace Umbraco.Core.Services _sectionService = new Lazy(() => new SectionService(_userService.Value, _treeService.Value, provider, cache)); if (_macroService == null) - _macroService = new Lazy(() => new MacroService(provider, repositoryFactory)); + _macroService = new Lazy(() => new MacroService(provider, repositoryFactory, logger)); if (_memberTypeService == null) - _memberTypeService = new Lazy(() => new MemberTypeService(provider, repositoryFactory, _memberService.Value)); + _memberTypeService = new Lazy(() => new MemberTypeService(provider, repositoryFactory, logger, _memberService.Value)); if (_tagService == null) - _tagService = new Lazy(() => new TagService(provider, repositoryFactory)); + _tagService = new Lazy(() => new TagService(provider, repositoryFactory, logger)); if (_memberGroupService == null) - _memberGroupService = new Lazy(() => new MemberGroupService(provider, repositoryFactory)); + _memberGroupService = new Lazy(() => new MemberGroupService(provider, repositoryFactory, logger)); } diff --git a/src/Umbraco.Core/Services/TagService.cs b/src/Umbraco.Core/Services/TagService.cs index 2578372dd4..6054d29323 100644 --- a/src/Umbraco.Core/Services/TagService.cs +++ b/src/Umbraco.Core/Services/TagService.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -13,10 +14,8 @@ namespace Umbraco.Core.Services /// /// If there is unpublished content with tags, those tags will not be contained /// - public class TagService : ITagService + public class TagService : RepositoryService, ITagService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; [Obsolete("Use the constructors that specify all dependencies instead")] public TagService() @@ -35,10 +34,15 @@ namespace Umbraco.Core.Services { } + [Obsolete("Use the constructors that specify all dependencies instead")] public TagService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + : this(provider, repositoryFactory, LoggerResolver.Current.Logger) + { + } + + public TagService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - _repositoryFactory = repositoryFactory; - _uowProvider = provider; } /// @@ -49,7 +53,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTaggedContentByTagGroup(string tagGroup) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTaggedEntitiesByTagGroup(TaggableObjectTypes.Content, tagGroup); } @@ -64,7 +68,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTaggedContentByTag(string tag, string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTaggedEntitiesByTag(TaggableObjectTypes.Content, tag, tagGroup); } @@ -78,7 +82,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTaggedMediaByTagGroup(string tagGroup) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTaggedEntitiesByTagGroup(TaggableObjectTypes.Media, tagGroup); } @@ -93,7 +97,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTaggedMediaByTag(string tag, string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTaggedEntitiesByTag(TaggableObjectTypes.Media, tag, tagGroup); } @@ -107,7 +111,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTaggedMembersByTagGroup(string tagGroup) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTaggedEntitiesByTagGroup(TaggableObjectTypes.Member, tagGroup); } @@ -122,7 +126,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTaggedMembersByTag(string tag, string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTaggedEntitiesByTag(TaggableObjectTypes.Member, tag, tagGroup); } @@ -135,7 +139,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetAllTags(string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTagsForEntityType(TaggableObjectTypes.All, tagGroup); } @@ -150,7 +154,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetAllContentTags(string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTagsForEntityType(TaggableObjectTypes.Content, tagGroup); } @@ -165,7 +169,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetAllMediaTags(string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTagsForEntityType(TaggableObjectTypes.Media, tagGroup); } @@ -180,7 +184,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetAllMemberTags(string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTagsForEntityType(TaggableObjectTypes.Member, tagGroup); } @@ -197,7 +201,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTagsForProperty(int contentId, string propertyTypeAlias, string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTagsForProperty(contentId, propertyTypeAlias, tagGroup); } @@ -213,7 +217,7 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetTagsForEntity(int contentId, string tagGroup = null) { - using (var repository = _repositoryFactory.CreateTagRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateTagRepository(UowProvider.GetUnitOfWork())) { return repository.GetTagsForEntity(contentId, tagGroup); } diff --git a/src/Umbraco.Core/Services/TaskService.cs b/src/Umbraco.Core/Services/TaskService.cs new file mode 100644 index 0000000000..4df7ae7c8d --- /dev/null +++ b/src/Umbraco.Core/Services/TaskService.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using Umbraco.Core.Logging; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.UnitOfWork; + +namespace Umbraco.Core.Services +{ + public class TaskService : RepositoryService, ITaskService + { + public TaskService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) + { + } + + public IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + { + using (var repo = RepositoryFactory.CreateTaskRepository(UowProvider.GetUnitOfWork())) + { + return repo.GetTasks(itemId, assignedUser, ownerUser, taskTypeAlias); + } + } + + public IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + { + using (var repo = RepositoryFactory.CreateTaskRepository(UowProvider.GetUnitOfWork())) + { + return repo.GetTasks(itemId, assignedUser, ownerUser, taskTypeAlias); + } + } + + + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 9be1ce0d11..1fce38e17a 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Umbraco.Core.Events; +using Umbraco.Core.Logging; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; @@ -13,23 +14,28 @@ namespace Umbraco.Core.Services /// /// Represents the UserService, which is an easy access to operations involving , and eventually Backoffice Users. /// - public class UserService : IUserService + public class UserService : RepositoryService, IUserService { - private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWorkProvider _uowProvider; - + + [Obsolete("Use the constructors that specify all dependencies instead")] public UserService(RepositoryFactory repositoryFactory) : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory) { } + [Obsolete("Use the constructors that specify all dependencies instead")] public UserService(IDatabaseUnitOfWorkProvider provider) : this(provider, new RepositoryFactory()) { } + [Obsolete("Use the constructors that specify all dependencies instead")] public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + : base(provider, repositoryFactory, LoggerResolver.Current.Logger) + { + } + + public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger) + : base(provider, repositoryFactory, logger) { - _repositoryFactory = repositoryFactory; - _uowProvider = provider; } #region Implementation of IMembershipUserService @@ -42,7 +48,7 @@ namespace Umbraco.Core.Services /// Alias of the default MemberType public string GetDefaultMemberType() { - using (var repository = _repositoryFactory.CreateUserTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserTypeRepository(UowProvider.GetUnitOfWork())) { var types = repository.GetAll().Select(x => x.Alias).ToArray(); @@ -73,7 +79,7 @@ namespace Umbraco.Core.Services /// True if the User exists otherwise False public bool Exists(string username) { - using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { return repository.Exists(username); } @@ -127,8 +133,8 @@ namespace Umbraco.Core.Services //TODO: PUT lock here!! - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { var loginExists = uow.Database.ExecuteScalar("SELECT COUNT(id) FROM umbracoUser WHERE userLogin = @Login", new { Login = username }) != 0; if (loginExists) @@ -167,7 +173,7 @@ namespace Umbraco.Core.Services /// public IUser GetById(int id) { - using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { var user = repository.Get((int)id); @@ -198,7 +204,7 @@ namespace Umbraco.Core.Services /// public IUser GetByEmail(string email) { - using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Email.Equals(email)); var user = repository.GetByQuery(query).FirstOrDefault(); @@ -214,7 +220,7 @@ namespace Umbraco.Core.Services /// public IUser GetByUsername(string username) { - using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Username.Equals(username)); return repository.GetByQuery(query).FirstOrDefault(); @@ -237,7 +243,7 @@ namespace Umbraco.Core.Services Save(membershipUser); //clear out the user logins! - var uow = _uowProvider.GetUnitOfWork(); + var uow = UowProvider.GetUnitOfWork(); uow.Database.Execute("delete from umbracoUserLogins where userID = @id", new {id = membershipUser.Id}); } @@ -287,8 +293,8 @@ namespace Umbraco.Core.Services if (DeletingUser.IsRaisedEventCancelled(new DeleteEventArgs(user), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { repository.Delete(user); uow.Commit(); @@ -312,8 +318,8 @@ namespace Umbraco.Core.Services return; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { repository.AddOrUpdate(entity); uow.Commit(); @@ -337,8 +343,8 @@ namespace Umbraco.Core.Services return; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { foreach (var member in entities) { @@ -363,8 +369,8 @@ namespace Umbraco.Core.Services /// public IEnumerable FindByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { var query = new Query(); @@ -404,8 +410,8 @@ namespace Umbraco.Core.Services /// public IEnumerable FindByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { var query = new Query(); @@ -446,7 +452,7 @@ namespace Umbraco.Core.Services /// with number of Users for passed in type public int GetCount(MemberCountType countType) { - using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { IQuery query; @@ -489,8 +495,8 @@ namespace Umbraco.Core.Services /// public IEnumerable GetAll(int pageIndex, int pageSize, out int totalRecords) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { return repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, member => member.Username); } @@ -529,7 +535,7 @@ namespace Umbraco.Core.Services /// public IUser GetUserById(int id) { - using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -544,8 +550,8 @@ namespace Umbraco.Core.Services /// Specify the nodes to replace permissions for. If nothing is specified all permissions are removed. public void ReplaceUserPermissions(int userId, IEnumerable permissions, params int[] entityIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { repository.ReplaceUserPermissions(userId, permissions, entityIds); } @@ -558,8 +564,8 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetAllUserTypes(params int[] ids) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserTypeRepository(uow)) { return repository.GetAll(ids); } @@ -572,7 +578,7 @@ namespace Umbraco.Core.Services /// public IUserType GetUserTypeByAlias(string alias) { - using (var repository = _repositoryFactory.CreateUserTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Alias == alias); var contents = repository.GetByQuery(query); @@ -587,7 +593,7 @@ namespace Umbraco.Core.Services /// public IUserType GetUserTypeById(int id) { - using (var repository = _repositoryFactory.CreateUserTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserTypeRepository(UowProvider.GetUnitOfWork())) { return repository.Get(id); } @@ -600,7 +606,7 @@ namespace Umbraco.Core.Services /// public IUserType GetUserTypeByName(string name) { - using (var repository = _repositoryFactory.CreateUserTypeRepository(_uowProvider.GetUnitOfWork())) + using (var repository = RepositoryFactory.CreateUserTypeRepository(UowProvider.GetUnitOfWork())) { var query = Query.Builder.Where(x => x.Name == name); var contents = repository.GetByQuery(query); @@ -622,8 +628,8 @@ namespace Umbraco.Core.Services return; } - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserTypeRepository(uow)) { repository.AddOrUpdate(userType); uow.Commit(); @@ -642,8 +648,8 @@ namespace Umbraco.Core.Services if (DeletingUserType.IsRaisedEventCancelled(new DeleteEventArgs(userType), this)) return; - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserTypeRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserTypeRepository(uow)) { repository.Delete(userType); uow.Commit(); @@ -659,8 +665,8 @@ namespace Umbraco.Core.Services /// Alias of the section to remove public void DeleteSectionFromAllUsers(string sectionAlias) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { var assignedUsers = repository.GetUsersAssignedToSection(sectionAlias); foreach (var user in assignedUsers) @@ -681,8 +687,8 @@ namespace Umbraco.Core.Services /// Specifiying nothing will add the section to all user public void AddSectionToAllUsers(string sectionAlias, params int[] userIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { IEnumerable users; if (userIds.Any()) @@ -712,8 +718,8 @@ namespace Umbraco.Core.Services /// An enumerable list of public IEnumerable GetPermissions(IUser user, params int[] nodeIds) { - var uow = _uowProvider.GetUnitOfWork(); - using (var repository = _repositoryFactory.CreateUserRepository(uow)) + var uow = UowProvider.GetUnitOfWork(); + using (var repository = RepositoryFactory.CreateUserRepository(uow)) { var explicitPermissions = repository.GetUserPermissionsForEntities(user.Id, nodeIds); diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index d791677194..851e573670 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -314,9 +314,12 @@ + + + @@ -327,6 +330,9 @@ + + + diff --git a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs new file mode 100644 index 0000000000..1929c7af25 --- /dev/null +++ b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs @@ -0,0 +1,47 @@ +using System; +using System.Linq; +using NUnit.Framework; +using Umbraco.Core.Models; +using Umbraco.Core.Persistence.Repositories; +using Umbraco.Core.Persistence.UnitOfWork; +using Umbraco.Tests.TestHelpers; + +namespace Umbraco.Tests.Persistence.Repositories +{ + [DatabaseTestBehavior(DatabaseBehavior.NewDbFileAndSchemaPerTest)] + [TestFixture] + public class TaskRepositoryTest : BaseDatabaseFactoryTest + { + [Test] + public void Can_Add() + { + var provider = new PetaPocoUnitOfWorkProvider(Logger); + var unitOfWork = provider.GetUnitOfWork(); + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntaxProvider)) + { + var created = DateTime.Now; + repo.AddOrUpdate(new Task(new TaskType("asdfasdf")) + { + AssigneeUserId = 0, + Closed = false, + Comment = "hello world", + EntityId = -1, + OwnerUserId = 0 + }); + unitOfWork.Commit(); + + var found = repo.GetAll(); + + Assert.AreEqual(1, found.Count()); + Assert.AreEqual(0, found.First().AssigneeUserId); + Assert.AreEqual(false, found.First().Closed); + Assert.AreEqual("hello world", found.First().Comment); + Assert.GreaterOrEqual(found.First().CreateDate, created); + Assert.AreEqual(-1, found.First().EntityId); + Assert.AreEqual(0, found.First().OwnerUserId); + Assert.AreEqual(true, found.First().HasIdentity); + Assert.AreEqual(true, found.First().TaskType.HasIdentity); + } + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs index 63f65adeba..29f28e3551 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs @@ -9,6 +9,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Models.Mapping; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Factories; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Profiling; diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index e4fc18e48b..de66f44f79 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -169,6 +169,7 @@ +