예제 #1
0
        /// <summary>
        /// Gets a collection of <see cref="IGatewayProviderSettings"/> by its type (Shipping, Taxation, Payment)
        /// </summary>
        /// <param name="gatewayProviderType"></param>
        /// <returns></returns>
        public IEnumerable <IGatewayProviderSettings> GetGatewayProvidersByType(GatewayProviderType gatewayProviderType)
        {
            using (var repository = RepositoryFactory.CreateGatewayProviderRepository(UowProvider.GetUnitOfWork()))
            {
                var query =
                    Query <IGatewayProviderSettings> .Builder.Where(
                        x =>
                        x.ProviderTfKey ==
                        EnumTypeFieldConverter.GatewayProvider.GetTypeField(gatewayProviderType).TypeKey);

                return(repository.GetByQuery(query));
            }
        }
        /// <summary>
        /// Builds an entity based on a resolved type
        /// </summary>
        /// <param name="t">The resolved Type t</param>
        /// <param name="gatewayProviderType">The gateway provider type</param>
        /// <returns></returns>
        internal IGatewayProviderSettings BuildEntity(Type t, GatewayProviderType gatewayProviderType)
        {
            Mandate.ParameterNotNull(t, "Type t cannot be null");
            Mandate.ParameterCondition(t.GetCustomAttribute <GatewayProviderActivationAttribute>(false) != null, "Type t must have a GatewayProviderActivationAttribute");

            var att = t.GetCustomAttribute <GatewayProviderActivationAttribute>(false);

            var provider = new GatewayProviderSettings()
            {
                Key                 = att.Key,
                ProviderTfKey       = EnumTypeFieldConverter.GatewayProvider.GetTypeField(gatewayProviderType).TypeKey,
                Name                = att.Name,
                Description         = att.Description,
                ExtendedData        = new ExtendedDataCollection(),
                EncryptExtendedData = false,
                UpdateDate          = DateTime.Now,
                CreateDate          = DateTime.Now
            };

            provider.ResetHasIdentity();

            return(provider);
        }
        /// <summary>
        /// Gets a collection of <see cref="IGatewayProvider"/> by its type (Shipping, Taxation, Payment)
        /// </summary>
        /// <param name="gatewayProviderType"></param>
        /// <returns></returns>
        public IEnumerable<IGatewayProvider> GetGatewayProvidersByType(GatewayProviderType gatewayProviderType)
        {
            using (var repository = _repositoryFactory.CreateGatewayProviderRepository(_uowProvider.GetUnitOfWork()))
            {
                var query =
                    Query<IGatewayProvider>.Builder.Where(
                        x =>
                            x.ProviderTfKey ==
                            EnumTypeFieldConverter.GatewayProvider.GetTypeField(gatewayProviderType).TypeKey);

                return repository.GetByQuery(query);
            }
        }
        // TODO refactor this
        private void ToggleProviderActivation(IGatewayProvider gatewayProvider, GatewayProviderType gatewayProviderType)
        {
            switch (gatewayProviderType)
            {
                case GatewayProviderType.Payment:
                    if (gatewayProvider.Activated)
                        _gatewayContext.Payment.DeactivateProvider(gatewayProvider);
                    else
                        _gatewayContext.Payment.ActivateProvider(gatewayProvider);
                    break;

                case GatewayProviderType.Shipping:
                    if (gatewayProvider.Activated)
                        _gatewayContext.Shipping.DeactivateProvider(gatewayProvider);
                    else
                        _gatewayContext.Shipping.ActivateProvider(gatewayProvider);
                    break;

                case GatewayProviderType.Taxation:
                    if (gatewayProvider.Activated)
                        _gatewayContext.Taxation.DeactivateProvider(gatewayProvider);
                    else
                        _gatewayContext.Taxation.ActivateProvider(gatewayProvider);
                    break;
            }
        }
        /// <summary>
        /// Helper method to get get the <see cref="IGatewayProvider"/> from the appropriate resolver
        /// </summary>
        /// <param name="gatewayProvider">The <see cref="GatewayProviderDisplay"/></param>
        /// <param name="gatewayProviderType"></param>
        /// <returns>A <see cref="IGatewayProvider"/> or null</returns>
        // TODO refactor this
        private IGatewayProvider GetGatewayProviderFromResolver(GatewayProviderDisplay gatewayProvider, GatewayProviderType gatewayProviderType)
        {
            // get the type of the provider

            IGatewayProvider provider = null;

            switch (gatewayProviderType)
            {
                case GatewayProviderType.Payment:
                    provider = _gatewayContext.Payment.GetAllProviders().FirstOrDefault(x => x.Key == gatewayProvider.Key);
                    break;

                case GatewayProviderType.Shipping:
                    provider = _gatewayContext.Shipping.GetAllProviders().FirstOrDefault(x => x.Key == gatewayProvider.Key);
                    break;

                case GatewayProviderType.Taxation:
                    provider = _gatewayContext.Taxation.GetAllProviders().FirstOrDefault(x => x.Key == gatewayProvider.Key);
                    break;
            }

            return provider;
        }
        /// <summary>
        /// Helper method to get get the <see cref="IGatewayProviderSettings"/> from the appropriate resolver
        /// </summary>
        /// <param name="gatewayProvider">The <see cref="GatewayProviderDisplay"/></param>
        /// <param name="gatewayProviderType">The gateway provider type</param>
        /// <returns>A <see cref="IGatewayProviderSettings"/> or null</returns>
        private IGatewayProviderSettings GetGatewayProviderFromResolver(GatewayProviderDisplay gatewayProvider, GatewayProviderType gatewayProviderType)
        {
            GatewayProviderBase provider = null;

            switch (gatewayProviderType)
            {
            case GatewayProviderType.Notification:
                provider = _gatewayContext.Notification.GetProviderByKey(gatewayProvider.Key, false);
                break;

            case GatewayProviderType.Payment:
                provider = _gatewayContext.Payment.GetProviderByKey(gatewayProvider.Key, false);
                break;

            case GatewayProviderType.Shipping:
                provider = _gatewayContext.Shipping.GetProviderByKey(gatewayProvider.Key, false);
                break;

            case GatewayProviderType.Taxation:
                provider = _gatewayContext.Taxation.GetProviderByKey(gatewayProvider.Key, false);
                break;
            }

            return(provider != null ? provider.GatewayProviderSettings : null);
        }
        // TODO refactor this
        /// <summary>
        /// The toggle provider activation.
        /// </summary>
        /// <param name="gatewayProviderSettings">
        /// The gateway provider settings.
        /// </param>
        /// <param name="gatewayProviderType">
        /// The gateway provider type.
        /// </param>
        private void ToggleProviderActivation(IGatewayProviderSettings gatewayProviderSettings, GatewayProviderType gatewayProviderType)
        {
            switch (gatewayProviderType)
            {
            case GatewayProviderType.Notification:
                if (gatewayProviderSettings.Activated)
                {
                    _gatewayContext.Notification.DeactivateProvider(gatewayProviderSettings);
                }
                else
                {
                    _gatewayContext.Notification.ActivateProvider(gatewayProviderSettings);
                }
                break;

            case GatewayProviderType.Payment:
                if (gatewayProviderSettings.Activated)
                {
                    _gatewayContext.Payment.DeactivateProvider(gatewayProviderSettings);
                }
                else
                {
                    _gatewayContext.Payment.ActivateProvider(gatewayProviderSettings);
                }
                break;

            case GatewayProviderType.Shipping:
                if (gatewayProviderSettings.Activated)
                {
                    _gatewayContext.Shipping.DeactivateProvider(gatewayProviderSettings);
                }
                else
                {
                    _gatewayContext.Shipping.ActivateProvider(gatewayProviderSettings);
                }
                break;

            case GatewayProviderType.Taxation:
                if (gatewayProviderSettings.Activated)
                {
                    _gatewayContext.Taxation.DeactivateProvider(gatewayProviderSettings);
                }
                else
                {
                    _gatewayContext.Taxation.ActivateProvider(gatewayProviderSettings);
                }
                break;
            }
        }
        /// <summary>
        /// Helper method to get get the <see cref="IGatewayProviderSettings"/> from the appropriate resolver
        /// </summary>
        /// <param name="gatewayProvider">The <see cref="GatewayProviderDisplay"/></param>
        /// <param name="gatewayProviderType"></param>
        /// <returns>A <see cref="IGatewayProviderSettings"/> or null</returns>
        private IGatewayProviderSettings GetGatewayProviderFromResolver(GatewayProviderDisplay gatewayProvider, GatewayProviderType gatewayProviderType)
        {
            // get the type of the provider

            GatewayProviderBase provider = null;

            switch (gatewayProviderType)
            {
                case GatewayProviderType.Payment:
                    provider = _gatewayContext.Payment.GetProviderByKey(gatewayProvider.Key, false);
                    break;

                case GatewayProviderType.Shipping:
                    provider = _gatewayContext.Shipping.GetProviderByKey(gatewayProvider.Key, false);
                    break;

                case GatewayProviderType.Taxation:
                    provider = _gatewayContext.Taxation.GetProviderByKey(gatewayProvider.Key, false);
                    break;
            }

            return provider != null ? provider.GatewayProviderSettings : null;
        }