/// <summary> Initializes a new <see cref="MetricCommentFeedback"/> instance. </summary> /// <param name="metricId"> The metric unique id. </param> /// <param name="feedbackFilter"> The <see cref="FeedbackFilter"/> to apply to the feedback. </param> /// <param name="comment"> The comment content for the feedback. </param> /// <exception cref="ArgumentNullException"> <paramref name="feedbackFilter"/> or <paramref name="comment"/> is null. </exception> internal MetricCommentFeedback(string metricId, FeedbackFilter feedbackFilter, CommentFeedbackValue comment) : base(metricId, feedbackFilter.DimensionKey) { Argument.AssertNotNullOrEmpty(comment?.CommentValue, nameof(comment.CommentValue)); ValueInternal = comment; FeedbackKind = MetricFeedbackKind.Comment; }
/// <summary> Initializes a new <see cref="MetricChangePointFeedback"/> instance. </summary> /// <param name="metricId"> The metric unique id. </param> /// <param name="feedbackFilter"> The dimension filter. </param> /// <param name="startsOn"> The start timestamp of feedback timerange. </param> /// <param name="endsOn"> The end timestamp of feedback timerange. When this is equal to <paramref name="startsOn"/> it indicates a single timestamp. </param> /// <param name="value"> The <see cref="Models.ChangePointFeedbackValue"/> for the feedback. </param> internal MetricChangePointFeedback(string metricId, FeedbackFilter feedbackFilter, DateTimeOffset startsOn, DateTimeOffset endsOn, ChangePointFeedbackValue value) : base(metricId, feedbackFilter.DimensionKey) { Argument.AssertNotNull(value, nameof(value)); StartsOn = startsOn; EndsOn = endsOn; ValueInternal = value; FeedbackKind = MetricFeedbackKind.ChangePoint; }
internal static MetricPeriodFeedback DeserializeMetricPeriodFeedback(JsonElement element) { PeriodFeedbackValue value = default; MetricFeedbackKind feedbackType = default; Optional <string> feedbackId = default; Optional <DateTimeOffset> createdTime = default; Optional <string> userPrincipal = default; string metricId = default; FeedbackFilter dimensionFilter = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("value")) { value = PeriodFeedbackValue.DeserializePeriodFeedbackValue(property.Value); continue; } if (property.NameEquals("feedbackType")) { feedbackType = new MetricFeedbackKind(property.Value.GetString()); continue; } if (property.NameEquals("feedbackId")) { feedbackId = property.Value.GetString(); continue; } if (property.NameEquals("createdTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } createdTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("userPrincipal")) { userPrincipal = property.Value.GetString(); continue; } if (property.NameEquals("metricId")) { metricId = property.Value.GetString(); continue; } if (property.NameEquals("dimensionFilter")) { dimensionFilter = FeedbackFilter.DeserializeFeedbackFilter(property.Value); continue; } } return(new MetricPeriodFeedback(feedbackType, feedbackId.Value, Optional.ToNullable(createdTime), userPrincipal.Value, metricId, dimensionFilter, value)); }
/// <summary> Initializes a new instance of MetricPeriodFeedback. </summary> /// <param name="metricId"> metric unique id. </param> /// <param name="feedbackFilter"> . </param> /// <param name="valueInternal"> . </param> /// <exception cref="ArgumentNullException"> <paramref name="metricId"/>, <paramref name="feedbackFilter"/>, or <paramref name="valueInternal"/> is null. </exception> internal MetricPeriodFeedback(string metricId, FeedbackFilter feedbackFilter, PeriodFeedbackValue valueInternal) : base(metricId, feedbackFilter.DimensionKey) { if (valueInternal == null) { throw new ArgumentNullException(nameof(valueInternal)); } ValueInternal = valueInternal; FeedbackKind = MetricFeedbackKind.Period; }
/// <summary> Initializes a new instance of <see cref="MetricAnomalyFeedback"/>. </summary> /// <param name="metricId"> The metric unique id. </param> /// <param name="feedbackFilter"> The dimension filter. </param> /// <param name="startsOn"> The start timestamp of feedback timerange. </param> /// <param name="endsOn"> The end timestamp of feedback timerange. When this is equal to <paramref name="startsOn"/> it indicates a single timestamp. </param> /// <param name="value"> The <see cref="AnomalyFeedbackValue"/> for the feedback. </param> /// <exception cref="ArgumentNullException"> <paramref name="feedbackFilter"/> or <paramref name="value"/> is null. </exception> internal MetricAnomalyFeedback(string metricId, FeedbackFilter feedbackFilter, DateTimeOffset startsOn, DateTimeOffset endsOn, AnomalyFeedbackValue value) : base(metricId, feedbackFilter.DimensionKey) { if (value == null) { throw new ArgumentNullException(nameof(value)); } StartsOn = startsOn; EndsOn = endsOn; ValueInternal = value; FeedbackKind = MetricFeedbackKind.Anomaly; }
internal MetricAnomalyFeedback(MetricFeedbackKind feedbackKind, string id, DateTimeOffset?createdOn, string userPrincipal, string metricId, FeedbackFilter dimensionFilter, DateTimeOffset startsOn, DateTimeOffset endsOn, AnomalyFeedbackValue valueInternal, string detectionConfigurationId, AnomalyDetectionConfiguration detectionConfigurationSnapshot) : base(feedbackKind, id, createdOn, userPrincipal, metricId, dimensionFilter) { StartsOn = startsOn; EndsOn = endsOn; ValueInternal = valueInternal; DetectionConfigurationId = detectionConfigurationId; DetectionConfigurationSnapshot = detectionConfigurationSnapshot; FeedbackKind = feedbackKind; }
internal MetricPeriodFeedback(MetricFeedbackKind feedbackKind, string id, DateTimeOffset?createdOn, string userPrincipal, string metricId, FeedbackFilter dimensionFilter, PeriodFeedbackValue valueInternal) : base(feedbackKind, id, createdOn, userPrincipal, metricId, dimensionFilter) { ValueInternal = valueInternal; FeedbackKind = feedbackKind; }
internal MetricFeedback(MetricFeedbackKind kind, string id, DateTimeOffset?createdOn, string userPrincipal, string metricId, FeedbackFilter dimensionFilter) { FeedbackKind = kind; Id = id; CreatedOn = createdOn; UserPrincipal = userPrincipal; MetricId = metricId; DimensionKey = dimensionFilter.DimensionKey; }
public UnknownMetricFeedback(MetricFeedbackKind kind, string id, DateTimeOffset?createdOn, string userPrincipal, string metricId, FeedbackFilter dimensionFilter) : base(kind, id, createdOn, userPrincipal, metricId, dimensionFilter) { }
internal static MetricFeedback DeserializeMetricFeedback(JsonElement element) { if (element.TryGetProperty("feedbackType", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "Anomaly": return(MetricAnomalyFeedback.DeserializeMetricAnomalyFeedback(element)); case "ChangePoint": return(MetricChangePointFeedback.DeserializeMetricChangePointFeedback(element)); case "Comment": return(MetricCommentFeedback.DeserializeMetricCommentFeedback(element)); case "Period": return(MetricPeriodFeedback.DeserializeMetricPeriodFeedback(element)); } } MetricFeedbackKind feedbackType = default; Optional <string> feedbackId = default; Optional <DateTimeOffset> createdTime = default; Optional <string> userPrincipal = default; string metricId = default; FeedbackFilter dimensionFilter = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("feedbackType")) { feedbackType = new MetricFeedbackKind(property.Value.GetString()); continue; } if (property.NameEquals("feedbackId")) { feedbackId = property.Value.GetString(); continue; } if (property.NameEquals("createdTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } createdTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("userPrincipal")) { userPrincipal = property.Value.GetString(); continue; } if (property.NameEquals("metricId")) { metricId = property.Value.GetString(); continue; } if (property.NameEquals("dimensionFilter")) { dimensionFilter = FeedbackFilter.DeserializeFeedbackFilter(property.Value); continue; } } return(new UnknownMetricFeedback(feedbackType, feedbackId.Value, Optional.ToNullable(createdTime), userPrincipal.Value, metricId, dimensionFilter)); }
internal MetricCommentFeedback(MetricFeedbackKind feedbackKind, string id, DateTimeOffset?createdOn, string userPrincipal, string metricId, FeedbackFilter dimensionFilter, DateTimeOffset?startsOn, DateTimeOffset?endsOn, CommentFeedbackValue valueInternal) : base(feedbackKind, id, createdOn, userPrincipal, metricId, dimensionFilter) { StartsOn = startsOn; EndsOn = endsOn; ValueInternal = valueInternal; FeedbackKind = feedbackKind; }
internal static MetricAnomalyFeedback DeserializeMetricAnomalyFeedback(JsonElement element) { DateTimeOffset startTime = default; DateTimeOffset endTime = default; AnomalyFeedbackValue value = default; Optional <string> anomalyDetectionConfigurationId = default; Optional <AnomalyDetectionConfiguration> anomalyDetectionConfigurationSnapshot = default; MetricFeedbackKind feedbackType = default; Optional <string> feedbackId = default; Optional <DateTimeOffset> createdTime = default; Optional <string> userPrincipal = default; string metricId = default; FeedbackFilter dimensionFilter = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("startTime")) { startTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("endTime")) { endTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("value")) { value = AnomalyFeedbackValue.DeserializeAnomalyFeedbackValue(property.Value); continue; } if (property.NameEquals("anomalyDetectionConfigurationId")) { if (property.Value.ValueKind == JsonValueKind.Null) { anomalyDetectionConfigurationId = null; continue; } anomalyDetectionConfigurationId = property.Value.GetString(); continue; } if (property.NameEquals("anomalyDetectionConfigurationSnapshot")) { if (property.Value.ValueKind == JsonValueKind.Null) { anomalyDetectionConfigurationSnapshot = null; continue; } anomalyDetectionConfigurationSnapshot = AnomalyDetectionConfiguration.DeserializeAnomalyDetectionConfiguration(property.Value); continue; } if (property.NameEquals("feedbackType")) { feedbackType = new MetricFeedbackKind(property.Value.GetString()); continue; } if (property.NameEquals("feedbackId")) { feedbackId = property.Value.GetString(); continue; } if (property.NameEquals("createdTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } createdTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("userPrincipal")) { userPrincipal = property.Value.GetString(); continue; } if (property.NameEquals("metricId")) { metricId = property.Value.GetString(); continue; } if (property.NameEquals("dimensionFilter")) { dimensionFilter = FeedbackFilter.DeserializeFeedbackFilter(property.Value); continue; } } return(new MetricAnomalyFeedback(feedbackType, feedbackId.Value, Optional.ToNullable(createdTime), userPrincipal.Value, metricId, dimensionFilter, startTime, endTime, value, anomalyDetectionConfigurationId.Value, anomalyDetectionConfigurationSnapshot.Value)); }