' +
- '
' +
- '
' +
- "
" +
+ newHtml +=
+ '
' +
+ '
' +
+ "
Unterschrift vom " + signature.InsTsStr + "
" +
+ '
' +
+ "
" +
"
";
});
@@ -183,20 +179,43 @@ function getSignatures(signatureOidStrings, containerId) {
}
}
-function cancelSignature(canSign, signaturePad) {
+function cancelSignature(canSign, signaturePad, canvasId, signatureContainer, overridingAlertId) {
try {
if (canSign === false) {
- hideSignatureContainer(canSign, signaturePad);
+ hideSignatureContainer(signatureContainer, overridingAlertId);
+ signaturePad.clear();
+ return;
+ }
+
+ var canvas = document.getElementById(canvasId);
+ var twoDContext = canvas.getContext("2d");
+
+ var width = canvas.getBoundingClientRect().width;
+ var height = canvas.getBoundingClientRect().height;
+
+ if (width === 0 || height === 0) {
+ hideSignatureContainer(signatureContainer, overridingAlertId);
signaturePad.clear();
return;
}
+ var isEmpty = signaturePad.isEmpty();
+
+ logInfo3("Canvas ist leer: " + isEmpty);
+
+ if(isEmpty === true) {
+ hideSignatureContainer(signatureContainer, overridingAlertId);
+ signaturePad.clear();
+
+ return;
+ }
+
showMessagePopupWithCallback("Unterschrift",
"Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?",
function() {
- hideSignatureContainer(canSign, signaturePad);
+ hideSignatureContainer(signatureContainer, overridingAlertId);
signaturePad.clear();
},
@@ -206,9 +225,8 @@ function cancelSignature(canSign, signaturePad) {
}
}
-function hideSignatureContainer() {
- $("#report-signature-container-div").removeClass("d-block");
- $("#overwriting-signature-alert").removeClass("d-block");
+function hideSignatureContainer(signatureContainer, overridingAlertId) {
+ $("#" + signatureContainer + ", #" + overridingAlertId).removeClass("d-block");
$("#report-form-container").show();
}
@@ -251,11 +269,11 @@ function showSignaturePad(overwrite, signatureOidsString, canSign, cardBodyId, c
var clearButton = document.getElementById("clear-report-canvas-button");
cancelButton.addEventListener("click", function() {
- cancelSignature(canSign, signaturePad);
+ cancelSignature(canSign, signaturePad, "report-sketch-pad-canvas", "report-signature-container-div", "overwriting-signature-alert");
});
saveButton.addEventListener("click", function() {
- saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad);
+ saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad, "report-sketch-pad-canvas");
});
clearButton.addEventListener("click", function() {
@@ -266,16 +284,21 @@ function showSignaturePad(overwrite, signatureOidsString, canSign, cardBodyId, c
}
}
-function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad) {
+function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad, canvasId) {
try {
- var clonedCanvas = trimCanvas(cloneCanvas(document.getElementById("report-sketch-pad-canvas")));
+ var canvas = document.getElementById(canvasId);
+ var clonedCanvas = cloneCanvas(canvas);
+ var trimmedCanvas = trimCanvas(clonedCanvas);
- var context = clonedCanvas.getContext("2d");
+ var context = trimmedCanvas.getContext("2d");
context.globalCompositeOperation = "destination-over";
context.fillStyle = "white";
- context.fillRect(0, 0, clonedCanvas.width, clonedCanvas.height);
- var dataUrl = clonedCanvas.toDataURL("image/png");
+ logInfo3(trimmedCanvas.width + " x " + trimmedCanvas.height);
+
+ context.fillRect(0, 0, trimmedCanvas.width, trimmedCanvas.height);
+
+ var dataUrl = trimmedCanvas.toDataURL("image/png");
showMessagePopupWithCallback(
"Unterschrift speichern",
diff --git a/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs b/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs
index 89c8d95aa..6e30e14cf 100644
--- a/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs
+++ b/BeWoPlanerMobil/Util/QuittierungsbelegItem.cs
@@ -1,6 +1,5 @@
using System;
using BeWo.Report.ReportObjects;
-using BS.Shared.DataContracts.Compact;
namespace BeWoPlanerMobil.Util
{
diff --git a/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs b/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs
index 85853e024..9cdbe912a 100644
--- a/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs
+++ b/BeWoPlanerMobil/Util/QuittierungsbelegResult.cs
@@ -10,6 +10,7 @@ namespace BeWoPlanerMobil.Util
public string CustomerName { get; }
+ // Die Liste mit den Zeiterfassungseinträgen
public List
Items { get; }
public long CustomerOid { get; }
diff --git a/BeWoPlanerMobil/Util/ReportUtils/Quittierungsbelegsunterschriftenobjekt.cs b/BeWoPlanerMobil/Util/ReportUtils/Quittierungsbelegsunterschriftenobjekt.cs
new file mode 100644
index 000000000..b32485df6
--- /dev/null
+++ b/BeWoPlanerMobil/Util/ReportUtils/Quittierungsbelegsunterschriftenobjekt.cs
@@ -0,0 +1,20 @@
+namespace BeWoPlanerMobil.Util.ReportUtils
+{
+ public class Quittierungsbelegsunterschriftenobjekt
+ {
+ public bool IsEmployeeSignature { get; }
+ public string PersonName { get; }
+ public string TimeSpanInfo { get; }
+ public string CustomerName { get; }
+ public int ServiceRecordCount { get; }
+
+ public Quittierungsbelegsunterschriftenobjekt(bool isEmployeeSignature, string personName, string timeSpanInfo, string customerName, int serviceRecordCount)
+ {
+ IsEmployeeSignature = isEmployeeSignature;
+ PersonName = personName;
+ TimeSpanInfo = timeSpanInfo;
+ CustomerName = customerName;
+ ServiceRecordCount = serviceRecordCount;
+ }
+ }
+}
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Util/SignatureUtils.cs b/BeWoPlanerMobil/Util/SignatureUtils.cs
index e543647a4..fafcd28d1 100644
--- a/BeWoPlanerMobil/Util/SignatureUtils.cs
+++ b/BeWoPlanerMobil/Util/SignatureUtils.cs
@@ -1,9 +1,7 @@
using System;
-using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
-using System.Linq;
namespace BeWoPlanerMobil.Util
{
@@ -11,7 +9,7 @@ namespace BeWoPlanerMobil.Util
{
public static bool ValidateSignature(Bitmap signatureBitmap)
{
- if(signatureBitmap == null)
+ if(signatureBitmap is null)
{
return false;
}
@@ -41,37 +39,37 @@ namespace BeWoPlanerMobil.Util
public static bool HasTransparentBackground(string base64Image)
{
- if (string.IsNullOrWhiteSpace(base64Image))
+ if(string.IsNullOrWhiteSpace(base64Image))
{
return true;
}
- if (base64Image.Contains(","))
+ if(base64Image.Contains(","))
{
base64Image = base64Image.Split(',')[1];
}
var whitePixelCount = 0;
- using (var bitmap = Base64StringToBitmap(base64Image))
+ using(var bitmap = Base64StringToBitmap(base64Image))
{
- if (bitmap.Width == 0 || bitmap.Height == 0)
+ if(bitmap.Width == 0 || bitmap.Height == 0)
{
return true;
}
- for (var x = 0; x < bitmap.Width; x++)
+ for(var x = 0; x < bitmap.Width; x++)
{
- for (var y = 0; y < bitmap.Height; y++)
+ for(var y = 0; y < bitmap.Height; y++)
{
var pixel = bitmap.GetPixel(x, y);
- if (pixel.R == 255 && pixel.G == 255 && pixel.B == 255)
+ if(pixel.R == 255 && pixel.G == 255 && pixel.B == 255)
{
whitePixelCount++;
}
- if (whitePixelCount == 20)
+ if(whitePixelCount == 20)
{
return false;
}
diff --git a/BeWoPlanerMobil/Views/Report/ConfirmationReceiptSignaturePartial.cshtml b/BeWoPlanerMobil/Views/Report/ConfirmationReceiptSignaturePartial.cshtml
new file mode 100644
index 000000000..7c32fd999
--- /dev/null
+++ b/BeWoPlanerMobil/Views/Report/ConfirmationReceiptSignaturePartial.cshtml
@@ -0,0 +1,102 @@
+@model BeWoPlanerMobil.Models.ReportModel
+
+@{
+ var plural = Model.ConfirmationReceiptObject.NumberOfServiceRecords > 1 ? "en" : string.Empty;
+
+ var leistungsplurarl = Model.ConfirmationReceiptObject.NumberOfServiceRecords > 1 ? "en" : string.Empty;
+
+ var sigInfo = $"Unterschrift{plural} von {Model.Quittierungsbelegsunterschriftenobjekt.PersonName} für {Model.Quittierungsbelegsunterschriftenobjekt.ServiceRecordCount} erbrachte Leistung{leistungsplurarl} von {Model.Quittierungsbelegsunterschriftenobjekt.CustomerName} ({Model.Quittierungsbelegsunterschriftenobjekt.TimeSpanInfo})";
+}
+
+
+
+
+ @*
+ ToDo: Hier die bereits geleisteten Unterschriften anzeigen
+
+ xs: < 576px
+ sm: >= 576px
+ md: >= 768px
+ lg: >= 992px
+ xl: >= 1200px
+
+ xs: maximal 1
+ sm: maximal 1
+ md: maximal 2
+ lg: maximal 3
+ xl: maximal 4
+ *@
+
+
+ @{
+ var count = Model.SelectedConfirmationReceiptSignatures.Count;
+
+ var colClass = $"col-sm-12 col-md-";
+
+
+ }
+
+ @foreach(var signature in Model.SelectedConfirmationReceiptSignatures)
+ {
+ var blubb = $"{(signature.NumberOfServiceRecords == 1 ? "eine" : signature.NumberOfServiceRecords.ToString())} Leistung{(signature.NumberOfServiceRecords != 1 ? "en" : string.Empty)}";
+
+
+
+
+
+
+
+ Unterschrift von:
+
+
+ @signature.PersonName
+
+
+
+
+ Geleistet am:
+
+
+ @signature.InsTsStr
+
+
+
+
+ Geleistet für:
+
+
+ @blubb
+
+
+
+
+
+ }
+
+
+
+
+
+ Achtung, Sie sind dabei eine vorhandene Unterschrift zu ersetzen!
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BeWoPlanerMobil/Views/Report/QuittierungsbelegsResultPartial.cshtml b/BeWoPlanerMobil/Views/Report/QuittierungsbelegsResultPartial.cshtml
index ba4d48597..14b54326e 100644
--- a/BeWoPlanerMobil/Views/Report/QuittierungsbelegsResultPartial.cshtml
+++ b/BeWoPlanerMobil/Views/Report/QuittierungsbelegsResultPartial.cshtml
@@ -28,6 +28,50 @@
showErrorPopup(error);
}
}
+
+ function loadConfirmationReceiptSignatures(cardBodyId, identifier, isEmployee, isOverriding, canSign, customerOid) {
+ cardHeaderButtonClick(cardBodyId);
+
+ $("#report-form-container").hide();
+ $("#report-signature-container").addClass("d-block");
+
+ $("#report-signature-container").load("@Url.Action("FetchConfirmationReceiptSignatures", "Report")", { identifier: identifier, isEmployee: isEmployee }, function() {
+ var overrideAlert = $("#qb-sig-override-alert");
+ if (isOverriding === true) {
+ overrideAlert.show();
+ } else {
+ overrideAlert.hide();
+ }
+
+ if (canSign) {
+ $("#qb-sig-canvas-row, #qb-sig-canvas-container, #qb-sig-sketch-pad").show();
+ } else {
+ $("#qb-sig-canvas-row, #qb-sig-canvas-container, #qb-sig-sketch-pad, #qb-sig-save-btn, #qb-sig-clear-canvas-btn").hide();
+ }
+
+ resizeCanvas("#qb-sig-sketch-pad", "#qb-sig-canvas-row");
+
+ var canvas = document.getElementById("qb-sig-sketch-pad");
+
+ var signaturePad = new SignaturePad(canvas, { backgroundColor: "rgba(255, 255, 255, 0)" });
+
+ var cancelButton = document.getElementById("qb-sig-cancel-btn");
+ var saveButton = document.getElementById("qb-sig-save-btn");
+ var clearButton = document.getElementById("qb-sig-clear-canvas-btn");
+
+ cancelButton.addEventListener("click", function () {
+ cancelSignature(canSign, signaturePad, "qb-sig-sketch-pad", "report-signature-container", "qb-sig-override-alert");
+ });
+
+ saveButton.addEventListener("click", function () {
+ saveSignature(customerOid, isEmployee, isOverriding, signaturePad, "qb-sig-sketch-pad");
+ });
+
+ clearButton.addEventListener("click", function () {
+ signaturePad.clear();
+ });
+ });
+ }
@@ -166,8 +210,18 @@
}
-
-
+
+ @if(customerSignatureState != SignatureState.All)
+ {
+
+
+
+
+ }
+ else
+ {
+
+ }
K
@@ -179,9 +233,19 @@
}
-
-
-
+
+
+ @if(employeeSignatureState != SignatureState.All)
+ {
+
+
+
+
+ }
+ else
+ {
+
+ }
M
diff --git a/BeWoPlanerMobil/Views/Report/Report.cshtml b/BeWoPlanerMobil/Views/Report/Report.cshtml
index 1a2b32d59..89e94c522 100644
--- a/BeWoPlanerMobil/Views/Report/Report.cshtml
+++ b/BeWoPlanerMobil/Views/Report/Report.cshtml
@@ -1,4 +1,5 @@
-@model BeWoPlanerMobil.Models.ReportModel
+@using BeWoPlanerMobil.Util
+@model BeWoPlanerMobil.Models.ReportModel
@{
ViewBag.Title = "Quittierungsbeleg";
@@ -6,7 +7,7 @@
@@ -65,7 +66,13 @@
function createServiceOverview() {
try {
- $("#report-signatures-container").load("@Url.Action("LoadServiceOverview")");
+ showSpinner();
+
+ $("#report-signatures-container").load("@Url.Action("LoadServiceOverview")",
+ function () {
+ hideSpinner();
+ }
+ );
} catch (error) {
showErrorPopup(error);
}
@@ -306,14 +313,16 @@
+
+