public RoleManagementController(IRoleManagementRoleService service, ICurrentlyViewingUserService currentlyViewingUserService, Func<CreateRolePreCommand> createRolePreCommandAccessor, Func<RenameRolePreCommand> renameRolePreCommandAccessor)
        {
            if (service == null)
                throw new ArgumentNullException("service");

            this.service = service;
            this.currentlyViewingUserService = currentlyViewingUserService;
            this.createRolePreCommandAccessor = createRolePreCommandAccessor;
            this.renameRolePreCommandAccessor = renameRolePreCommandAccessor;
        }
        public ThespianManagementController(IThespianManagementThespianService service, Func<CreateThespianPreCommand> createActorPreCommandAccessor, Func<DeleteThespianPreCommand> deletedActorPreCommandAccessor, Func<RenameThespianPreCommand> renameThespianPreCommandAccessor, ICurrentlyViewingUserService currentlyViewingUserService, IProvideCurrentUserDetails currentUserDetails , Func<PersistImageCommand> persistImageCommandAccessor, Func<UpdateThespianProfileImagePreCommand> updateThespianProfileImagePreCommandAccessor)
        {
            if (service == null)
                throw new ArgumentNullException("service");

            this.service = service;
            this.createActorPreCommandAccessor = createActorPreCommandAccessor;
            this.deletedActorPreCommandAccessor = deletedActorPreCommandAccessor;
            this.renameThespianPreCommandAccessor = renameThespianPreCommandAccessor;
            this.currentlyViewingUserService = currentlyViewingUserService;
            this.currentUserDetails = currentUserDetails;
            this.persistImageCommandAccessor = persistImageCommandAccessor;
            this.updateThespianProfileImagePreCommandAccessor = updateThespianProfileImagePreCommandAccessor;
        }
        public TeamManagementController(ITeamManagementEmployeeService service, Func<CreateTeamEmployeePreCommand> createTeamEmployeePreCommandAccessor, Func<DeleteTeamEmployeePreCommand> deleteTeamEmployeePreCommandAccessor, Func<RenameTeamEmployeePreCommand> renameTeamEmployeePreCommandAccessor, Func<RenameJobTitlePreCommand> renameJobTitlePreCommandAccessor, Func<UpdateSummaryPreCommand> updateSummaryPreCommandAccessor, ICurrentlyViewingUserService currentlyViewingUserService, IProvideCurrentUserDetails currentUserDetails, Func<UpdateTeamEmployeeProfileImagePreCommand> updateTeamEmployeeProfileImagePreCommandAccessor)
        {
            if (service == null)
                throw new ArgumentNullException("service");

            this.service = service;

            this.createTeamEmployeePreCommandAccessor = createTeamEmployeePreCommandAccessor;
            this.deleteTeamEmployeePreCommandAccessor = deleteTeamEmployeePreCommandAccessor;
            this.renameTeamEmployeePreCommandAccessor = renameTeamEmployeePreCommandAccessor;
            this.renameJobTitlePreCommandAccessor = renameJobTitlePreCommandAccessor;
            this.updateSummaryPreCommandAccessor = updateSummaryPreCommandAccessor;
            this.currentlyViewingUserService = currentlyViewingUserService;
            this.currentUserDetails = currentUserDetails;
            this.updateTeamEmployeeProfileImagePreCommandAccessor = updateTeamEmployeeProfileImagePreCommandAccessor;
        }
        public NewsManagementController(INewsManagementNewsArticleService service, IProvideCurrentUserDetails currentUserDetails, Func<CreatedNewsArticlePreCommand> createNewsArticlePreCommandAccessor, Func<DeletedNewsArticlePreCommand> deletedNewsArticlePreCommandAccessor, Func<RenameNewsArticleTitlePreCommand> renameNewsArticleTitlePreCommandAccessor, Func<UpdateNewsArticleContentPreCommand> updateNewsArticleContentPreCommandAccessor, ICurrentlyViewingUserService currentlyViewingUserService)
        {
            if (service == null)
                throw new ArgumentNullException("service");

            if (currentUserDetails == null)
                throw new ArgumentNullException("currentUserDetails");

            this.service = service;
            this.currentUserDetails = currentUserDetails;
            
            this.createNewsArticlePreCommandAccessor = createNewsArticlePreCommandAccessor;
            this.deletedNewsArticlePreCommandAccessor = deletedNewsArticlePreCommandAccessor;
            this.renameNewsArticleTitlePreCommandAccessor = renameNewsArticleTitlePreCommandAccessor;
            this.updateNewsArticleContentPreCommandAccessor = updateNewsArticleContentPreCommandAccessor;
            this.currentlyViewingUserService = currentlyViewingUserService;
        }
        public AuthenticationUserManagementController(IAuthenticationUserManagementUserService service, IAuthenticationUserManagementRoleService roleService, Func<CreateUserRoleAssociationPreCommand> createUserRoleAssociationPreCommandAccessor, IProvideUserConfiguration userConfiguration, Func<RemoveUserRoleAssociationPreCommand> removeUserRoleAssociationPreCommandAccessor, ICurrentlyViewingUserService currentlyViewingUserService)
        {
            if (service == null)
                throw new ArgumentNullException("service");

            if (roleService == null)
                throw new ArgumentNullException("roleService");

            if (userConfiguration == null)
                throw new ArgumentNullException("userConfiguration");

            this.service = service;
            this.roleService = roleService;
            this.createUserRoleAssociationPreCommandAccessor = createUserRoleAssociationPreCommandAccessor;
            this.userConfiguration = userConfiguration;
            this.removeUserRoleAssociationPreCommandAccessor = removeUserRoleAssociationPreCommandAccessor;
            this.currentlyViewingUserService = currentlyViewingUserService;
        }