public CreateChannelCommandHandler(
            Fifthweek.Api.Identity.Shared.Membership.IRequesterSecurity requesterSecurity,
            Fifthweek.Api.Blogs.Shared.IBlogSecurity blogSecurity,
            Fifthweek.Api.Persistence.IFifthweekDbConnectionFactory connectionFactory,
            Fifthweek.Payments.SnapshotCreation.IRequestSnapshotService requestSnapshot)
        {
            if (requesterSecurity == null)
            {
                throw new ArgumentNullException("requesterSecurity");
            }

            if (blogSecurity == null)
            {
                throw new ArgumentNullException("blogSecurity");
            }

            if (connectionFactory == null)
            {
                throw new ArgumentNullException("connectionFactory");
            }

            if (requestSnapshot == null)
            {
                throw new ArgumentNullException("requestSnapshot");
            }

            this.requesterSecurity = requesterSecurity;
            this.blogSecurity      = blogSecurity;
            this.connectionFactory = connectionFactory;
            this.requestSnapshot   = requestSnapshot;
        }
        public DeleteChannelCommandHandler(
            Fifthweek.Api.Identity.Shared.Membership.IRequesterSecurity requesterSecurity,
            Fifthweek.Api.Channels.Shared.IChannelSecurity channelSecurity,
            Fifthweek.Api.Channels.IDeleteChannelDbStatement deleteChannel,
            Fifthweek.Api.FileManagement.Shared.IScheduleGarbageCollectionStatement scheduleGarbageCollection)
        {
            if (requesterSecurity == null)
            {
                throw new ArgumentNullException("requesterSecurity");
            }

            if (channelSecurity == null)
            {
                throw new ArgumentNullException("channelSecurity");
            }

            if (deleteChannel == null)
            {
                throw new ArgumentNullException("deleteChannel");
            }

            if (scheduleGarbageCollection == null)
            {
                throw new ArgumentNullException("scheduleGarbageCollection");
            }

            this.requesterSecurity         = requesterSecurity;
            this.channelSecurity           = channelSecurity;
            this.deleteChannel             = deleteChannel;
            this.scheduleGarbageCollection = scheduleGarbageCollection;
        }
        public GetUserStateQueryHandler(
            Fifthweek.Api.Identity.Shared.Membership.IRequesterSecurity requesterSecurity,
            Fifthweek.Api.Core.IQueryHandler <Fifthweek.Api.FileManagement.Queries.GetUserAccessSignaturesQuery, Fifthweek.Api.FileManagement.Queries.UserAccessSignatures> getUserAccessSignatures,
            Fifthweek.Api.Core.IQueryHandler <Fifthweek.Api.Identity.Membership.Queries.GetAccountSettingsQuery, Fifthweek.Api.Identity.Membership.GetAccountSettingsResult> getAccountSettings,
            Fifthweek.Api.Core.IQueryHandler <Fifthweek.Api.Blogs.Queries.GetBlogChannelsAndQueuesQuery, Fifthweek.Api.Blogs.Queries.GetBlogChannelsAndQueuesResult> getBlogChannelsAndQueues,
            Fifthweek.Api.Core.IQueryHandler <Fifthweek.Api.Blogs.Queries.GetUserSubscriptionsQuery, Fifthweek.Api.Blogs.Queries.GetUserSubscriptionsResult> getBlogSubscriptions,
            Fifthweek.Api.Identity.Membership.IImpersonateIfRequired impersonateIfRequired)
        {
            if (requesterSecurity == null)
            {
                throw new ArgumentNullException("requesterSecurity");
            }

            if (getUserAccessSignatures == null)
            {
                throw new ArgumentNullException("getUserAccessSignatures");
            }

            if (getAccountSettings == null)
            {
                throw new ArgumentNullException("getAccountSettings");
            }

            if (getBlogChannelsAndQueues == null)
            {
                throw new ArgumentNullException("getBlogChannelsAndQueues");
            }

            if (getBlogSubscriptions == null)
            {
                throw new ArgumentNullException("getBlogSubscriptions");
            }

            if (impersonateIfRequired == null)
            {
                throw new ArgumentNullException("impersonateIfRequired");
            }

            this.requesterSecurity        = requesterSecurity;
            this.getUserAccessSignatures  = getUserAccessSignatures;
            this.getAccountSettings       = getAccountSettings;
            this.getBlogChannelsAndQueues = getBlogChannelsAndQueues;
            this.getBlogSubscriptions     = getBlogSubscriptions;
            this.impersonateIfRequired    = impersonateIfRequired;
        }
        public UpdateChannelCommandHandler(
            Fifthweek.Api.Identity.Shared.Membership.IRequesterSecurity requesterSecurity,
            Fifthweek.Api.Channels.Shared.IChannelSecurity channelSecurity,
            Fifthweek.Api.Channels.IUpdateChannelDbStatement updateChannel)
        {
            if (requesterSecurity == null)
            {
                throw new ArgumentNullException("requesterSecurity");
            }

            if (channelSecurity == null)
            {
                throw new ArgumentNullException("channelSecurity");
            }

            if (updateChannel == null)
            {
                throw new ArgumentNullException("updateChannel");
            }

            this.requesterSecurity = requesterSecurity;
            this.channelSecurity   = channelSecurity;
            this.updateChannel     = updateChannel;
        }