/// <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="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; }
private static void ConfigureServices(IServiceCollection services) { var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var loggerFactory = LoggerFactory.Create(builder => { builder .AddConsole(); }); Configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() // this doesn't do anything useful notice in setting some env variables explicitly. .Build(); // build it so you can use those config variables down below. Environment.SetEnvironmentVariable("MyConnVariable", Configuration["MyConnVariable"]); var config = new SaaSApiClientConfiguration() { AdAuthenticationEndPoint = Configuration["SaaSApiConfiguration:AdAuthenticationEndPoint"], ClientId = Configuration["SaaSApiConfiguration:ClientId"], ClientSecret = Configuration["SaaSApiConfiguration:ClientSecret"], FulFillmentAPIBaseURL = Configuration["SaaSApiConfiguration:FulFillmentAPIBaseURL"], FulFillmentAPIVersion = Configuration["SaaSApiConfiguration:FulFillmentAPIVersion"], GrantType = Configuration["SaaSApiConfiguration:GrantType"], Resource = Configuration["SaaSApiConfiguration:Resource"], SaaSAppUrl = Configuration["SaaSApiConfiguration:SaaSAppUrl"], SignedOutRedirectUri = Configuration["SaaSApiConfiguration:SignedOutRedirectUri"], TenantId = Configuration["SaaSApiConfiguration:TenantId"], }; var cloudConfig = new CloudStorageConfigs { AzureWebJobsStorage = Configuration["AzureWebJobsStorage"], }; services.AddSingleton <IFulfillmentApiClient>(new FulfillmentApiClient(config, new FulfillmentApiClientLogger())); services.AddSingleton <SaaSApiClientConfiguration>(config); services.AddDbContext <SaasKitContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); InitializeRepositoryServices(services); }
/// <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> /// Configures the services. /// </summary> /// <param name="services">The services.</param> public void ConfigureServices(IServiceCollection services) { var loggerFactory = LoggerFactory.Create(builder => { builder .AddConsole(); }); services.Configure <CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); var config = new SaaSApiClientConfiguration() { AdAuthenticationEndPoint = this.Configuration["SaaSApiConfiguration:AdAuthenticationEndPoint"], ClientId = this.Configuration["SaaSApiConfiguration:ClientId"], ClientSecret = this.Configuration["SaaSApiConfiguration:ClientSecret"], FulFillmentAPIBaseURL = this.Configuration["SaaSApiConfiguration:FulFillmentAPIBaseURL"], FulFillmentAPIVersion = this.Configuration["SaaSApiConfiguration:FulFillmentAPIVersion"], GrantType = this.Configuration["SaaSApiConfiguration:GrantType"], Resource = this.Configuration["SaaSApiConfiguration:Resource"], SaaSAppUrl = this.Configuration["SaaSApiConfiguration:SaaSAppUrl"], SignedOutRedirectUri = this.Configuration["SaaSApiConfiguration:SignedOutRedirectUri"], TenantId = this.Configuration["SaaSApiConfiguration:TenantId"], }; var cloudConfig = new CloudStorageConfigs { AzureWebJobsStorage = this.Configuration["AzureWebJobsStorage"], }; services.AddAuthentication(options => { options.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme; options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme; }) .AddOpenIdConnect(options => { options.Authority = $"{config.AdAuthenticationEndPoint}/common"; options.ClientId = config.ClientId; options.ResponseType = OpenIdConnectResponseType.IdToken; options.CallbackPath = "/Home/Index"; options.SignedOutRedirectUri = config.SignedOutRedirectUri; options.TokenValidationParameters.NameClaimType = "name"; options.TokenValidationParameters.ValidateIssuer = false; }) .AddCookie(); services.AddSingleton <IFulfillmentApiClient>(new FulfillmentApiClient(config, new FulfillmentApiClientLogger())); services.AddSingleton <IMeteredBillingApiClient>(new MeteredBillingApiClient(config, new MeteringApiClientLogger())); services.AddSingleton <SaaSApiClientConfiguration>(config); services.AddSingleton <CloudStorageConfigs>(cloudConfig); services.AddDbContext <SaasKitContext>(options => options.UseSqlServer(this.Configuration.GetConnectionString("DefaultConnection"))); InitializeRepositoryServices(services); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.AddMvc(option => option.EnableEndpointRouting = false); services.AddControllersWithViews(); }