/// <summary>
        /// Configures the <see cref="IPaymentTokenProvider"/> required by Parbad to create
        /// a unique token which will be used to load the payment data when the client comes
        /// back from the gateway.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="tokenBuilder">A builder to configure the <see cref="IPaymentTokenProvider"/></param>
        public static IParbadBuilder ConfigurePaymentToken(this IParbadBuilder builder,
                                                           Action <IPaymentTokenBuilder> tokenBuilder)
        {
            tokenBuilder(new PaymentTokenBuilder(builder.Services));

            return(builder);
        }
Esempio n. 2
0
        private static void RegisterMessagesOptions(IParbadBuilder builder)
        {
            builder.Services.AddTransient <IOptions <MessagesOptions> >(provider =>
            {
                var messages = provider.GetRequiredService <IOptions <ParbadOptions> >().Value.Messages;

                return(new OptionsWrapper <MessagesOptions>(messages));
            });
        }
        public static IParbadBuilder ConfigureAutoTrackingNumber(this IParbadBuilder builder,
                                                                 IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.Configure <AutoTrackingNumberOptions>(configuration);

            return(builder);
        }
        public static IParbadBuilder ConfigureAutoRandomTrackingNumber(
            this IParbadBuilder builder,
            Action <AutoRandomTrackingNumberOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.Configure(configureOptions);

            return(builder);
        }
Esempio n. 5
0
        /// <summary>
        /// Configures the storage which required by Parbad for saving and loading data.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="configureStorage"></param>
        public static IParbadBuilder ConfigureStorage(this IParbadBuilder builder, Action <IStorageBuilder> configureStorage)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configureStorage == null)
            {
                throw new ArgumentNullException(nameof(configureStorage));
            }

            configureStorage(new StorageBuilder(builder.Services).UseDefaultStorageManager());

            return(builder);
        }
        /// <summary>
        /// Configures the gateways.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="configure"></param>
        /// <returns></returns>
        public static IParbadBuilder ConfigureGateways(this IParbadBuilder builder, Action <IGatewayBuilder> configure)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            configure(new GatewayBuilder(builder.Services));

            return(builder);
        }
        public static IParbadBuilder ConfigureMessages(this IParbadBuilder builder, IConfiguration configuration)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            builder.Services.Configure <MessagesOptions>(configuration);

            return(builder);
        }
        public static IParbadBuilder ConfigureMessages(this IParbadBuilder builder, Action <MessagesOptions> configureOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configureOptions == null)
            {
                throw new ArgumentNullException(nameof(configureOptions));
            }

            builder.ConfigureOptions(options => configureOptions(options.Messages));

            return(builder);
        }
        /// <summary>
        /// Configures the storage which required by Parbad for saving and loading data.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="configureStorage"></param>
        public static IParbadBuilder ConfigureStorage(this IParbadBuilder builder, Action <IStorageBuilder> configureStorage)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configureStorage == null)
            {
                throw new ArgumentNullException(nameof(configureStorage));
            }

            var storageBuilder = new StorageBuilder(builder.Services);

            configureStorage(storageBuilder);

            return(builder);
        }
Esempio n. 10
0
        /// <summary>
        /// Configures the Parbad options.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="setupOptions"></param>
        public static IParbadBuilder ConfigureOptions(this IParbadBuilder builder, Action <ParbadOptions> setupOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (setupOptions == null)
            {
                throw new ArgumentNullException(nameof(setupOptions));
            }

            builder.Services.Configure(setupOptions);

            RegisterMessagesOptions(builder);

            return(builder);
        }
Esempio n. 11
0
        /// <summary>
        /// Configures the options required by Parbad to an <see cref="IServiceCollection"/>.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="optionsBuilder">A builder for configuring the options.</param>
        /// <returns></returns>
        public static IParbadBuilder ConfigureOptions(this IParbadBuilder builder,
                                                      Action <IParbadOptionsBuilder> optionsBuilder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (optionsBuilder == null)
            {
                throw new ArgumentNullException(nameof(optionsBuilder));
            }

            builder.Services.AddOptions();

            optionsBuilder(new ParbadOptionsBuilder(builder.Services));

            return(builder);
        }
        /// <summary>
        /// Configures the storage required by Parbad to save and load the data.
        /// Note: It uses Microsoft.EntityFrameworkCore as storage, which means you can save your data
        /// in different database providers such as SQL Server, MySql, Sqlite, PostgreSQL, Oracle, InMemory, etc.
        /// <para>For more information see: https://docs.microsoft.com/en-us/ef/core/providers/.</para>
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="storageBuilder"></param>
        public static IParbadBuilder ConfigureStorage(this IParbadBuilder builder, Action <DbContextOptionsBuilder> storageBuilder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (storageBuilder == null)
            {
                throw new ArgumentNullException(nameof(storageBuilder));
            }

            builder.Services.AddDbContext <ParbadDataContext>(storageBuilder);

            var serviceProvider = builder.Services.BuildServiceProvider();

            var databaseCreator = serviceProvider.GetRequiredService <IParbadDatabaseCreator>();

            databaseCreator.Create();

            return(builder);
        }
        /// <summary>
        /// Configures the <see cref="HttpContext"/> required by Parbad.
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="httpContextBuilder">A builder for configuring the HttpContext.</param>
        public static IParbadBuilder ConfigureHttpContext(this IParbadBuilder builder, Action <IHttpContextBuilder> httpContextBuilder)
        {
            httpContextBuilder(new HttpContextBuilder(builder.Services));

            return(builder);
        }