Beispiel #1
0
        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);
        }
Beispiel #4
0
        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));
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #12
0
        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;
        }
Beispiel #14
0
        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);
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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);
        }