U4-4847 Refactor ContentService (#1266)
* U4-4748 - refactor Content-, Media- and MemberTypeRepository * Cleanup Attempt * Cleanup OperationStatus * U4-4748 - refactor Content-, Media- and MemberTypeService * U4-4748 - cleanup locking * U4-4748 - refactor Content-, Media- and MemberRepository * U4-4748 - refactor ContentService (in progress) * U4-4748 - all unit of work must be completed * U4-4748 - refactor locks, fix tests * U4-4748 - deal with fixmes * U4-4748 - lock table migration * Update UmbracoVersion * Fix AuthorizeUpgrade * U4-4748 - cleanup+bugfix lock objects * U4-4748 - bugfix * updates a string interpolation
This commit is contained in:
committed by
Shannon Deminick
parent
12f4873c90
commit
ddf38407d8
@@ -57,9 +57,9 @@ namespace Umbraco.Core.Services
|
||||
|
||||
if (types.Any() == false)
|
||||
{
|
||||
throw new InvalidOperationException("No member types could be resolved");
|
||||
throw new InvalidOperationException("No member types could be resolved"); // causes rollback
|
||||
}
|
||||
|
||||
uow.Complete();
|
||||
if (types.InvariantContains("Member"))
|
||||
{
|
||||
return types.First(x => x.InvariantEquals("Member"));
|
||||
@@ -79,7 +79,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.Exists(username);
|
||||
var exists = repository.Exists(username);
|
||||
uow.Complete();
|
||||
return exists;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +128,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.Exists(id);
|
||||
var exists = repository.Exists(id);
|
||||
uow.Complete();
|
||||
return exists;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +144,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.Get(id);
|
||||
var member = repository.Get(id);
|
||||
uow.Complete();
|
||||
return member;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,6 +164,7 @@ namespace Umbraco.Core.Services
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
var query = repository.Query.Where(x => x.Key == id);
|
||||
var member = repository.GetByQuery(query).FirstOrDefault();
|
||||
uow.Complete();
|
||||
return member;
|
||||
}
|
||||
}
|
||||
@@ -174,6 +181,7 @@ namespace Umbraco.Core.Services
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
var query = repository.Query.Where(x => x.ContentTypeAlias == memberTypeAlias);
|
||||
var members = repository.GetByQuery(query);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
@@ -191,6 +199,7 @@ namespace Umbraco.Core.Services
|
||||
repository.Get(memberTypeId);
|
||||
var query = repository.Query.Where(x => x.ContentTypeId == memberTypeId);
|
||||
var members = repository.GetByQuery(query);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
@@ -205,7 +214,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.GetByMemberGroup(memberGroupName);
|
||||
var members = repository.GetByMemberGroup(memberGroupName);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +231,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.GetAll(ids);
|
||||
var members = repository.GetAll(ids);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,13 +253,15 @@ namespace Umbraco.Core.Services
|
||||
var members = repository.GetByQuery(query).ToArray();
|
||||
|
||||
if (Deleting.IsRaisedEventCancelled(new DeleteEventArgs<IMember>(members), this))
|
||||
return;
|
||||
return; // causes rollback
|
||||
|
||||
foreach (var member in members)
|
||||
{
|
||||
//Permantly delete the member
|
||||
Delete(member);
|
||||
}
|
||||
|
||||
uow.Complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -295,10 +310,12 @@ namespace Umbraco.Core.Services
|
||||
query.Where(member => member.Name.SqlWildcard(displayNameToMatch, TextColumnType.NVarchar));
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("matchType");
|
||||
throw new ArgumentOutOfRangeException("matchType"); // causes rollback
|
||||
}
|
||||
|
||||
return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, "Name", Direction.Ascending, true);
|
||||
var members = repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, "Name", Direction.Ascending, true);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -349,7 +366,9 @@ namespace Umbraco.Core.Services
|
||||
throw new ArgumentOutOfRangeException("matchType");
|
||||
}
|
||||
|
||||
return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, "Email", Direction.Ascending, true);
|
||||
var members = repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, "Email", Direction.Ascending, true);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -400,7 +419,9 @@ namespace Umbraco.Core.Services
|
||||
throw new ArgumentOutOfRangeException("matchType");
|
||||
}
|
||||
|
||||
return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, "LoginName", Direction.Ascending, true);
|
||||
var members = repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, "LoginName", Direction.Ascending, true);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -453,10 +474,11 @@ namespace Umbraco.Core.Services
|
||||
((Member)x).ShortStringPropertyValue.SqlEndsWith(value, TextColumnType.NVarchar)));
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("matchType");
|
||||
throw new ArgumentOutOfRangeException("matchType"); // causes rollback
|
||||
}
|
||||
|
||||
var members = repository.GetByQuery(query);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
@@ -513,10 +535,11 @@ namespace Umbraco.Core.Services
|
||||
((Member)x).IntegerPropertyValue <= value);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("matchType");
|
||||
throw new ArgumentOutOfRangeException("matchType"); // causes rollback
|
||||
}
|
||||
|
||||
var members = repository.GetByQuery(query);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
@@ -539,6 +562,7 @@ namespace Umbraco.Core.Services
|
||||
((Member)x).BoolPropertyValue == value);
|
||||
|
||||
var members = repository.GetByQuery(query);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
@@ -595,11 +619,12 @@ namespace Umbraco.Core.Services
|
||||
((Member)x).DateTimePropertyValue <= value);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("matchType");
|
||||
throw new ArgumentOutOfRangeException("matchType"); // causes rollback
|
||||
}
|
||||
|
||||
//TODO: Since this is by property value, we need a GetByPropertyQuery on the repo!
|
||||
var members = repository.GetByQuery(query);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
@@ -620,6 +645,7 @@ namespace Umbraco.Core.Services
|
||||
repository.RebuildXmlStructures(
|
||||
member => _entitySerializer.Serialize(_dataTypeService, member),
|
||||
contentTypeIds: memberTypeIds.Length == 0 ? null : memberTypeIds);
|
||||
uow.Complete();
|
||||
}
|
||||
|
||||
Audit(AuditType.Publish, "MemberService.RebuildXmlStructures completed, the xml has been regenerated in the database", 0, -1);
|
||||
@@ -650,7 +676,7 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
case MemberCountType.All:
|
||||
query = repository.Query;
|
||||
return repository.Count(query);
|
||||
break;
|
||||
case MemberCountType.Online:
|
||||
var fromDate = DateTime.Now.AddMinutes(-Membership.UserIsOnlineTimeWindow);
|
||||
query =
|
||||
@@ -658,24 +684,28 @@ namespace Umbraco.Core.Services
|
||||
x =>
|
||||
((Member)x).PropertyTypeAlias == Constants.Conventions.Member.LastLoginDate &&
|
||||
((Member)x).DateTimePropertyValue > fromDate);
|
||||
return repository.GetCountByQuery(query);
|
||||
break;
|
||||
case MemberCountType.LockedOut:
|
||||
query =
|
||||
repository.Query.Where(
|
||||
x =>
|
||||
((Member)x).PropertyTypeAlias == Constants.Conventions.Member.IsLockedOut &&
|
||||
((Member)x).BoolPropertyValue == true);
|
||||
return repository.GetCountByQuery(query);
|
||||
((Member)x).BoolPropertyValue);
|
||||
break;
|
||||
case MemberCountType.Approved:
|
||||
query =
|
||||
repository.Query.Where(
|
||||
x =>
|
||||
((Member)x).PropertyTypeAlias == Constants.Conventions.Member.IsApproved &&
|
||||
((Member)x).BoolPropertyValue == true);
|
||||
return repository.GetCountByQuery(query);
|
||||
((Member)x).BoolPropertyValue);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("countType");
|
||||
throw new ArgumentOutOfRangeException("countType"); // causes rollback;
|
||||
}
|
||||
|
||||
var count = repository.GetCountByQuery(query);
|
||||
uow.Complete();
|
||||
return count;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -702,7 +732,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, "LoginName", Direction.Ascending, true);
|
||||
var members = repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, "LoginName", Direction.Ascending, true);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -729,12 +761,18 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
IEnumerable<IMember> members;
|
||||
if (memberTypeAlias == null)
|
||||
{
|
||||
return repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, orderBySystemField, filter);
|
||||
members = repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, orderBySystemField, filter);
|
||||
}
|
||||
var query = repository.Query.Where(x => x.ContentTypeAlias == memberTypeAlias);
|
||||
return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, orderBySystemField, filter);
|
||||
else
|
||||
{
|
||||
var query = repository.Query.Where(x => x.ContentTypeAlias == memberTypeAlias);
|
||||
members = repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, orderBy, orderDirection, orderBySystemField, filter);
|
||||
}
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -749,7 +787,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.Count(memberTypeAlias);
|
||||
var count = repository.Count(memberTypeAlias);
|
||||
uow.Complete();
|
||||
return count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -927,7 +967,7 @@ namespace Umbraco.Core.Services
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
var query = repository.Query.Where(x => x.Email.Equals(email));
|
||||
var member = repository.GetByQuery(query).FirstOrDefault();
|
||||
|
||||
uow.Complete();
|
||||
return member;
|
||||
}
|
||||
}
|
||||
@@ -948,7 +988,7 @@ namespace Umbraco.Core.Services
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
var query = repository.Query.Where(x => x.Username.Equals(username));
|
||||
var member = repository.GetByQuery(query).FirstOrDefault();
|
||||
|
||||
uow.Complete();
|
||||
return member;
|
||||
}
|
||||
}
|
||||
@@ -1060,6 +1100,7 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
repository.CreateIfNotExists(roleName);
|
||||
uow.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1068,8 +1109,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
var result = repository.GetAll();
|
||||
return result.Select(x => x.Name).Distinct();
|
||||
var result = repository.GetAll().Select(x => x.Name).Distinct();
|
||||
uow.Complete();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1079,7 +1121,9 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
var result = repository.GetMemberGroupsForMember(memberId);
|
||||
return result.Select(x => x.Name).Distinct();
|
||||
var roles = result.Select(x => x.Name).Distinct();
|
||||
uow.Complete();
|
||||
return roles;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1089,7 +1133,9 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
var result = repository.GetMemberGroupsForMember(username);
|
||||
return result.Select(x => x.Name).Distinct();
|
||||
var roles = result.Select(x => x.Name).Distinct();
|
||||
uow.Complete();
|
||||
return roles;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1098,7 +1144,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.GetByMemberGroup(roleName);
|
||||
var members = repository.GetByMemberGroup(roleName);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1107,7 +1155,9 @@ namespace Umbraco.Core.Services
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberRepository>();
|
||||
return repository.FindMembersInRole(roleName, usernameToMatch, matchType);
|
||||
var members = repository.FindMembersInRole(roleName, usernameToMatch, matchType);
|
||||
uow.Complete();
|
||||
return members;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1134,7 +1184,9 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
_memberGroupService.Delete(memberGroup);
|
||||
}
|
||||
return found.Any();
|
||||
var deleted = found.Any();
|
||||
uow.Complete();
|
||||
return deleted;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1149,6 +1201,7 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
repository.AssignRoles(usernames, roleNames);
|
||||
uow.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1163,6 +1216,7 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
repository.DissociateRoles(usernames, roleNames);
|
||||
uow.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1177,6 +1231,7 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
repository.AssignRoles(memberIds, roleNames);
|
||||
uow.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1191,6 +1246,7 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
var repository = uow.CreateRepository<IMemberGroupRepository>();
|
||||
repository.DissociateRoles(memberIds, roleNames);
|
||||
uow.Complete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1209,14 +1265,15 @@ namespace Umbraco.Core.Services
|
||||
if (types.Any() == false)
|
||||
throw new Exception(
|
||||
string.Format("No MemberType matching the passed in Alias: '{0}' was found",
|
||||
memberTypeAlias));
|
||||
memberTypeAlias)); // causes rollback
|
||||
|
||||
var contentType = types.First();
|
||||
|
||||
if (contentType == null)
|
||||
throw new Exception(string.Format("MemberType matching the passed in Alias: '{0}' was null",
|
||||
memberTypeAlias));
|
||||
memberTypeAlias)); // causes rollback
|
||||
|
||||
uow.Complete();
|
||||
return contentType;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user