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:
Stephan
2016-05-18 10:55:19 +02:00
committed by Shannon Deminick
parent 12f4873c90
commit ddf38407d8
139 changed files with 7539 additions and 6981 deletions

View File

@@ -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;
}
}