Replaced the fully qualified reference to `DocumentService.Application.Common.DTOs.PdfValidationResult.IsValid` with the simpler `PdfValidationResult.IsValid`. Added a `TryExtract` method to the `SwissQrCodeResult` record to improve code readability and usability. The method follows the standard `TryXxx` pattern, allowing for an `if/else` branch instead of a direct null-check on the `QrCode` property. It returns `true` if the PDF was valid and a Swiss QR Code was successfully extracted, and `false` otherwise.
44 lines
1.8 KiB
C#
44 lines
1.8 KiB
C#
using DocumentService.Application.Common.DTOs;
|
||
|
||
namespace DocumentService.Client.Models.Results;
|
||
|
||
/// <summary>
|
||
/// Combined result of a PDF validation followed by a Swiss QR Code extraction.
|
||
/// Both operations are always executed; <see cref="QrCode"/> is <c>null</c> when
|
||
/// the document fails validation.
|
||
/// </summary>
|
||
/// <param name="QrCode">
|
||
/// Extracted Swiss QR Code data, or <c>null</c> if the PDF was invalid or did not
|
||
/// contain a recognisable Swiss QR Code.
|
||
/// </param>
|
||
/// <param name="Validation">
|
||
/// PDF validation result. Always populated regardless of whether extraction succeeded.
|
||
/// Use <see cref="PdfValidationResult.IsValid"/>
|
||
/// to determine whether the extraction was attempted.
|
||
/// </param>
|
||
public record SwissQrCodeResult(
|
||
SwissQrCodeExtractionResult? QrCode,
|
||
PdfValidationResult Validation)
|
||
{
|
||
/// <summary>
|
||
/// Optional convenience method for code readability. Follows the standard
|
||
/// <c>TryXxx</c> pattern (e.g. <see cref="int.TryParse(string, out int)"/>,
|
||
/// <see cref="Dictionary{TKey,TValue}.TryGetValue"/>).
|
||
/// Use it when you prefer an <c>if/else</c> branch over a null-check on <see cref="QrCode"/>;
|
||
/// it is not required – both approaches are equivalent.
|
||
/// </summary>
|
||
/// <param name="qrCode">
|
||
/// When this method returns <c>true</c>, contains the extracted QR Code data.
|
||
/// When this method returns <c>false</c>, this value is <c>null</c> and must not be used.
|
||
/// </param>
|
||
/// <returns>
|
||
/// <c>true</c> if the PDF was valid and a Swiss QR Code was successfully extracted;
|
||
/// <c>false</c> otherwise.
|
||
/// </returns>
|
||
public bool TryExtract(out SwissQrCodeExtractionResult qrCode)
|
||
{
|
||
qrCode = QrCode ?? null!;
|
||
return Validation.IsValid && QrCode is not null;
|
||
}
|
||
}
|