public ProfileViewController(IProfileViewProfileService service, IProvideCurrentUserDetails provideCurrentUser)
        {
            if (service == null)
                throw new ArgumentNullException("service");

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

            this.service = service;
            this.provideCurrentUser = provideCurrentUser;
        }
        public ProfileManagementController(IProfileManagementProfileService service, IProvideCurrentUserDetails provideCurrentUser, Func<UpdateEmailAddressPreCommand> updateEmailAddressPreCommandAccessor, Func<UpdateProfileNamePreCommand> updateProfileNamePreCommandAccessor)
        {
            if (service == null)
                throw new ArgumentNullException("service");

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

            this.service = service;
            this.provideCurrentUser = provideCurrentUser;
            this.updateEmailAddressPreCommandAccessor = updateEmailAddressPreCommandAccessor;
            this.updateProfileNamePreCommandAccessor = updateProfileNamePreCommandAccessor;
        }
        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 TwitterLoginCommand(IOAuthUserService service, IProvideUserConfiguration configuration, Func<LinkExistingUserToExternalProviderPreCommand> linkExistingUserToExternalProviderPreCommandAccessor, ITwitterClient twitterClient, IProvideCurrentUserDetails currentUserDetails)
        {
            if (service == null)
                throw new ArgumentNullException("service");

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

            this.service = service;
            this.configuration = configuration;
            this.linkExistingUserToExternalProviderPreCommandAccessor = linkExistingUserToExternalProviderPreCommandAccessor;
            this.twitterClient = twitterClient;
            this.currentUserDetails = currentUserDetails;
        }
        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;
        }