diff --git a/src/Umbraco.Core/Models/IMemberGroup.cs b/src/Umbraco.Core/Models/IMemberGroup.cs index 8454767ef3..f865a7d991 100644 --- a/src/Umbraco.Core/Models/IMemberGroup.cs +++ b/src/Umbraco.Core/Models/IMemberGroup.cs @@ -7,6 +7,14 @@ namespace Umbraco.Core.Models /// public interface IMemberGroup : IAggregateRoot { + /// + /// The name of the member group + /// string Name { get; set; } + + /// + /// Profile of the user who created this Entity + /// + int CreatorId { get; set; } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/MemberGroup.cs b/src/Umbraco.Core/Models/MemberGroup.cs index 8a8b7a72d7..caaeb1d860 100644 --- a/src/Umbraco.Core/Models/MemberGroup.cs +++ b/src/Umbraco.Core/Models/MemberGroup.cs @@ -13,8 +13,10 @@ namespace Umbraco.Core.Models public class MemberGroup : Entity, IMemberGroup { private string _name; + private int _creatorId; private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo(x => x.Name); + private static readonly PropertyInfo CreatorIdSelector = ExpressionHelper.GetPropertyInfo(x => x.CreatorId); [DataMember] public string Name @@ -29,5 +31,18 @@ namespace Umbraco.Core.Models }, _name, NameSelector); } } + + public int CreatorId + { + get { return _creatorId; } + set + { + SetPropertyValueAndDetectChanges(o => + { + _creatorId = value; + return _creatorId; + }, _creatorId, CreatorIdSelector); + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Factories/MemberGroupFactory.cs b/src/Umbraco.Core/Persistence/Factories/MemberGroupFactory.cs index 2b87884c9a..207eea83b3 100644 --- a/src/Umbraco.Core/Persistence/Factories/MemberGroupFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/MemberGroupFactory.cs @@ -46,7 +46,7 @@ namespace Umbraco.Core.Persistence.Factories Text = entity.Name, Trashed = false, UniqueId = entity.Key, - UserId = 0 + UserId = entity.CreatorId }; if (entity.HasIdentity) diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberGroupRepository.cs new file mode 100644 index 0000000000..0f9464808e --- /dev/null +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMemberGroupRepository.cs @@ -0,0 +1,9 @@ +using Umbraco.Core.Models; + +namespace Umbraco.Core.Persistence.Repositories +{ + public interface IMemberGroupRepository : IRepositoryQueryable + { + + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs index 53c26c1321..267e0f2d00 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs @@ -11,7 +11,9 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Persistence.Repositories { - internal class MemberGroupRepository : PetaPocoRepositoryBase + + + internal class MemberGroupRepository : PetaPocoRepositoryBase, IMemberGroupRepository { public MemberGroupRepository(IDatabaseUnitOfWork work) : base(work) { diff --git a/src/Umbraco.Core/Persistence/RepositoryFactory.cs b/src/Umbraco.Core/Persistence/RepositoryFactory.cs index 4d67838ffd..0460f8e6fd 100644 --- a/src/Umbraco.Core/Persistence/RepositoryFactory.cs +++ b/src/Umbraco.Core/Persistence/RepositoryFactory.cs @@ -160,6 +160,11 @@ namespace Umbraco.Core.Persistence return new MemberTypeRepository(uow, _disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current); } + internal virtual IMemberGroupRepository CreateMemberGroupRepository(IDatabaseUnitOfWork uow) + { + return new MemberGroupRepository(uow, _disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current); + } + internal virtual IEntityRepository CreateEntityRepository(IDatabaseUnitOfWork uow) { return new EntityRepository(uow); diff --git a/src/Umbraco.Core/Services/IMemberGroupService.cs b/src/Umbraco.Core/Services/IMemberGroupService.cs new file mode 100644 index 0000000000..2b83d24651 --- /dev/null +++ b/src/Umbraco.Core/Services/IMemberGroupService.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using Umbraco.Core.Models; + +namespace Umbraco.Core.Services +{ + public interface IMemberGroupService : IService + { + IEnumerable GetAll(params int[] ids); + IMemberGroup Get(int id); + void Save(IMemberGroup memberGroup, int userId = 0); + void Delete(IMemberType memberType, int userId = 0); + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Services/IMemberService.cs b/src/Umbraco.Core/Services/IMemberService.cs index 3634688f68..1c66640cd1 100644 --- a/src/Umbraco.Core/Services/IMemberService.cs +++ b/src/Umbraco.Core/Services/IMemberService.cs @@ -16,14 +16,7 @@ namespace Umbraco.Core.Services /// /// bool Exists(int id); - - /// - /// Get a member by its id - /// - /// - /// - IMember GetById(int id); - + /// /// Get a member by the unique key /// diff --git a/src/Umbraco.Core/Services/IMemberTypeService.cs b/src/Umbraco.Core/Services/IMemberTypeService.cs index 7989becce1..dc0ee59b08 100644 --- a/src/Umbraco.Core/Services/IMemberTypeService.cs +++ b/src/Umbraco.Core/Services/IMemberTypeService.cs @@ -3,7 +3,7 @@ using Umbraco.Core.Models; namespace Umbraco.Core.Services { - internal interface IMemberTypeService : IService + public interface IMemberTypeService : IService { /// /// Gets a list of all available objects diff --git a/src/Umbraco.Core/Services/MemberTypeService.cs b/src/Umbraco.Core/Services/MemberTypeService.cs index df323f8951..d2fbce96ef 100644 --- a/src/Umbraco.Core/Services/MemberTypeService.cs +++ b/src/Umbraco.Core/Services/MemberTypeService.cs @@ -11,7 +11,7 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services { - internal class MemberTypeService : ContentTypeServiceBase, IMemberTypeService + public class MemberTypeService : ContentTypeServiceBase, IMemberTypeService { private readonly IDatabaseUnitOfWorkProvider _uowProvider; private readonly RepositoryFactory _repositoryFactory; diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs index c57081f51a..63f71bd5e2 100644 --- a/src/Umbraco.Core/Services/ServiceContext.cs +++ b/src/Umbraco.Core/Services/ServiceContext.cs @@ -251,7 +251,7 @@ namespace Umbraco.Core.Services /// /// Gets the /// - internal IUserService UserService + public IUserService UserService { get { return _userService.Value; } } @@ -259,7 +259,7 @@ namespace Umbraco.Core.Services /// /// Gets the /// - internal IMemberService MemberService + public IMemberService MemberService { get { return _memberService.Value; } } @@ -283,7 +283,7 @@ namespace Umbraco.Core.Services /// /// Gets the MemberTypeService /// - internal IMemberTypeService MemberTypeService + public IMemberTypeService MemberTypeService { get { return _memberTypeService.Value; } } diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index b9fe5da3bb..4b8d1f0085 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -210,6 +210,7 @@ + @@ -772,6 +773,7 @@ +