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;
}
}
}