Implementing addtional methods in the MemberService

This commit is contained in:
Morten Christensen
2013-09-04 16:30:51 +02:00
parent 269f573b82
commit 33bba57047
3 changed files with 177 additions and 24 deletions

View File

@@ -15,6 +15,9 @@ using Umbraco.Core.Persistence.UnitOfWork;
namespace Umbraco.Core.Persistence.Repositories
{
/// <summary>
/// Represents a repository for doing CRUD operations for <see cref="IMember"/>
/// </summary>
internal class MemberRepository : VersionableRepositoryBase<int, IMember>, IMemberRepository
{
private readonly IMemberTypeRepository _memberTypeRepository;

View File

@@ -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<IMember> GetMembersByMemberType(string memberTypeAlias);
IEnumerable<IMember> GetMembersByGroup(string memberGroupName);
IEnumerable<IMember> GetAllMembers(params int[] ids);
}
/// <summary>
@@ -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);

View File

@@ -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
/// <summary>
/// Gets a Member by its integer Id
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public IMember GetById(int id)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
@@ -39,6 +48,15 @@ namespace Umbraco.Core.Services
}
}
/// <summary>
/// Gets a Member by its Guid key
/// </summary>
/// <remarks>
/// The guid key corresponds to the unique id in the database
/// and the user id in the membership provider.
/// </remarks>
/// <param name="id"></param>
/// <returns></returns>
public IMember GetByKey(Guid id)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
@@ -49,6 +67,134 @@ namespace Umbraco.Core.Services
}
}
/// <summary>
/// Gets a list of Members by their MemberType
/// </summary>
/// <param name="memberTypeAlias"></param>
/// <returns></returns>
public IEnumerable<IMember> GetMembersByMemberType(string memberTypeAlias)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query = Query<IMember>.Builder.Where(x => x.ContentTypeAlias == memberTypeAlias);
var members = repository.GetByQuery(query);
return members;
}
}
/// <summary>
/// Gets a list of Members by the MemberGroup they are part of
/// </summary>
/// <param name="memberGroupName"></param>
/// <returns></returns>
public IEnumerable<IMember> GetMembersByGroup(string memberGroupName)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetByMemberGroup(memberGroupName);
}
}
/// <summary>
/// Gets a list of all Members
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public IEnumerable<IMember> GetAllMembers(params int[] ids)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetAll(ids);
}
}
/// <summary>
/// Gets a list of Members with a certain string property value
/// </summary>
/// <param name="propertyTypeAlias"></param>
/// <param name="value"></param>
/// <returns></returns>
public IEnumerable<IMember> GetMembersByPropertyValue(string propertyTypeAlias, string value)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query =
Query<IMember>.Builder.Where(
x =>
((Member)x).PropertyTypeAlias == propertyTypeAlias &&
(((Member)x).LongStringPropertyValue.Contains(value) ||
((Member)x).ShortStringPropertyValue.Contains(value)));
var members = repository.GetByQuery(query);
return members;
}
}
/// <summary>
/// Gets a list of Members with a certain integer property value
/// </summary>
/// <param name="propertyTypeAlias"></param>
/// <param name="value"></param>
/// <returns></returns>
public IEnumerable<IMember> GetMembersByPropertyValue(string propertyTypeAlias, int value)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query =
Query<IMember>.Builder.Where(
x =>
((Member)x).PropertyTypeAlias == propertyTypeAlias &&
((Member)x).IntegerropertyValue == value);
var members = repository.GetByQuery(query);
return members;
}
}
/// <summary>
/// Gets a list of Members with a certain boolean property value
/// </summary>
/// <param name="propertyTypeAlias"></param>
/// <param name="value"></param>
/// <returns></returns>
public IEnumerable<IMember> GetMembersByPropertyValue(string propertyTypeAlias, bool value)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query =
Query<IMember>.Builder.Where(
x =>
((Member)x).PropertyTypeAlias == propertyTypeAlias &&
((Member)x).BoolPropertyValue == value);
var members = repository.GetByQuery(query);
return members;
}
}
/// <summary>
/// Gets a list of Members with a certain date time property value
/// </summary>
/// <param name="propertyTypeAlias"></param>
/// <param name="value"></param>
/// <returns></returns>
public IEnumerable<IMember> GetMembersByPropertyValue(string propertyTypeAlias, DateTime value)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
var query =
Query<IMember>.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<IMember>.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<IMember>.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<IMember>.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<IMember>.Builder.Where(x => x.Username == userName);
var member = repository.GetByQuery(query).FirstOrDefault();
return member;
}
}
public void Delete(IMember member)
{
var uow = _uowProvider.GetUnitOfWork();