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

@@ -50,9 +50,11 @@ namespace Umbraco.Core.Services
if (types.Any() == false)
{
throw new EntityNotFoundException("No member types could be resolved");
throw new EntityNotFoundException("No member types could be resolved"); // causes rollback
}
uow.Complete();
if (types.InvariantContains("writer"))
{
return types.First(x => x.InvariantEquals("writer"));
@@ -78,7 +80,9 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserRepository>();
return repository.Exists(username);
var exists = repository.Exists(username);
uow.Complete();
return exists;
}
}
@@ -136,7 +140,7 @@ namespace Umbraco.Core.Services
var repository = uow.CreateRepository<IUserRepository>();
var loginExists = uow.Database.ExecuteScalar<int>("SELECT COUNT(id) FROM umbracoUser WHERE userLogin = @Login", new { Login = username }) != 0;
if (loginExists)
throw new ArgumentException("Login already exists");
throw new ArgumentException("Login already exists"); // causes rollback
user = new User(userType)
{
@@ -177,8 +181,8 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserRepository>();
var user = repository.Get((int)id);
var user = repository.Get(id);
uow.Complete();
return user;
}
}
@@ -211,7 +215,7 @@ namespace Umbraco.Core.Services
var repository = uow.CreateRepository<IUserRepository>();
var query = repository.Query.Where(x => x.Email.Equals(email));
var user = repository.GetByQuery(query).FirstOrDefault();
uow.Complete();
return user;
}
}
@@ -228,6 +232,7 @@ namespace Umbraco.Core.Services
var repository = uow.CreateRepository<IUserRepository>();
var query = repository.Query.Where(x => x.Username.Equals(username));
var user = repository.GetByQuery(query).FirstOrDefault();
uow.Complete();
return user;
}
}
@@ -322,9 +327,9 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserRepository>();
repository.AddOrUpdate(entity);
try
{
repository.AddOrUpdate(entity);
uow.Complete();
}
catch (DbException ex)
@@ -407,7 +412,9 @@ namespace Umbraco.Core.Services
throw new ArgumentOutOfRangeException("matchType");
}
return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, dto => dto.Email);
var users = repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, dto => dto.Email);
uow.Complete();
return users;
}
}
@@ -448,7 +455,9 @@ namespace Umbraco.Core.Services
throw new ArgumentOutOfRangeException("matchType");
}
return repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, dto => dto.Username);
var users = repository.GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords, dto => dto.Username);
uow.Complete();
return users;
}
}
@@ -473,7 +482,7 @@ namespace Umbraco.Core.Services
{
case MemberCountType.All:
query = repository.Query;
return repository.Count(query);
break;
case MemberCountType.Online:
throw new NotImplementedException();
//var fromDate = DateTime.Now.AddMinutes(-Membership.UserIsOnlineTimeWindow);
@@ -484,18 +493,18 @@ namespace Umbraco.Core.Services
// ((Member)x).DateTimePropertyValue > fromDate);
//return repository.GetCountByQuery(query);
case MemberCountType.LockedOut:
query =
repository.Query.Where(
x => x.IsLockedOut);
return repository.GetCountByQuery(query);
query = repository.Query.Where(x => x.IsLockedOut);
break;
case MemberCountType.Approved:
query =
repository.Query.Where(
x => x.IsApproved);
return repository.GetCountByQuery(query);
query = repository.Query.Where(x => x.IsApproved);
break;
default:
throw new ArgumentOutOfRangeException("countType");
}
var count = repository.GetCountByQuery(query);
uow.Complete();
return count;
}
}
@@ -511,7 +520,9 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserRepository>();
return repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, member => member.Username);
var users = repository.GetPagedResultsByQuery(null, pageIndex, pageSize, out totalRecords, member => member.Username);
uow.Complete();
return users;
}
}
@@ -551,7 +562,9 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserRepository>();
return repository.Get(id);
var user = repository.Get(id);
uow.Complete();
return user;
}
}
@@ -568,6 +581,7 @@ namespace Umbraco.Core.Services
{
var repository = uow.CreateRepository<IUserRepository>();
repository.ReplaceUserPermissions(userId, permissions, entityIds);
uow.Complete();
}
}
@@ -583,6 +597,7 @@ namespace Umbraco.Core.Services
{
var repository = uow.CreateRepository<IUserRepository>();
repository.AssignUserPermission(userId, permission, entityIds);
uow.Complete();
}
}
@@ -596,7 +611,9 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserTypeRepository>();
return repository.GetAll(ids);
var types = repository.GetAll(ids);
uow.Complete();
return types;
}
}
@@ -611,8 +628,9 @@ namespace Umbraco.Core.Services
{
var repository = uow.CreateRepository<IUserTypeRepository>();
var query = repository.QueryFactory.Create<IUserType>().Where(x => x.Alias == alias);
var contents = repository.GetByQuery(query);
return contents.SingleOrDefault();
var type = repository.GetByQuery(query).SingleOrDefault();
uow.Complete();
return type;
}
}
@@ -626,7 +644,9 @@ namespace Umbraco.Core.Services
using (var uow = UowProvider.CreateUnitOfWork())
{
var repository = uow.CreateRepository<IUserTypeRepository>();
return repository.Get(id);
var type = repository.Get(id);
uow.Complete();
return type;
}
}
@@ -641,8 +661,9 @@ namespace Umbraco.Core.Services
{
var repository = uow.CreateRepository<IUserTypeRepository>();
var query = repository.QueryFactory.Create<IUserType>().Where(x => x.Name == name);
var contents = repository.GetByQuery(query);
return contents.SingleOrDefault();
var type = repository.GetByQuery(query).SingleOrDefault();
uow.Complete();
return type;
}
}
@@ -763,23 +784,16 @@ namespace Umbraco.Core.Services
if (id == -1 && user.DefaultPermissions.Any() == false)
{
// exception to everything. If default cruds is empty and we're on root node; allow browse of root node
result.Add(
new EntityPermission(
user.Id,
id,
user.DefaultPermissions.ToArray()));
result.Add(new EntityPermission(user.Id, id, user.DefaultPermissions.ToArray()));
}
else
{
//use the user's user type permissions
result.Add(
new EntityPermission(
user.Id,
id,
user.DefaultPermissions.ToArray()));
result.Add(new EntityPermission(user.Id, id, user.DefaultPermissions.ToArray()));
}
}
uow.Complete();
return result;
}
}