diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs index d112cc402a..aac8f09872 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/ITaskRepository.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.Persistence.Repositories { public interface ITaskRepository : IRepositoryQueryable { - IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); + //IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); //IEnumerable GetTasksForItem(int id); diff --git a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs index 6c801cc2a8..1707fd8399 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs @@ -108,8 +108,6 @@ namespace Umbraco.Core.Persistence.Repositories { entity.AddingEntity(); - - //ensure the task type exists var taskType = Database.SingleOrDefault("Where alias = @alias", new {alias = entity.TaskType.Alias}); if (taskType == null) @@ -117,6 +115,10 @@ namespace Umbraco.Core.Persistence.Repositories var taskTypeId = Convert.ToInt32(Database.Insert(new TaskTypeDto {Alias = entity.TaskType.Alias})); entity.TaskType.Id = taskTypeId; } + else + { + entity.TaskType.Id = taskType.Id; + } var factory = new TaskFactory(); var dto = factory.BuildDto(entity); @@ -132,18 +134,18 @@ namespace Umbraco.Core.Persistence.Repositories throw new NotImplementedException(); } - public IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) - { - var sql = GetGetTasksQuery(assignedUser, ownerUser, taskTypeAlias, includeClosed); - if (itemId.HasValue) - { - sql.Where(dto => dto.UniqueId == itemId.Value); - } + //public IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + //{ + // var sql = GetGetTasksQuery(assignedUser, ownerUser, taskTypeAlias, includeClosed); + // if (itemId.HasValue) + // { + // sql.Where(dto => dto.UniqueId == itemId.Value); + // } - var dtos = Database.Fetch(sql); - var entities = Mapper.Map>(dtos); - return entities; - } + // var dtos = Database.Fetch(sql); + // var entities = Mapper.Map>(dtos); + // return entities; + //} public IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) { @@ -154,8 +156,8 @@ namespace Umbraco.Core.Persistence.Repositories } var dtos = Database.Fetch(sql); - var entities = Mapper.Map>(dtos); - return entities; + var factory = new TaskFactory(); + return dtos.Select(factory.BuildEntity); } private Sql GetGetTasksQuery(int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) diff --git a/src/Umbraco.Core/Services/ITaskService.cs b/src/Umbraco.Core/Services/ITaskService.cs index e59929d095..ea0adda78e 100644 --- a/src/Umbraco.Core/Services/ITaskService.cs +++ b/src/Umbraco.Core/Services/ITaskService.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.Services { public interface ITaskService { - IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); + //IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false); } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/TaskService.cs b/src/Umbraco.Core/Services/TaskService.cs index 4df7ae7c8d..5f28977902 100644 --- a/src/Umbraco.Core/Services/TaskService.cs +++ b/src/Umbraco.Core/Services/TaskService.cs @@ -16,13 +16,13 @@ namespace Umbraco.Core.Services { } - public IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) - { - using (var repo = RepositoryFactory.CreateTaskRepository(UowProvider.GetUnitOfWork())) - { - return repo.GetTasks(itemId, assignedUser, ownerUser, taskTypeAlias); - } - } + //public IEnumerable GetTasks(Guid? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) + //{ + // using (var repo = RepositoryFactory.CreateTaskRepository(UowProvider.GetUnitOfWork())) + // { + // return repo.GetTasks(itemId, assignedUser, ownerUser, taskTypeAlias); + // } + //} public IEnumerable GetTasks(int? itemId = null, int? assignedUser = null, int? ownerUser = null, string taskTypeAlias = null, bool includeClosed = false) { diff --git a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs index 1929c7af25..d1231c7804 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs @@ -30,7 +30,7 @@ namespace Umbraco.Tests.Persistence.Repositories }); unitOfWork.Commit(); - var found = repo.GetAll(); + var found = repo.GetAll().ToArray(); Assert.AreEqual(1, found.Count()); Assert.AreEqual(0, found.First().AssigneeUserId); @@ -43,5 +43,71 @@ namespace Umbraco.Tests.Persistence.Repositories Assert.AreEqual(true, found.First().TaskType.HasIdentity); } } + + [Test] + public void Get_All() + { + CreateTestData(false, 20); + + var provider = new PetaPocoUnitOfWorkProvider(Logger); + var unitOfWork = provider.GetUnitOfWork(); + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntaxProvider)) + { + var found = repo.GetAll().ToArray(); + Assert.AreEqual(20, found.Count()); + } + } + + [Test] + public void Get_All_With_Closed() + { + CreateTestData(false, 10); + CreateTestData(true, 5); + + var provider = new PetaPocoUnitOfWorkProvider(Logger); + var unitOfWork = provider.GetUnitOfWork(); + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntaxProvider)) + { + var found = repo.GetTasks(includeClosed: true).ToArray(); + Assert.AreEqual(15, found.Count()); + } + } + + [Test] + public void Get_All_Without_Closed() + { + CreateTestData(false, 10); + CreateTestData(true, 5); + + var provider = new PetaPocoUnitOfWorkProvider(Logger); + var unitOfWork = provider.GetUnitOfWork(); + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntaxProvider)) + { + var found = repo.GetTasks(includeClosed: false); + Assert.AreEqual(10, found.Count()); + } + } + + private void CreateTestData(bool closed, int count) + { + var provider = new PetaPocoUnitOfWorkProvider(Logger); + var unitOfWork = provider.GetUnitOfWork(); + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntaxProvider)) + { + for (int i = 0; i < count; i++) + { + repo.AddOrUpdate(new Task(new TaskType("asdfasdf")) + { + AssigneeUserId = 0, + Closed = closed, + Comment = "hello world " + i, + EntityId = -1, + OwnerUserId = 0 + }); + unitOfWork.Commit(); + } + + } + } } } \ No newline at end of file