private string Describe(DeveloperHasLeftProject @event)
        {
            Require.NotNull(@event, nameof(@event));

            var developer         = _userRepository.GetAccount(@event.UserId);
            var developerFullName = developer.Firstname + " " + developer.Lastname;

            var project = _projectRepository.GetProject(@event.ProjectId);

            return(string.Format(EventDescriptionResources.DeveloperHasLeftProject, developerFullName, project.Name));
        }
示例#2
0
        public void RemoveUserFromProject(int projectId, int userId)
        {
            Require.Positive(projectId, nameof(projectId));
            Require.Positive(userId, nameof(userId));

            var project = GetProject(projectId);

            if (project.ProjectMemberships.All(developer => developer.DeveloperId != userId))
            {
                throw new InvalidOperationException("Attempt to remove developer who is not on project");
            }

            var developerToDelete = project.ProjectMemberships
                                    .SingleOrDefault(developer => developer.DeveloperId == userId);

            project.ProjectMemberships.Remove(developerToDelete);

            UpdateProject(project);

            var @event = new DeveloperHasLeftProject(userId, projectId);

            _eventBus.PublishEvent("Notification", "developer_has_left_project", @event);
        }
示例#3
0
 public void NotifyAboutDeveloperHasLeftProject(DeveloperHasLeftProject @event)
 {
     NotifyAboutNewEvent(@event);
 }