public static LoggingProperties ConvertLoggingProperties(TableAnalyticsLoggingSettings loggingSettings)
        {
            LoggingOperations loggingOperations = LoggingOperations.None;

            if (loggingSettings.Delete)
            {
                loggingOperations |= LoggingOperations.Delete;
            }

            if (loggingSettings.Read)
            {
                loggingOperations |= LoggingOperations.Read;
            }

            if (loggingSettings.Write)
            {
                loggingOperations |= LoggingOperations.Write;
            }

            return(new LoggingProperties()
            {
                Version = loggingSettings.Version,
                RetentionDays = loggingSettings.RetentionPolicy?.Days,
                LoggingOperations = loggingOperations,
            });
        }
        /// <summary>
        /// Update the Table service logging properties according to the input
        /// </summary>
        /// <param name="logging">Service properties</param>
        internal void UpdateTableServiceProperties(TableAnalyticsLoggingSettings logging)
        {
            if (Version != null)
            {
                logging.Version = Version.ToString();
            }

            if (RetentionDays != null)
            {
                if (RetentionDays == -1)
                {
                    //Disable logging retention policy
                    logging.RetentionPolicy.Enabled = false;
                    logging.RetentionPolicy.Days    = null;
                }
                else if (RetentionDays < 1 || RetentionDays > 365)
                {
                    throw new ArgumentException(string.Format(Resources.InvalidRetentionDay, RetentionDays));
                }
                else
                {
                    logging.RetentionPolicy.Enabled = true;
                    logging.RetentionPolicy.Days    = RetentionDays;
                }
            }

            if (LoggingOperations != null && LoggingOperations.Length > 0)
            {
                logging.Delete = false;
                logging.Read   = false;
                logging.Write  = false;

                for (int i = 0; i < LoggingOperations.Length; i++)
                {
                    if (LoggingOperations[i] == StorageClient.LoggingOperations.None ||
                        LoggingOperations[i] == StorageClient.LoggingOperations.All)
                    {
                        if (LoggingOperations.Length > 1)
                        {
                            throw new ArgumentException(Resources.NoneAndAllOperationShouldBeAlone);
                        }
                    }

                    switch (LoggingOperations[i])
                    {
                    case StorageClient.LoggingOperations.Delete:
                        logging.Delete = true;
                        break;

                    case StorageClient.LoggingOperations.Read:
                        logging.Read = true;
                        break;

                    case StorageClient.LoggingOperations.Write:
                        logging.Write = true;
                        break;

                    case StorageClient.LoggingOperations.All:
                        logging.Delete = true;
                        logging.Read   = true;
                        logging.Write  = true;
                        break;

                    case StorageClient.LoggingOperations.None:
                        break;

                    default:
                        throw new ArgumentException($"Unsupported Logging Operation {LoggingOperations[i]}");
                    }
                }
            }
        }