public async Task <IResponse <ITasksGroup> > RemoveAsync(string id)
        {
            ITasksGroup groupToRemove = await mTasksGroupRepository.FindAsync(id).ConfigureAwait(false);

            if (groupToRemove == null)
            {
                return(new FailResponse <ITasksGroup>($"Entity group {id} not found. No deletion performed"));
            }

            if (groupToRemove.Size > 0)
            {
                StringBuilder idsInGroup = new StringBuilder();
                groupToRemove.GetAllTasks().Select(task => task.ID).ToList().ForEach(id => idsInGroup.Append(id).Append(", "));
                return(new FailResponse <ITasksGroup>(groupToRemove, $"Entity group {id} cannot be deleted. Please move or remove" +
                                                      $" the next work tasks ids: {idsInGroup}"));
            }

            try
            {
                await mTasksGroupRepository.RemoveAsync(groupToRemove).ConfigureAwait(false);

                return(new SuccessResponse <ITasksGroup>(groupToRemove));
            }
            catch (Exception ex)
            {
                return(new FailResponse <ITasksGroup>($"An error occurred when removing tasks group id {id}: {ex.Message}"));
            }
        }
        public async Task SaveTaskAsync_ValidWorkTaskToAdd_SuccessResponseReturnedAndSavePerformed()
        {
            IWorkTask validWorkTask = A.Fake <IWorkTask>();

            validWorkTask.GroupName   = "groupName";
            validWorkTask.Description = "validDescription";

            ITasksGroup tasksGroup = mTasksGroupFactory.CreateGroup("bla");

            tasksGroup.SetGroupName(validWorkTask.GroupName);

            IDbRepository <ITasksGroup> dbRepository = A.Fake <IDbRepository <ITasksGroup> >();

            A.CallTo(() => dbRepository.ListAsync()).Returns(new List <ITasksGroup>()
            {
                tasksGroup
            });
            TasksGroupService tasksGroupService =
                new TasksGroupService(dbRepository, mTasksGroupFactory, NullLogger <TasksGroupService> .Instance);

            IResponse <IWorkTask> response =
                await tasksGroupService.SaveTaskAsync(validWorkTask.GroupName, validWorkTask.Description)
                .ConfigureAwait(false);

            Assert.True(response.IsSuccess);
            Assert.Equal(tasksGroup.GetAllTasks().First(), response.ResponseObject);
            A.CallTo(() => dbRepository.UpdateAsync(A <ITasksGroup> .Ignored)).MustHaveHappenedOnceExactly();
        }
        public async Task SaveTaskAsync_DescriptionExistsInTheSameGroup_SaveNotPerformed()
        {
            IWorkTask workTask = A.Fake <IWorkTask>();

            workTask.GroupName   = "groupName";
            workTask.Description = "description";

            IWorkTask workTaskWithSameDescription = A.Fake <IWorkTask>();

            workTask.GroupName   = workTask.GroupName;
            workTask.Description = workTask.Description;

            ITasksGroup tasksGroup = A.Fake <ITasksGroup>();

            tasksGroup.SetGroupName(workTask.GroupName);
            A.CallTo(() => tasksGroup.GetAllTasks()).Returns(new List <IWorkTask> {
                workTask
            });

            IDbRepository <ITasksGroup> dbRepository = A.Fake <IDbRepository <ITasksGroup> >();

            A.CallTo(() => dbRepository.ListAsync()).Returns(new List <ITasksGroup>()
            {
                tasksGroup
            });

            TasksGroupService tasksGroupService =
                new TasksGroupService(dbRepository, mTasksGroupFactory, NullLogger <TasksGroupService> .Instance);

            await tasksGroupService.SaveTaskAsync(workTask.GroupName, workTask.Description).ConfigureAwait(false);

            A.CallTo(() => dbRepository.UpdateAsync(A <ITasksGroup> .Ignored)).MustNotHaveHappened();
        }
        public async Task SaveTaskAsync_DescriptionExistsInTheSameGroup_FailResponseReturned()
        {
            IWorkTask workTask = A.Fake <IWorkTask>();

            workTask.GroupName   = "groupName";
            workTask.Description = "description";

            IWorkTask workTaskWithSameDescription = A.Fake <IWorkTask>();

            workTask.GroupName   = workTask.GroupName;
            workTask.Description = workTask.Description;

            ITasksGroup tasksGroup = A.Fake <ITasksGroup>();

            tasksGroup.SetGroupName(workTask.GroupName);
            A.CallTo(() => tasksGroup.GetAllTasks()).Returns(new List <IWorkTask> {
                workTask
            });

            IDbRepository <ITasksGroup> dbRepository = A.Fake <IDbRepository <ITasksGroup> >();

            A.CallTo(() => dbRepository.ListAsync()).Returns(new List <ITasksGroup>()
            {
                tasksGroup
            });

            TasksGroupService tasksGroupService =
                new TasksGroupService(dbRepository, mTasksGroupFactory, NullLogger <TasksGroupService> .Instance);

            IResponse <IWorkTask> response =
                await tasksGroupService.SaveTaskAsync(workTask.GroupName, workTask.Description).ConfigureAwait(false);

            Assert.False(response.IsSuccess);
            Assert.Null(response.ResponseObject);
        }
        private Task UpdateGroupNamesForAllChildren(ITasksGroup tasksGroup)
        {
            foreach (IWorkTask workTaskChild in tasksGroup.GetAllTasks())
            {
                mLogger.LogDebug($"Updating task's group name from {workTaskChild.GroupName} to {tasksGroup.Name}");
                workTaskChild.GroupName = tasksGroup.Name;
            }

            return(Task.CompletedTask);
        }
        private bool ValidateUniqueTaskDescription(ITasksGroup tasksGroup, string workTaskDescription)
        {
            foreach (IWorkTask workTask in tasksGroup.GetAllTasks())
            {
                if (workTask.Description.Equals(workTaskDescription))
                {
                    return(false);
                }
            }

            return(true);
        }
Beispiel #7
0
        public async Task <IEnumerable <WorkTaskResource> > ListTasksOfSpecificGroupAsync(string groupNameOrId)
        {
            IEnumerable <WorkTaskResource> workTaskResources = new List <WorkTaskResource>();

            if (string.IsNullOrEmpty(groupNameOrId))
            {
                mLogger.LogWarning($"{nameof(groupNameOrId)} is null or empty");
                return(workTaskResources);
            }

            ITasksGroup group = await GetSpecificGroup(groupNameOrId).ConfigureAwait(false);

            if (group == null)
            {
                mLogger.LogDebug($"Could not find tasks of group {groupNameOrId}");
                return(workTaskResources);
            }

            workTaskResources = mMapper.Map <IEnumerable <IWorkTask>, IEnumerable <WorkTaskResource> >(group.GetAllTasks());

            mLogger.LogDebug($"Found {workTaskResources.Count()} work tasks");

            return(workTaskResources);
        }
 private bool IsWorkTaskDescriptionAlreadyExist(ITasksGroup tasksGroup, string workTaskDescription)
 {
     return(tasksGroup.GetAllTasks().Any(
                task => task.Description.Equals(workTaskDescription, StringComparison.OrdinalIgnoreCase)));
 }