From 60f01565da6e2a2300a77d55df8cfe72c5e54de2 Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 28 May 2026 16:57:27 +0200 Subject: [PATCH] Add user input fields and enhance signature details Added input fields for "Full Name," "Position," and "Place" in `ReportViewer.razor` to collect additional user details. Introduced validation for required fields ("Full Name" and "Place") in `ApplySignatureAsync`. Updated `CreateSignedReportInstance` and `AddSignature` to include these details in the signature label, which now dynamically displays full name, position (if provided), place, and date. Adjusted layout and bounds for proper alignment and spacing in the report. --- .../Pages/ReportViewer.razor | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor index a33ed909..cd5bc717 100644 --- a/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor +++ b/EnvelopeGenerator.ReceiverUI/Pages/ReportViewer.razor @@ -82,6 +82,25 @@ } + +
+

Bitte geben Sie die folgenden Angaben ein. Das Datum wird automatisch hinzugefuegt.

+
+
+ + +
+
+ + +
+
+ + +
+
+
+ @if(!string.IsNullOrWhiteSpace(PopupValidationMessage)) {
@PopupValidationMessage
} @@ -125,6 +144,9 @@ string ActiveSignatureTab = SignatureTabDraw; string TypedSignatureText = string.Empty; string TypedSignatureFont = "'Brush Script MT', cursive"; + string SignerFullName = string.Empty; + string SignerPosition = string.Empty; + string SignaturePlace = string.Empty; int ViewerKey; protected override async Task OnInitializedAsync() { @@ -195,6 +217,16 @@ } async Task ApplySignatureAsync() { + if(string.IsNullOrWhiteSpace(SignerFullName)) { + PopupValidationMessage = "Bitte geben Sie Vor- und Nachname ein."; + return; + } + + if(string.IsNullOrWhiteSpace(SignaturePlace)) { + PopupValidationMessage = "Bitte geben Sie den Ort ein."; + return; + } + var signatureDataUrl = await GetActiveSignatureDataUrlAsync(); if(string.IsNullOrWhiteSpace(signatureDataUrl)) { @@ -204,7 +236,7 @@ PopupValidationMessage = null; SignatureValidationMessage = null; - Report = CreateSignedReportInstance(signatureDataUrl); + Report = CreateSignedReportInstance(signatureDataUrl, SignerFullName.Trim(), SignerPosition.Trim(), SignaturePlace.Trim()); SignatureApplied = true; SignaturePopupVisible = false; ViewerKey++; @@ -242,13 +274,13 @@ : PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport"); } - XtraReport CreateSignedReportInstance(string signatureDataUrl) { + XtraReport CreateSignedReportInstance(string signatureDataUrl, string signerFullName, string signerPosition, string signaturePlace) { var report = CreateReportInstance(); - AddSignature(report, signatureDataUrl); + AddSignature(report, signatureDataUrl, signerFullName, signerPosition, signaturePlace); return report; } - static void AddSignature(XtraReport report, string signatureDataUrl) { + static void AddSignature(XtraReport report, string signatureDataUrl, string signerFullName, string signerPosition, string signaturePlace) { var imageBytes = Convert.FromBase64String(signatureDataUrl[(signatureDataUrl.IndexOf(',') + 1)..]); using var imageStream = new MemoryStream(imageBytes); var imageSource = new ImageSource(DXImage.FromStream(imageStream)); @@ -259,13 +291,17 @@ report.Bands.Add(bottomMargin); } - bottomMargin.HeightF = Math.Max(bottomMargin.HeightF, 120F); + bottomMargin.HeightF = Math.Max(bottomMargin.HeightF, 140F); RemoveExistingSignature(bottomMargin); + var signatureInformation = string.IsNullOrWhiteSpace(signerPosition) + ? $"Empfaengerunterschrift\nName: {signerFullName}\nOrt: {signaturePlace}\nDatum: {DateTime.Now:g}" + : $"Empfaengerunterschrift\nName: {signerFullName}\nPosition: {signerPosition}\nOrt: {signaturePlace}\nDatum: {DateTime.Now:g}"; + var signatureLabel = new XRLabel { Name = "receiverSignatureLabel", - Text = $"Empfaengerunterschrift - {DateTime.Now:g}", - BoundsF = new RectangleF(390F, 6F, 230F, 18F), + Text = signatureInformation, + BoundsF = new RectangleF(390F, 6F, 230F, 48F), Font = new DXFont("Open Sans", 8F, DXFontStyle.Bold), ForeColor = System.Drawing.Color.FromArgb(73, 80, 87), TextAlignment = TextAlignment.MiddleLeft @@ -274,7 +310,7 @@ var signature = new XRPictureBox { Name = "receiverSignatureImage", ImageSource = imageSource, - BoundsF = new RectangleF(390F, 28F, 230F, 70F), + BoundsF = new RectangleF(390F, 58F, 230F, 70F), Sizing = ImageSizeMode.ZoomImage, Borders = BorderSide.Bottom, BorderColor = System.Drawing.Color.FromArgb(73, 80, 87)