/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="usersRepository">The users repository.</param> /// <param name="apiClient">The API client.</param> /// <param name="logger">The logger.</param> /// <param name="subscriptionRepo">The subscription repo.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="subscriptionUsageLogsRepository">The subscription usage logs repository.</param> /// <param name="dimensionsRepository">The dimensions repository.</param> /// <param name="subscriptionLogsRepo">The subscription logs repo.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="userRepository">The user repository.</param> /// <param name="fulfillApiClient">The fulfill API client.</param> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="emailTemplateRepository">The email template repository.</param> /// <param name="planEventsMappingRepository">The plan events mapping repository.</param> /// <param name="eventsRepository">The events repository.</param> /// <param name="options">The options.</param> /// <param name="subscriptionTemplateParametersRepository">The subscription template parameters repository.</param> /// <param name="cloudConfigs">The cloud configs.</param> public HomeController( IUsersRepository usersRepository, IMeteredBillingApiClient apiClient, ILogger <HomeController> logger, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, ISubscriptionUsageLogsRepository subscriptionUsageLogsRepository, IMeteredDimensionsRepository dimensionsRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IUsersRepository userRepository, IFulfillmentApiClient fulfillApiClient, IApplicationLogRepository applicationLogRepository, IEmailTemplateRepository emailTemplateRepository, IPlanEventsMappingRepository planEventsMappingRepository, IEventsRepository eventsRepository, IOptions <SaaSApiClientConfiguration> options, CloudStorageConfigs cloudConfigs) { this.apiClient = apiClient; this.subscriptionRepo = subscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; this.planRepository = planRepository; this.subscriptionUsageLogsRepository = subscriptionUsageLogsRepository; this.dimensionsRepository = dimensionsRepository; this.logger = logger; this.applicationConfigRepository = applicationConfigRepository; this.usersRepository = usersRepository; this.userRepository = userRepository; this.userService = new UserService(userRepository); this.fulfillApiClient = fulfillApiClient; this.applicationLogRepository = applicationLogRepository; this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.applicationConfigRepository = applicationConfigRepository; this.subscriptionRepository = this.subscriptionRepo; this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.emailTemplateRepository = emailTemplateRepository; this.planEventsMappingRepository = planEventsMappingRepository; this.eventsRepository = eventsRepository; this.options = options; this.cloudConfigs = cloudConfigs; this.azureWebJobsStorage = cloudConfigs.AzureWebJobsStorage; }
/// <summary> /// Initializes a new instance of the <see cref="WebHookHandler" /> class. /// </summary> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionsLogRepository">The subscriptions log repository.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="offersAttributeRepository">The offers attribute repository.</param> /// <param name="offersRepository">The offers repository.</param> /// <param name="fulfillApiClient">The fulfill API client.</param> /// <param name="usersRepository">The users repository.</param> /// <param name="loggerFactory">The logger factory.</param> /// <param name="emailService">The email service.</param> /// <param name="eventsRepository">The events repository.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="emailTemplateRepository">The email template repository.</param> /// <param name="planEventsMappingRepository">The plan events mapping repository.</param> public WebHookHandler(IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionsLogRepository, ISubscriptionsRepository subscriptionsRepository, IPlansRepository planRepository, IOfferAttributesRepository offersAttributeRepository, IOffersRepository offersRepository, IFulfillmentApiClient fulfillApiClient, IUsersRepository usersRepository, ILoggerFactory loggerFactory, IEmailService emailService, IEventsRepository eventsRepository, IApplicationConfigRepository applicationConfigRepository, IEmailTemplateRepository emailTemplateRepository, IPlanEventsMappingRepository planEventsMappingRepository) { this.applicationLogRepository = applicationLogRepository; this.subscriptionsRepository = subscriptionsRepository; this.planRepository = planRepository; this.subscriptionsLogRepository = subscriptionsLogRepository; this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.subscriptionService = new SubscriptionService(this.subscriptionsRepository, this.planRepository); this.emailService = emailService; this.loggerFactory = loggerFactory; this.usersRepository = usersRepository; this.eventsRepository = eventsRepository; this.offersAttributeRepository = offersAttributeRepository; this.fulfillApiClient = fulfillApiClient; this.applicationConfigRepository = applicationConfigRepository; this.emailTemplateRepository = emailTemplateRepository; this.planEventsMappingRepository = planEventsMappingRepository; this.offersRepository = offersRepository; this.notificationStatusHandlers = new NotificationStatusHandler( fulfillApiClient, planRepository, applicationConfigRepository, emailTemplateRepository, planEventsMappingRepository, offersAttributeRepository, eventsRepository, subscriptionsRepository, usersRepository, offersRepository, emailService, this.loggerFactory.CreateLogger <NotificationStatusHandler>()); }
/// <summary> /// Initializes a new instance of the <see cref="WebHookHandler"/> class. /// </summary> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionsLogRepository">The subscriptions log repository.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> /// <param name="planRepository">The plan repository.</param> public WebHookHandler(IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionsLogRepository, ISubscriptionsRepository subscriptionsRepository, IPlansRepository planRepository) { ApplicationLogRepository = applicationLogRepository; SubscriptionsRepository = subscriptionsRepository; PlanRepository = planRepository; SubscriptionsLogRepository = subscriptionsLogRepository; applicationLogService = new ApplicationLogService(ApplicationLogRepository); subscriptionService = new SubscriptionService(SubscriptionsRepository, PlanRepository); }
/// <summary> /// Initializes a new instance of the <see cref="AzureWebhookController"/> class. /// </summary> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="webhookProcessor">The Web hook log repository.</param> /// <param name="subscriptionsLogRepository">The subscriptions log repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> public AzureWebhookController(IApplicationLogRepository applicationLogRepository, IWebhookProcessor webhookProcessor, ISubscriptionLogRepository subscriptionsLogRepository, IPlansRepository planRepository, ISubscriptionsRepository subscriptionsRepository) { this.applicationLogRepository = applicationLogRepository; this.subscriptionsRepository = subscriptionsRepository; this.planRepository = planRepository; this.subscriptionsLogRepository = subscriptionsLogRepository; this.webhookProcessor = webhookProcessor; this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.subscriptionService = new SubscriptionService(this.subscriptionsRepository, this.planRepository); }
/// <summary> /// Initializes a new instance of the <see cref="WebHookHandler" /> class. /// </summary> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionsLogRepository">The subscriptions log repository.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="cloudConfigs">The cloud configs.</param> public WebHookHandler(IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionsLogRepository, ISubscriptionsRepository subscriptionsRepository, IPlansRepository planRepository, CloudStorageConfigs cloudConfigs) { this.applicationLogRepository = applicationLogRepository; this.subscriptionsRepository = subscriptionsRepository; this.planRepository = planRepository; this.subscriptionsLogRepository = subscriptionsLogRepository; this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.subscriptionService = new SubscriptionService(this.subscriptionsRepository, this.planRepository); this.cloudConfigs = cloudConfigs; this.azureWebJobsStorage = cloudConfigs.AzureWebJobsStorage; }
/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="apiClient">The API Client<see cref="IFulfilmentApiClient" /></param> /// <param name="subscriptionRepo">The subscription repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="userRepository">The user repository.</param> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionLogsRepo">The subscription logs repository.</param> public HomeController(IFulfillmentApiClient apiClient, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, IUsersRepository userRepository, IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionLogsRepo) { this.apiClient = apiClient; this.subscriptionRepository = subscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; this.applicationLogRepository = applicationLogRepository; this.planRepository = planRepository; this.userRepository = userRepository; this.userService = new UserService(this.userRepository); this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); }
/// <summary> /// Initializes a new instance of the <see cref="PendingActivationStatusHandler"/> class. /// </summary> /// <param name="fulfillApiClient">The fulfill API client.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> /// <param name="subscriptionLogRepository">The subscription log repository.</param> /// <param name="subscriptionTemplateParametersRepository">The subscription template parameters repository.</param> /// <param name="plansRepository">The plans repository.</param> /// <param name="usersRepository">The users repository.</param> /// <param name="logger">The logger.</param> public PendingActivationStatusHandler( IFulfillmentApiClient fulfillApiClient, ISubscriptionsRepository subscriptionsRepository, ISubscriptionLogRepository subscriptionLogRepository, IPlansRepository plansRepository, IUsersRepository usersRepository, ILogger <PendingActivationStatusHandler> logger) : base(subscriptionsRepository, plansRepository, usersRepository) { this.fulfillmentApiClient = fulfillApiClient; this.subscriptionLogRepository = subscriptionLogRepository; this.logger = logger; }
/// <summary> /// Initializes a new instance of the <see cref="UnsubscribeStatusHandler" /> class. /// </summary> /// <param name="fulfillApiService">The fulfill API client.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> /// <param name="subscriptionLogRepository">The subscription log repository.</param> /// <param name="plansRepository">The plans repository.</param> /// <param name="usersRepository">The users repository.</param> /// <param name="logger">The logger.</param> public UnsubscribeStatusHandler( IFulfillmentApiService fulfillApiService, ISubscriptionsRepository subscriptionsRepository, ISubscriptionLogRepository subscriptionLogRepository, IPlansRepository plansRepository, IUsersRepository usersRepository, ILogger <UnsubscribeStatusHandler> logger) : base(subscriptionsRepository, plansRepository, usersRepository) { this.fulfillmentApiService = fulfillApiService; this.subscriptionLogRepository = subscriptionLogRepository; this.logger = logger; }
/// <summary> /// Initializes a new instance of the <see cref="PendingFulfillmentStatusHandler" /> class. /// </summary> /// <param name="fulfillApiService">The fulfill API client.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="subscriptionsRepository">The subscriptions repository.</param> /// <param name="subscriptionLogRepository">The subscription log repository.</param> /// <param name="plansRepository">The plans repository.</param> /// <param name="usersRepository">The users repository.</param> /// <param name="logger">The logger.</param> public PendingFulfillmentStatusHandler( IFulfillmentApiService fulfillApiService, IApplicationConfigRepository applicationConfigRepository, ISubscriptionsRepository subscriptionsRepository, ISubscriptionLogRepository subscriptionLogRepository, IPlansRepository plansRepository, IUsersRepository usersRepository, ILogger <PendingFulfillmentStatusHandler> logger) : base(subscriptionsRepository, plansRepository, usersRepository) { this.fulfillmentApiService = fulfillApiService; this.applicationConfigRepository = applicationConfigRepository; this.subscriptionLogRepository = subscriptionLogRepository; this.logger = logger; }
/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="apiClient">The API Client<see cref="IFulfilmentApiClient" /></param> /// <param name="subscriptionRepo">The subscription repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="userRepository">The user repository.</param> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionLogsRepo">The subscription logs repository.</param> public HomeController(ILogger <HomeController> logger, IFulfillmentApiClient apiClient, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, IUsersRepository userRepository, IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IEmailTemplateRepository emailTemplateRepository) { this.apiClient = apiClient; this.subscriptionRepository = subscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; this.applicationLogRepository = applicationLogRepository; this.planRepository = planRepository; this.userRepository = userRepository; this.userService = new UserService(this.userRepository); this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.applicationConfigRepository = applicationConfigRepository; this.emailTemplateRepository = emailTemplateRepository; this.logger = logger; }
/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="apiClient">The API Client<see cref="IFulfilmentApiClient" />.</param> /// <param name="subscriptionRepo">The subscription repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="userRepository">The user repository.</param> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionLogsRepo">The subscription logs repository.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="emailTemplateRepository">The email template repository.</param> /// <param name="offersRepository">The offers repository.</param> /// <param name="planEventsMappingRepository">The plan events mapping repository.</param> /// <param name="offerAttributesRepository">The offer attributes repository.</param> /// <param name="eventsRepository">The events repository.</param> /// <param name="cloudConfigs">The cloud configs.</param> public HomeController(ILogger <HomeController> logger, IFulfillmentApiClient apiClient, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, IUsersRepository userRepository, IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IEmailTemplateRepository emailTemplateRepository, IOffersRepository offersRepository, IPlanEventsMappingRepository planEventsMappingRepository, IOfferAttributesRepository offerAttributesRepository, IEventsRepository eventsRepository, CloudStorageConfigs cloudConfigs) { this.apiClient = apiClient; this.subscriptionRepository = subscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; this.applicationLogRepository = applicationLogRepository; this.planRepository = planRepository; this.userRepository = userRepository; this.userService = new UserService(this.userRepository); this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.applicationConfigRepository = applicationConfigRepository; this.emailTemplateRepository = emailTemplateRepository; this.planEventsMappingRepository = planEventsMappingRepository; this.offerAttributesRepository = offerAttributesRepository; this.logger = logger; this.offersRepository = offersRepository; this.planService = new PlanService(this.planRepository, this.offerAttributesRepository, this.offersRepository); this.eventsRepository = eventsRepository; this.cloudConfigs = cloudConfigs; this.azureWebJobsStorage = cloudConfigs.AzureWebJobsStorage; }
/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="UsersRepository">The users repository.</param> /// <param name="apiClient">The API client.</param> /// <param name="logger">The logger.</param> /// <param name="SubscriptionRepo">The subscription repo.</param> /// <param name="PlanRepository">The plan repository.</param> /// <param name="SubscriptionUsageLogsRepository">The subscription usage logs repository.</param> public HomeController(IUsersRepository UsersRepository, IMeteredBillingApiClient apiClient, ILogger <HomeController> logger, ISubscriptionsRepository SubscriptionRepo, IPlansRepository PlanRepository, ISubscriptionUsageLogsRepository SubscriptionUsageLogsRepository, IMeteredDimensionsRepository DimensionsRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IUsersRepository userRepository, IFulfillmentApiClient fulfillApiClient, IApplicationLogRepository applicationLogRepository, IEmailTemplateRepository emailTemplateRepository) { this.apiClient = apiClient; subscriptionRepo = SubscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; planRepository = PlanRepository; subscriptionUsageLogsRepository = SubscriptionUsageLogsRepository; dimensionsRepository = DimensionsRepository; this.logger = logger; this.applicationConfigRepository = applicationConfigRepository; usersRepository = UsersRepository; this.userRepository = userRepository; this.userService = new UserService(userRepository); this.fulfillApiClient = fulfillApiClient; webSubscriptionService = new WebSubscriptionService(this.subscriptionRepo, this.planRepository); this.applicationLogRepository = applicationLogRepository; this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.applicationConfigRepository = applicationConfigRepository; this.subscriptionRepository = subscriptionRepo; this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.emailTemplateRepository = emailTemplateRepository; }
/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="apiClient">The API Client<see cref="IFulfilmentApiClient" />.</param> /// <param name="subscriptionRepo">The subscription repository.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="userRepository">The user repository.</param> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="subscriptionLogsRepo">The subscription logs repository.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="emailTemplateRepository">The email template repository.</param> /// <param name="offersRepository">The offers repository.</param> /// <param name="planEventsMappingRepository">The plan events mapping repository.</param> /// <param name="offerAttributesRepository">The offer attributes repository.</param> /// <param name="eventsRepository">The events repository.</param> /// <param name="cloudConfigs">The cloud configs.</param> /// <param name="loggerFactory">The logger factory.</param> /// <param name="emailService">The email service.</param> public HomeController(ILogger <HomeController> logger, IFulfillmentApiClient apiClient, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, IUsersRepository userRepository, IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IEmailTemplateRepository emailTemplateRepository, IOffersRepository offersRepository, IPlanEventsMappingRepository planEventsMappingRepository, IOfferAttributesRepository offerAttributesRepository, IEventsRepository eventsRepository, ILoggerFactory loggerFactory, IEmailService emailService) { this.apiClient = apiClient; this.subscriptionRepository = subscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; this.applicationLogRepository = applicationLogRepository; this.planRepository = planRepository; this.userRepository = userRepository; this.userService = new UserService(this.userRepository); this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.applicationConfigRepository = applicationConfigRepository; this.emailTemplateRepository = emailTemplateRepository; this.planEventsMappingRepository = planEventsMappingRepository; this.offerAttributesRepository = offerAttributesRepository; this.logger = logger; this.offersRepository = offersRepository; this.planService = new PlanService(this.planRepository, this.offerAttributesRepository, this.offersRepository); this.eventsRepository = eventsRepository; this.emailService = emailService; this.loggerFactory = loggerFactory; this.pendingActivationStatusHandlers = new PendingActivationStatusHandler( apiClient, subscriptionRepo, subscriptionLogsRepo, planRepository, userRepository, loggerFactory.CreateLogger <PendingActivationStatusHandler>()); this.pendingFulfillmentStatusHandlers = new PendingFulfillmentStatusHandler( apiClient, applicationConfigRepository, subscriptionRepo, subscriptionLogsRepo, planRepository, userRepository, this.loggerFactory.CreateLogger <PendingFulfillmentStatusHandler>()); this.notificationStatusHandlers = new NotificationStatusHandler( apiClient, planRepository, applicationConfigRepository, emailTemplateRepository, planEventsMappingRepository, offerAttributesRepository, eventsRepository, subscriptionRepo, userRepository, offersRepository, emailService, this.loggerFactory.CreateLogger <NotificationStatusHandler>()); this.unsubscribeStatusHandlers = new UnsubscribeStatusHandler( apiClient, subscriptionRepo, subscriptionLogsRepo, planRepository, userRepository, this.loggerFactory.CreateLogger <UnsubscribeStatusHandler>()); }
/// <summary> /// Initializes a new instance of the <see cref="HomeController" /> class. /// </summary> /// <param name="usersRepository">The users repository.</param> /// <param name="billingApiService">The billing API service.</param> /// <param name="logger">The logger.</param> /// <param name="subscriptionRepo">The subscription repo.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="subscriptionUsageLogsRepository">The subscription usage logs repository.</param> /// <param name="dimensionsRepository">The dimensions repository.</param> /// <param name="subscriptionLogsRepo">The subscription logs repo.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="userRepository">The user repository.</param> /// <param name="fulfillApiService">The fulfill API client.</param> /// <param name="applicationLogRepository">The application log repository.</param> /// <param name="emailTemplateRepository">The email template repository.</param> /// <param name="planEventsMappingRepository">The plan events mapping repository.</param> /// <param name="eventsRepository">The events repository.</param> /// <param name="options">The options.</param> /// <param name="cloudConfigs">The cloud configs.</param> /// <param name="loggerFactory">The logger factory.</param> /// <param name="emailService">The email service.</param> /// <param name="offersRepository">The offers repository.</param> /// <param name="offersAttributeRepository">The offers attribute repository.</param> public HomeController( IUsersRepository usersRepository, IMeteredBillingApiService billingApiService, ILogger <HomeController> logger, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, ISubscriptionUsageLogsRepository subscriptionUsageLogsRepository, IMeteredDimensionsRepository dimensionsRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IUsersRepository userRepository, IFulfillmentApiService fulfillApiService, IApplicationLogRepository applicationLogRepository, IEmailTemplateRepository emailTemplateRepository, IPlanEventsMappingRepository planEventsMappingRepository, IEventsRepository eventsRepository, IOptions <SaaSApiClientConfiguration> options, ILoggerFactory loggerFactory, IEmailService emailService, IOffersRepository offersRepository, IOfferAttributesRepository offersAttributeRepository) { this.billingApiService = billingApiService; this.subscriptionRepo = subscriptionRepo; this.subscriptionLogRepository = subscriptionLogsRepo; this.planRepository = planRepository; this.subscriptionUsageLogsRepository = subscriptionUsageLogsRepository; this.dimensionsRepository = dimensionsRepository; this.logger = logger; this.applicationConfigRepository = applicationConfigRepository; this.applicationConfigService = new ApplicationConfigService(this.applicationConfigRepository); this.userRepository = userRepository; this.userService = new UserService(userRepository); this.fulfillApiService = fulfillApiService; this.applicationLogRepository = applicationLogRepository; this.applicationLogService = new ApplicationLogService(this.applicationLogRepository); this.subscriptionRepository = this.subscriptionRepo; this.subscriptionService = new SubscriptionService(this.subscriptionRepository, this.planRepository); this.emailTemplateRepository = emailTemplateRepository; this.planEventsMappingRepository = planEventsMappingRepository; this.eventsRepository = eventsRepository; this.emailService = emailService; this.offersRepository = offersRepository; this.offersAttributeRepository = offersAttributeRepository; this.loggerFactory = loggerFactory; this.pendingActivationStatusHandlers = new PendingActivationStatusHandler( fulfillApiService, subscriptionRepo, subscriptionLogsRepo, planRepository, userRepository, loggerFactory.CreateLogger <PendingActivationStatusHandler>()); this.pendingFulfillmentStatusHandlers = new PendingFulfillmentStatusHandler( fulfillApiService, applicationConfigRepository, subscriptionRepo, subscriptionLogsRepo, planRepository, userRepository, this.loggerFactory.CreateLogger <PendingFulfillmentStatusHandler>()); this.notificationStatusHandlers = new NotificationStatusHandler( fulfillApiService, planRepository, applicationConfigRepository, emailTemplateRepository, planEventsMappingRepository, offersAttributeRepository, eventsRepository, subscriptionRepo, userRepository, offersRepository, emailService, this.loggerFactory.CreateLogger <NotificationStatusHandler>()); this.unsubscribeStatusHandlers = new UnsubscribeStatusHandler( fulfillApiService, subscriptionRepo, subscriptionLogsRepo, planRepository, userRepository, this.loggerFactory.CreateLogger <UnsubscribeStatusHandler>()); }
/// <summary> /// Initializes a new instance of the <see cref="Functions"/> class. /// </summary> /// <param name="fulfillmentApiClient">The fulfillment API client.</param> /// <param name="subscriptionRepository">The subscription repository.</param> /// <param name="applicationConfigRepository">The application configuration repository.</param> /// <param name="subscriptionLogRepository">The subscription log repository.</param> /// <param name="emailTemplaterepository">The email templaterepository.</param> /// <param name="planEventsMappingRepository">The plan events mapping repository.</param> /// <param name="offerAttributesRepository">The offer attributes repository.</param> /// <param name="eventsRepository">The events repository.</param> /// <param name="azureKeyVaultClient">The azure key vault client.</param> /// <param name="planRepository">The plan repository.</param> /// <param name="offersRepository">The offers repository.</param> /// <param name="usersRepository">The users repository.</param> /// <param name="armTemplateRepository">The arm template repository.</param> /// <param name="azureBlobFileClient">The azure BLOB file client.</param> /// <param name="subscriptionTemplateParametersRepository">The subscription template parameters repository.</param> /// <param name="keyVaultConfig">The key vault configuration.</param> /// <param name="emailService">The email service.</param> /// <param name="emailHelper">The email helper.</param> /// <param name="loggerFactory">The logger factory.</param> public Functions( IFulfillmentApiClient fulfillmentApiClient, ISubscriptionsRepository subscriptionRepository, IApplicationConfigRepository applicationConfigRepository, ISubscriptionLogRepository subscriptionLogRepository, IEmailTemplateRepository emailTemplaterepository, IPlanEventsMappingRepository planEventsMappingRepository, IOfferAttributesRepository offerAttributesRepository, IEventsRepository eventsRepository, IPlansRepository planRepository, IOffersRepository offersRepository, IUsersRepository usersRepository, IEmailService emailService, EmailHelper emailHelper, ILoggerFactory loggerFactory) { this.fulfillmentApiClient = fulfillmentApiClient; this.subscriptionRepository = subscriptionRepository; this.applicationConfigrepository = applicationConfigRepository; this.emailTemplaterepository = emailTemplaterepository; this.planEventsMappingRepository = planEventsMappingRepository; this.offerAttributesRepository = offerAttributesRepository; this.eventsRepository = eventsRepository; this.subscriptionLogRepository = subscriptionLogRepository; this.planRepository = planRepository; this.offersRepository = offersRepository; this.usersRepository = usersRepository; this.emialService = emailService; this.emailHelper = emailHelper; this.loggerFactory = loggerFactory; this.activateStatusHandlers = new List <ISubscriptionStatusHandler>(); this.deactivateStatusHandlers = new List <ISubscriptionStatusHandler>(); this.activateStatusHandlers.Add(new PendingActivationStatusHandler( fulfillmentApiClient, subscriptionRepository, subscriptionLogRepository, planRepository, usersRepository, this.loggerFactory.CreateLogger <PendingActivationStatusHandler>())); this.activateStatusHandlers.Add(new PendingFulfillmentStatusHandler( fulfillmentApiClient, this.applicationConfigrepository, subscriptionRepository, subscriptionLogRepository, planRepository, usersRepository, this.loggerFactory.CreateLogger <PendingFulfillmentStatusHandler>())); this.activateStatusHandlers.Add(new NotificationStatusHandler( fulfillmentApiClient, planRepository, this.applicationConfigrepository, emailTemplaterepository, planEventsMappingRepository, offerAttributesRepository, eventsRepository, subscriptionRepository, usersRepository, offersRepository, emailService, this.loggerFactory.CreateLogger <NotificationStatusHandler>())); this.deactivateStatusHandlers.Add(new UnsubscribeStatusHandler( fulfillmentApiClient, subscriptionRepository, subscriptionLogRepository, planRepository, usersRepository, this.loggerFactory.CreateLogger <UnsubscribeStatusHandler>())); this.deactivateStatusHandlers.Add(new NotificationStatusHandler( fulfillmentApiClient, planRepository, this.applicationConfigrepository, emailTemplaterepository, planEventsMappingRepository, offerAttributesRepository, eventsRepository, subscriptionRepository, usersRepository, offersRepository, emailService, this.loggerFactory.CreateLogger <NotificationStatusHandler>())); }