using adas_core.Domain.Enums;

namespace adas_core.Domain.Models;

/// <summary>
/// Represents the result of an observation retention operation, encapsulating the outcome and relevant details of the retention process.
/// </summary>
/// <!-- aidoc:v1 sig=1ccfc4b -->
public class ObservatitonRetentionResult
{
    /// <summary>
    /// Initializes a new instance of the <see cref="ObservatitonRetentionResult"/> class, which represents the outcome of an observation retention operation.
    /// </summary>
    /// <!-- aidoc:v1 sig=4f5f5d1 body=4448e1d -->
    public ObservatitonRetentionResult()
    {
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="ObservatitonRetentionResult"/> class, which represents the outcome of a retention evaluation, by storing the supplied <paramref name="retentionPolicy"/> and its associated <paramref name="retentionPolicyValue"/>.
    /// </summary>
    /// <param name="retentionPolicy">The <see cref="RetentionPolicy"/> that was evaluated to produce the result.</param>
    /// <param name="retentionPolicyValue">The optional numeric value paired with the <paramref name="retentionPolicy"/>, or <see langword="null"/> when no value is required.</param>
    /// <!-- aidoc:v1 sig=d280e78 body=d032d9b -->
    public ObservatitonRetentionResult(RetentionPolicy retentionPolicy, int? retentionPolicyValue)
    {
        RetentionPolicy = retentionPolicy;
        RetentionPolicyValue = retentionPolicyValue;
    }

    public RetentionPolicy RetentionPolicy { get; set; }
    public int? RetentionPolicyValue { get; set; }
}