namespace JustTrack { /// /// Represents the result of a verification operation for the justtrack SDK configuration. /// internal enum VerificationResult { VALID, INVALID, PENDING, UNKNOWN, MISSING, } /// /// The status of the verification result. /// internal class VerificationResultData { /// /// Gets the status of the verification result. /// public VerificationResult Status { get; private set; } /// /// Gets error message in case the verification result is INVALID. /// public string? ErrorMessage { get; private set; } private VerificationResultData(VerificationResult status, string? errorMessage = null) { Status = status; ErrorMessage = errorMessage; } /// /// Creates a verification result indicating valid status. /// /// A new VerificationResultData with valid status. public static VerificationResultData Valid() => new VerificationResultData(VerificationResult.VALID); /// /// Creates a verification result indicating invalid status. /// /// Optional error message describing why validation failed. /// A new VerificationResultData with invalid status. public static VerificationResultData Invalid(string? errorMessage = null) => new VerificationResultData(VerificationResult.INVALID, errorMessage); /// /// Creates a verification result indicating pending status. /// /// A new VerificationResultData with pending status. public static VerificationResultData Pending() => new VerificationResultData(VerificationResult.PENDING); /// /// Creates a verification result indicating unknown status. /// /// A new VerificationResultData with unknown status. public static VerificationResultData Unknown() => new VerificationResultData(VerificationResult.UNKNOWN); /// /// Creates a verification result indicating missing status. /// /// A new VerificationResultData with missing status. public static VerificationResultData Missing() => new VerificationResultData(VerificationResult.MISSING); /// /// Implicitly converts a VerificationResult to VerificationResultData. /// /// The verification result status to convert. public static implicit operator VerificationResultData(VerificationResult status) { switch (status) { case VerificationResult.VALID: return Valid(); case VerificationResult.INVALID: return Invalid(); case VerificationResult.PENDING: return Pending(); case VerificationResult.UNKNOWN: return Unknown(); case VerificationResult.MISSING: return Missing(); default: return Unknown(); } } /// /// Implicitly converts VerificationResultData to a VerificationResult. /// /// The verification result data to convert. public static implicit operator VerificationResult(VerificationResultData data) { return data?.Status ?? VerificationResult.UNKNOWN; } } }