diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
index fca06ad58a..856ede87d1 100644
--- a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs
@@ -15,6 +15,9 @@ using Umbraco.Core.Persistence.UnitOfWork;
namespace Umbraco.Core.Persistence.Repositories
{
+ ///
+ /// Represents a repository for doing CRUD operations for
+ ///
internal class MemberRepository : VersionableRepositoryBase, IMemberRepository
{
private readonly IMemberTypeRepository _memberTypeRepository;
diff --git a/src/Umbraco.Core/Services/IMemberService.cs b/src/Umbraco.Core/Services/IMemberService.cs
index 525dec86dc..a6a2a14424 100644
--- a/src/Umbraco.Core/Services/IMemberService.cs
+++ b/src/Umbraco.Core/Services/IMemberService.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using Umbraco.Core.Models;
namespace Umbraco.Core.Services
@@ -10,6 +11,9 @@ namespace Umbraco.Core.Services
{
IMember GetById(int id);
IMember GetByKey(Guid id);
+ IEnumerable GetMembersByMemberType(string memberTypeAlias);
+ IEnumerable GetMembersByGroup(string memberGroupName);
+ IEnumerable GetAllMembers(params int[] ids);
}
///
@@ -22,11 +26,11 @@ namespace Umbraco.Core.Services
{
IMember CreateMember(string username, string email, string password, string memberTypeAlias, int userId = 0);
- IMember GetByUsername(string login);
+ IMember GetById(object id);
IMember GetByEmail(string email);
- IMember GetById(object id);
+ IMember GetByUsername(string login);
void Delete(IMember membershipUser);
diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs
index d942a51944..a24a7d8d49 100644
--- a/src/Umbraco.Core/Services/MemberService.cs
+++ b/src/Umbraco.Core/Services/MemberService.cs
@@ -1,4 +1,6 @@
using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Querying;
@@ -31,6 +33,13 @@ namespace Umbraco.Core.Services
_uowProvider = provider;
}
+ #region IMemberService Implementation
+
+ ///
+ /// Gets a Member by its integer Id
+ ///
+ ///
+ ///
public IMember GetById(int id)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
@@ -39,6 +48,15 @@ namespace Umbraco.Core.Services
}
}
+ ///
+ /// Gets a Member by its Guid key
+ ///
+ ///
+ /// The guid key corresponds to the unique id in the database
+ /// and the user id in the membership provider.
+ ///
+ ///
+ ///
public IMember GetByKey(Guid id)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
@@ -49,6 +67,134 @@ namespace Umbraco.Core.Services
}
}
+ ///
+ /// Gets a list of Members by their MemberType
+ ///
+ ///
+ ///
+ public IEnumerable GetMembersByMemberType(string memberTypeAlias)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query = Query.Builder.Where(x => x.ContentTypeAlias == memberTypeAlias);
+ var members = repository.GetByQuery(query);
+ return members;
+ }
+ }
+
+ ///
+ /// Gets a list of Members by the MemberGroup they are part of
+ ///
+ ///
+ ///
+ public IEnumerable GetMembersByGroup(string memberGroupName)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ return repository.GetByMemberGroup(memberGroupName);
+ }
+ }
+
+ ///
+ /// Gets a list of all Members
+ ///
+ ///
+ ///
+ public IEnumerable GetAllMembers(params int[] ids)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ return repository.GetAll(ids);
+ }
+ }
+
+ ///
+ /// Gets a list of Members with a certain string property value
+ ///
+ ///
+ ///
+ ///
+ public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, string value)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query =
+ Query.Builder.Where(
+ x =>
+ ((Member)x).PropertyTypeAlias == propertyTypeAlias &&
+ (((Member)x).LongStringPropertyValue.Contains(value) ||
+ ((Member)x).ShortStringPropertyValue.Contains(value)));
+
+ var members = repository.GetByQuery(query);
+ return members;
+ }
+ }
+
+ ///
+ /// Gets a list of Members with a certain integer property value
+ ///
+ ///
+ ///
+ ///
+ public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, int value)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query =
+ Query.Builder.Where(
+ x =>
+ ((Member)x).PropertyTypeAlias == propertyTypeAlias &&
+ ((Member)x).IntegerropertyValue == value);
+
+ var members = repository.GetByQuery(query);
+ return members;
+ }
+ }
+
+ ///
+ /// Gets a list of Members with a certain boolean property value
+ ///
+ ///
+ ///
+ ///
+ public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, bool value)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query =
+ Query.Builder.Where(
+ x =>
+ ((Member)x).PropertyTypeAlias == propertyTypeAlias &&
+ ((Member)x).BoolPropertyValue == value);
+
+ var members = repository.GetByQuery(query);
+ return members;
+ }
+ }
+
+ ///
+ /// Gets a list of Members with a certain date time property value
+ ///
+ ///
+ ///
+ ///
+ public IEnumerable GetMembersByPropertyValue(string propertyTypeAlias, DateTime value)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query =
+ Query.Builder.Where(
+ x =>
+ ((Member)x).PropertyTypeAlias == propertyTypeAlias &&
+ ((Member)x).DateTimePropertyValue == value);
+
+ var members = repository.GetByQuery(query);
+ return members;
+ }
+ }
+
+ #endregion
+
#region IMembershipMemberService Implementation
public IMember CreateMember(string username, string email, string password, string memberTypeAlias, int userId = 0)
@@ -80,28 +226,6 @@ namespace Umbraco.Core.Services
return member;
}
- public IMember GetByUsername(string userName)
- {
- using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
- {
- var query = Query.Builder.Where(x => x.Username == userName);
- var member = repository.GetByQuery(query).FirstOrDefault();
-
- return member;
- }
- }
-
- public IMember GetByEmail(string email)
- {
- using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
- {
- var query = Query.Builder.Where(x => x.Email == email);
- var member = repository.GetByQuery(query).FirstOrDefault();
-
- return member;
- }
- }
-
public IMember GetById(object id)
{
if (id is int)
@@ -117,6 +241,28 @@ namespace Umbraco.Core.Services
return null;
}
+ public IMember GetByEmail(string email)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query = Query.Builder.Where(x => x.Email == email);
+ var member = repository.GetByQuery(query).FirstOrDefault();
+
+ return member;
+ }
+ }
+
+ public IMember GetByUsername(string userName)
+ {
+ using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
+ {
+ var query = Query.Builder.Where(x => x.Username == userName);
+ var member = repository.GetByQuery(query).FirstOrDefault();
+
+ return member;
+ }
+ }
+
public void Delete(IMember member)
{
var uow = _uowProvider.GetUnitOfWork();