/// <summary>
        ///  Checks whether the server is applicable for threat detection
        /// </summary>
        private bool IsRightServerVersionForThreatDetection(string resourceGroupName, string serverName)
        {
            AzureSqlServerCommunicator dbCommunicator = new AzureSqlServerCommunicator(Context);

            Management.Sql.Models.Server server = dbCommunicator.Get(resourceGroupName, serverName);
            return(server.Version == "12.0");
        }
        /// <summary>
        ///  Checks whether the server is applicable for dynamic data masking
        /// </summary>
        private bool IsRightServerVersionForDataMasking(string resourceGroupName, string serverName, string clientId)
        {
            AzureSqlServerCommunicator dbCommunicator = new AzureSqlServerCommunicator(Context);

            Management.Sql.Models.Server server = dbCommunicator.Get(resourceGroupName, serverName, clientId);
            return(server.Version == "12.0");
        }
        /// <summary>
        /// Convert a Management.Sql.LegacySdk.Models.Server to AzureSqlDatabaseServerModel
        /// </summary>
        /// <param name="resourceGroupName">The resource group the server is in</param>
        /// <param name="resp">The management client server response to convert</param>
        /// <returns>The converted server model</returns>
        private static AzureSqlServerModel CreateServerModelFromResponse(Management.Sql.Models.Server resp)
        {
            AzureSqlServerModel server = new AzureSqlServerModel();

            // Extract the resource group name from the ID.
            // ID is in the form:
            // /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgName/providers/Microsoft.Sql/servers/serverName
            string[] segments = resp.Id.Split('/');
            server.ResourceGroupName = segments[4];

            server.ServerName            = resp.Name;
            server.ServerVersion         = resp.Version;
            server.SqlAdministratorLogin = resp.AdministratorLogin;
            server.Location = resp.Location;
            server.Tags     = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(resp.Tags), false);
            server.Identity = resp.Identity;
            server.FullyQualifiedDomainName = resp.FullyQualifiedDomainName;
            server.ResourceId                    = resp.Id;
            server.MinimalTlsVersion             = resp.MinimalTlsVersion;
            server.PublicNetworkAccess           = resp.PublicNetworkAccess;
            server.RestrictOutboundNetworkAccess = resp.RestrictOutboundNetworkAccess;
            server.Administrators                = resp.Administrators;

            if (server.Administrators != null && server.Administrators.AdministratorType == null)
            {
                server.Administrators.AdministratorType = "ActiveDirectory";
            }
            server.PrimaryUserAssignedIdentityId = resp.PrimaryUserAssignedIdentityId;
            server.KeyId             = resp.KeyId;
            server.FederatedClientId = resp.FederatedClientId;

            return(server);
        }
        /// <summary>
        /// Convert a Management.Sql.LegacySdk.Models.Server to AzureSqlDatabaseServerModel
        /// </summary>
        /// <param name="resourceGroupName">The resource group the server is in</param>
        /// <param name="resp">The management client server response to convert</param>
        /// <returns>The converted server model</returns>
        private static AzureSqlServerModel CreateServerModelFromResponse(Management.Sql.Models.Server resp)
        {
            AzureSqlServerModel server = new AzureSqlServerModel();

            // Extract the resource group name from the ID.
            // ID is in the form:
            // /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rgName/providers/Microsoft.Sql/servers/serverName
            string[] segments = resp.Id.Split('/');
            server.ResourceGroupName = segments[4];

            server.ServerName            = resp.Name;
            server.ServerVersion         = resp.Version;
            server.SqlAdministratorLogin = resp.AdministratorLogin;
            server.Location = resp.Location;
            server.Tags     = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(resp.Tags), false);
            server.Identity = resp.Identity;

            return(server);
        }
        /// <summary>
        /// Convert a Management.Sql.LegacySdk.Models.Server to AzureSqlDatabaseServerModel
        /// </summary>
        /// <param name="resourceGroupName">The resource group the server is in</param>
        /// <param name="resp">The management client server response to convert</param>
        /// <returns>The converted server model</returns>
        private static AzureSqlServerModel CreateServerModelFromResponse(string resourceGroupName, Management.Sql.Models.Server resp)
        {
            AzureSqlServerModel server = new AzureSqlServerModel();

            server.ResourceGroupName     = resourceGroupName;
            server.ServerName            = resp.Name;
            server.ServerVersion         = resp.Version;
            server.SqlAdministratorLogin = resp.AdministratorLogin;
            server.Location = resp.Location;
            server.Tags     = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(resp.Tags), false);

            return(server);
        }
        /// <summary>
        /// Convert a Management.Sql.Models.Server to AzureSqlDatabaseServerModel
        /// </summary>
        /// <param name="resourceGroupName">The resource group the server is in</param>
        /// <param name="resp">The management client server response to convert</param>
        /// <returns>The converted server model</returns>
        private static AzureSqlServerModel CreateServerModelFromResponse(string resourceGroupName, Management.Sql.Models.Server resp)
        {
            AzureSqlServerModel server = new AzureSqlServerModel();

            server.ResourceGroupName     = resourceGroupName;
            server.ServerName            = resp.Name;
            server.ServerVersion         = resp.Properties.Version;
            server.SqlAdministratorLogin = resp.Properties.AdministratorLogin;
            server.Location = resp.Location;

            return(server);
        }
 /// <summary>
 /// Creates or updates a Azure Sql Database SErver
 /// </summary>
 public Management.Sql.Models.Server CreateOrUpdate(string resourceGroupName, string serverName, string clientRequestId, Management.Sql.Models.Server parameters)
 {
     return(GetCurrentSqlClient(clientRequestId).Servers.CreateOrUpdate(resourceGroupName, serverName, parameters));
 }