public DatabaseFixture() { AppSettings = new AppSettings() { Path = PATH, JwtSecret = SECRET }; AppEvents = new AppEvents(); var datapath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(datapath); hostingEnvironment = new HostingEnvironment() { ContentRootFileProvider = new PhysicalFileProvider(datapath) }; HostServiceCollection = new ServiceCollection() { }; HostServiceCollection.AddSingleton <IHostingEnvironment>(hostingEnvironment); var builder = new OurOrdersBuilder(AppSettings, AppEvents, HostServiceCollection); builder .UseInMemoryDB(); ServiceProvider = CreateServiceProvider(builder); RandomData = ServiceProvider.GetService <RandomData>(); AsyncHelper.RunSync(() => RandomData.Generate()); }
public static OurOrdersBuilder UseDefaultPayments(this OurOrdersBuilder builder) { return(builder .UseVouchers() .UseCCTerminal() .UseBankTransfers() .UseCashPayments()); }
public static OurOrdersBuilder UseVouchers(this OurOrdersBuilder builder) { builder.AppEvents.Configure += (sender, services) => { services.AddTransient <IPaymentProvider, VoucherPaymentProvider>(); }; return(builder); }
public static OurOrdersBuilder UseBankTransfers(this OurOrdersBuilder builder) { builder.AppEvents.Configure += (sender, services) => { services.AddTransient <IPaymentProvider, BankTransferPaymentProvider>(); services.AddTransient <BankTransferPaymentProvider>(); }; builder.HostServices.AddTransient <IPaymentProvider, BankTransferPaymentProvider>(); builder.HostServices.AddTransient <BankTransferPaymentProvider>(); return(builder); }
public static OurOrdersBuilder UsePayPal(this OurOrdersBuilder builder, string clientIdSandbox, string clientIdProduction, string secretSandbox, string secretProduction, string environment) { var paypalConfiguration = new PaypalConfiguration() { Environment = environment, ClientIdSandbox = clientIdSandbox, ClientIdProduction = clientIdProduction, SecretSandbox = secretSandbox, SecretProduction = secretProduction, }; return(builder.UsePayPal(paypalConfiguration)); }
public static OurOrdersBuilder UseCCTerminal(this OurOrdersBuilder builder) { builder.AppEvents.Configure += (sender, services) => { services.AddTransient <IPaymentProvider, CCTerminalPaymentProvider>(); services.AddTransient <CCTerminalPaymentProvider>(); }; builder.HostServices.AddTransient <IPaymentProvider, CCTerminalPaymentProvider>(); builder.HostServices.AddTransient <CCTerminalPaymentProvider>(); return(builder); }
protected IServiceProvider CreateServiceProvider(OurOrdersBuilder builder) { var configuration = new Mock <IConfiguration>(); var startup = new Startup(configuration.Object, builder.AppSettings, hostingEnvironment, builder.appEvents); var services = new ServiceCollection(); services.AddLogging(); services.AddSingleton <IAppSettings>(builder.AppSettings); services.AddSingleton <RandomData>(); startup.ConfigureServices(services); return(services.BuildServiceProvider()); }
public static OurOrdersBuilder UsePayPal(this OurOrdersBuilder builder, PaypalConfiguration paypalConfiguration) { builder.AppEvents.Configure += (sender, services) => { services.AddTransient <IPaymentProvider, PayPalPaymentProvider>(); services.AddTransient <PayPalPaymentProvider>(); services.AddSingleton(paypalConfiguration); }; builder.AppSettings.ExternalControllers.Add(typeof(PayPalPaymentController)); builder.HostServices.AddSingleton(paypalConfiguration); builder.HostServices.AddTransient <IPaymentProvider, PayPalPaymentProvider>(); builder.HostServices.AddTransient <PayPalPaymentProvider>(); return(builder); }
public static OurOrdersBuilder UsePostFinance(this OurOrdersBuilder builder, string PSPID, string COM, string USERID, string PSWD, string SHASIGN, bool sandbox = false) { if (string.IsNullOrEmpty(PSPID)) { throw new ArgumentNullException(nameof(PSPID)); } if (string.IsNullOrEmpty(USERID)) { throw new ArgumentNullException(nameof(USERID)); } if (string.IsNullOrEmpty(PSWD)) { throw new ArgumentNullException(nameof(PSWD)); } if (string.IsNullOrEmpty(SHASIGN)) { throw new ArgumentNullException(nameof(SHASIGN)); } if (string.IsNullOrEmpty(COM)) { throw new ArgumentNullException(nameof(COM)); } var postfinanceConfiguration = new PostFinanceConfiguration(SHASIGN, PSPID, COM, USERID, PSWD, sandbox); builder.AppEvents.Configure += (sender, services) => { services.AddTransient <IPaymentProvider, PostFinancePaymentProvider>(); services.AddTransient <PostFinancePaymentProvider>(); services.AddSingleton(postfinanceConfiguration); }; builder.HostServices.AddSingleton(postfinanceConfiguration); builder.HostServices.AddTransient <IPaymentProvider, PostFinancePaymentProvider>(); builder.HostServices.AddTransient <PostFinancePaymentProvider>(); builder.AppSettings.ExternalControllers.Add(typeof(PostFinancePaymentController)); return(builder); }
public static OurOrdersBuilder UseEntityFramework(this OurOrdersBuilder builder, Action <DbContextOptionsBuilder> config) { var appsettings = builder.AppSettings; //builder.HostServices.AddDbContext<EFDbContext>(config); builder.AppEvents.Configure += (sender, services) => { services.AddScoped <EFDbContext>((s) => new EFDbContext(s, config)); services.AddScoped <IRepository <IOrder> >((s) => s.GetService <EFDbContext>().GetOrders()); services.AddScoped <IRepository <IProduct> >((s) => s.GetService <EFDbContext>().GetProducts()); services.AddScoped <IRepository <IClient> >((s) => s.GetService <EFDbContext>().GetClients()); services.AddScoped <IRepository <IShippingTemplate> >((s) => s.GetService <EFDbContext>().GetShippingTemplate()); services.AddScoped <IRepository <Shop> >((s) => s.GetService <EFDbContext>().GetShops()); services.AddScoped <IRepository <Movement> >((s) => s.GetService <EFDbContext>().GetMovements()); services.AddScoped <IRepository <Voucher> >((s) => s.GetService <EFDbContext>().GetVouchers()); services.AddScoped <IRepository <StockUnit> >((s) => s.GetService <EFDbContext>().GetStockUnits()); services.AddScoped <IRepository <Warehouse> >((s) => s.GetService <EFDbContext>().GetWarehouses()); services.AddScoped <IRepository <Category> >((s) => s.GetService <EFDbContext>().GetCategories()); services.AddScoped <IRepository <DocumentTemplate> >((s) => s.GetService <EFDbContext>().GetDocumentTemplates()); services.AddScoped <IRepository <User> >((s) => s.GetService <EFDbContext>().GetUsers()); services.AddScoped <IUserStore <User>, RepositoryUserStore>(); var identityBuilder = services .AddIdentity <User, Role>() .AddUserManager <UserManager>() .AddRoleManager <RoleManager>() .AddDefaultTokenProviders(); }; builder.appEvents.ApplicationStarting += (sender, services) => { using (var scope = services.CreateScope()) { scope.ServiceProvider.GetService <EFDbContext>().Database.EnsureCreated(); } }; return(builder); }
public static OurOrdersBuilder UseMailChimp(this OurOrdersBuilder builder, string apiKey, string listId) { var config = new MailChimpConfiguration { ApiKey = apiKey, ListId = listId }; builder.AppEvents.Configure += (sender, services) => { services.AddTransient <INewsletterProvider, MailChimpProvider>(); services.AddSingleton <MailChimpConfiguration>(config); }; builder.HostServices.AddSingleton <MailChimpConfiguration>(config); builder.AppSettings.ExternalControllers.Add(typeof(MailChimpProvider)); return(builder); }
public TestServiceFixture() { AppSettings = new AppSettings() { Path = PATH, JwtSecret = SECRET }; AppEvents = new AppEvents(); var datapath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(datapath); hostingEnvironment = new HostingEnvironment() { ContentRootFileProvider = new PhysicalFileProvider(datapath) }; HostServiceCollection = new ServiceCollection() { }; HostServiceCollection.AddSingleton <IHostingEnvironment>(hostingEnvironment); var builder = new OurOrdersBuilder(AppSettings, AppEvents, HostServiceCollection); builder .UseInMemoryDB(); ServiceProvider = CreateServiceProvider(builder); RandomData = ServiceProvider.GetService <RandomData>(); AsyncHelper.RunSync(() => RandomData.Generate()); var testServiceProvider = new InMemoryRepository <TestServiceModel, TestServiceModel>(this.ServiceProvider); var type = typeof(TestServiceModel); TestService = new TestService(testServiceProvider, this.AppEvents); name = "Name with special cha$@c.\\|/ract<b .>/@#$%^&*()_"; count = 10; names = Enumerable.Range(0, count).Select(i => $"{name} {i}"); }
public static OurOrdersBuilder UseCampaignMonitor(this OurOrdersBuilder builder, string apiKey, string listId) { var config = new CampaignMonitorConfiguration { ApiKey = apiKey, ListId = listId }; builder.AppEvents.Configure += (sender, services) => { services.AddTransient<INewsletterProvider, CampaignMonitorProvider>(); services.AddSingleton<CampaignMonitorConfiguration>(config); }; builder.HostServices.AddSingleton<CampaignMonitorConfiguration>(config); builder.AppSettings.ExternalControllers.Add(typeof(CampaignMonitorProvider)); return builder; }
public static OurOrdersBuilder UseMongoDB(this OurOrdersBuilder builder, IMongoDatabase database) { builder.AppEvents.Configure += (sender, services) => { services.AddSingleton <IRepository <IOrder> >((s) => CreateProvider <Order, IOrder>(database)); services.AddSingleton <IRepository <IProduct> >((s) => CreateProvider <Product, IProduct>(database)); services.AddSingleton <IRepository <IClient> >((s) => CreateProvider <Client, IClient>(database)); services.AddSingleton <IRepository <IShippingTemplate> >((s) => CreateProvider <ShippingTemplate, IShippingTemplate>(database)); services.AddSingleton <IRepository <Shop> >((s) => CreateRepository <Shop>(database)); services.AddSingleton <IRepository <Movement> >((s) => CreateRepository <Movement>(database)); services.AddSingleton <IRepository <Voucher> >((s) => CreateRepository <Voucher>(database)); services.AddSingleton <IRepository <StockUnit> >((s) => CreateRepository <StockUnit>(database)); services.AddSingleton <IRepository <Warehouse> >((s) => CreateRepository <Warehouse>(database)); services.AddSingleton <IRepository <Category> >((s) => CreateRepository <Category>(database)); services.AddSingleton <IRepository <DocumentTemplate> >((s) => CreateRepository <DocumentTemplate>(database)); // be sure the user is registered in the DI before used in the identity builder var userRepository = CreateRepository <User>(database); services.AddSingleton <IRepository <User> >((s) => userRepository); services.AddSingleton <IUserStore <User>, RepositoryUserStore>(); var identityBuilder = services .AddIdentity <User, Role>() .AddUserManager <UserManager>() .AddRoleManager <RoleManager>() .AddDefaultTokenProviders(); }; var pack = new ConventionPack(); pack.Add(new IgnoreExtraElementsConvention(true)); ConventionRegistry.Register( "Our Orders", pack, t => t.FullName.StartsWith("our.orders")); return(builder); }
public static OurOrdersBuilder UseStripe(this OurOrdersBuilder builder, string secretKey, string publishableKey) { var stripeConfiguration = new StripeConfiguration() { SecretKey = secretKey, PublishableKey = publishableKey }; builder.AppEvents.Configure += (sender, services) => { services.AddTransient <IPaymentProvider, StripePaymentProvider>(); }; builder.AppEvents.Configure += (sender, services) => { services.AddSingleton(stripeConfiguration); }; builder.AppSettings.ExternalControllers.Add(typeof(StripePaymentProvider)); return(builder); }
public static OurOrdersBuilder UseInMemoryDB(this OurOrdersBuilder builder) { var appsettings = builder.AppSettings; builder.AppEvents.Configure += (sender, services) => { services.AddSingleton <IRepository <IOrder> >((s) => new InMemoryRepository <Order, IOrder>(s)); services.AddSingleton <IRepository <IProduct> >((s) => new InMemoryRepository <Product, IProduct>(s)); services.AddSingleton <IRepository <IClient> >((s) => new InMemoryRepository <Client, IClient>(s)); services.AddSingleton <IRepository <IShippingTemplate> >((s) => new InMemoryRepository <ShippingTemplate, IShippingTemplate>(s)); // services.AddSingleton<IRepository<IStatisticEvent>>((s) => new InMemoryProvider<StatisticEvent, IStatisticEvent>(s)); services.AddSingleton <IRepository <Shop> >((s) => new InMemoryRepository <Shop, Shop>(s)); services.AddSingleton <IRepository <Movement> >((s) => new InMemoryRepository <Movement, Movement>(s)); services.AddSingleton <IRepository <Voucher> >((s) => new InMemoryRepository <Voucher, Voucher>(s)); services.AddSingleton <IRepository <StockUnit> >((s) => new InMemoryRepository <StockUnit, StockUnit>(s)); services.AddSingleton <IRepository <Warehouse> >((s) => new InMemoryRepository <Warehouse, Warehouse>(s)); services.AddSingleton <IRepository <Category> >((s) => new InMemoryRepository <Category, Category>(s)); services.AddSingleton <IRepository <DocumentTemplate> >((s) => new InMemoryRepository <DocumentTemplate, DocumentTemplate>(s)); services.AddSingleton <IRepository <User> >((s) => new InMemoryRepository <User, User>(s)); services.AddSingleton <IUserStore <User>, RepositoryUserStore>(); var identityBuilder = services .AddIdentity <User, Role>() .AddUserManager <UserManager>() .AddRoleManager <RoleManager>() .AddDefaultTokenProviders(); }; return(builder); }