public IGatewayProviderSettings BuildEntity(GatewayProviderSettingsDto dto)
        {
            var extendedData = string.IsNullOrEmpty(dto.ExtendedData)
                                   ? new ExtendedDataCollection()
                                   : new ExtendedDataCollection(
                dto.EncryptExtendedData ?
                dto.ExtendedData.DecryptWithMachineKey() :
                dto.ExtendedData
                );

            var entity = new GatewayProviderSettings()
            {
                Key                 = dto.Key,
                ProviderTfKey       = dto.ProviderTfKey,
                Name                = dto.Name,
                Description         = dto.Description,
                ExtendedData        = extendedData,
                EncryptExtendedData = dto.EncryptExtendedData,
                UpdateDate          = dto.UpdateDate,
                CreateDate          = dto.CreateDate
            };

            entity.ResetDirtyProperties();

            return(entity);
        }
        /// <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);
        }