private void ModelizeDatabaseAuditPolicy(Management.Sql.Models.ExtendedDatabaseBlobAuditingPolicy policy, DatabaseBlobAuditingSettingsModel dbPolicyModel)
 {
     dbPolicyModel.AuditState = ModelizeAuditState(policy.State.ToString());
     ModelizeStorageInfo(dbPolicyModel, policy.StorageEndpoint, policy.IsStorageSecondaryKeyInUse, policy.StorageAccountSubscriptionId);
     ModelizeAuditActionGroups(dbPolicyModel, policy.AuditActionsAndGroups);
     ModelizeAuditActions(dbPolicyModel, policy.AuditActionsAndGroups);
     ModelizeRetentionInfo(dbPolicyModel, policy.RetentionDays);
     dbPolicyModel.PredicateExpression = policy.PredicateExpression;
 }
        /// <summary>
        /// Transforms the given model to its endpoints acceptable structure and sends it to the endpoint
        /// </summary>
        public void SetDatabaseBlobAuditingPolicyV2(DatabaseBlobAuditingSettingsModel model, string storageEndpointSuffix)
        {
            if (!IsDatabaseInServiceTierForPolicy(model.ResourceGroupName, model.ServerName, model.DatabaseName))
            {
                throw new Exception(Properties.Resources.DatabaseNotInServiceTierForAuditingPolicy);
            }

            if (string.IsNullOrEmpty(model.PredicateExpression))
            {
                var policy = new Management.Sql.Models.DatabaseBlobAuditingPolicy();
                PolicizeBlobAuditingModel(model, storageEndpointSuffix, policy);
                Communicator.SetDatabaseAuditingPolicy(model.ResourceGroupName, model.ServerName, model.DatabaseName, policy);
            }
            else
            {
                var policy = new Management.Sql.Models.ExtendedDatabaseBlobAuditingPolicy
                {
                    PredicateExpression = model.PredicateExpression
                };
                PolicizeBlobAuditingModel(model, storageEndpointSuffix, policy);
                Communicator.SetExtendedDatabaseAuditingPolicy(model.ResourceGroupName, model.ServerName, model.DatabaseName, policy);
            }
        }