Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -331,7 +331,7 @@
|
||||
<Compile Include="Models\ReportViewerModel.cs" />
|
||||
<Compile Include="Models\SchedulerModel.cs" />
|
||||
<Compile Include="Util\DcToMokMapper.cs" />
|
||||
<Compile Include="Util\ISignaturePopup.cs" />
|
||||
<Compile Include="Util\ISignable.cs" />
|
||||
<Compile Include="Util\MokSettings.cs" />
|
||||
<Compile Include="Util\AppointmentListItem.cs" />
|
||||
<Compile Include="Util\BeWoLoginState.cs" />
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -244,3 +244,8 @@ $font-family-sans-serif: 'Signika Negative', sans-serif;
|
||||
.btn-group-dropdown-toggle {
|
||||
@include border-right-radius(0);
|
||||
}
|
||||
|
||||
.bewo-dev-bg {
|
||||
background-color: #000000;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='25' viewBox='0 0 20 20'%3E%3Cg %3E%3Cpolygon fill='%23FFCA00' points='20 10 10 0 0 0 20 20'/%3E%3Cpolygon fill='%23FFCA00' points='0 10 0 20 10 20'/%3E%3C/g%3E%3C/svg%3E");
|
||||
}
|
||||
@@ -124,7 +124,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[Authorize]
|
||||
public ActionResult UpdateApplicationSettings(string pKey, string pValue)
|
||||
{
|
||||
|
||||
var userSettings = LoggedInUser.Settings;
|
||||
|
||||
UserSettingsUtils.SetSettingValue(SettingsType.ApplicationSettings, pKey, pValue, userSettings);
|
||||
|
||||
@@ -99,9 +99,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var customerFilter = MobileUserSettingsUtils.GetSettingValueAsEnum(Model.UserSettings, SettingsKeys.CustomerFilterCustomers, CustomerFilterEnum.MyCustomer);
|
||||
|
||||
if (Model.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
|
||||
Model.SelectedCustomerFilter = customerFilter;
|
||||
|
||||
if(Model.LoggedInEmployee?.EmployeeOid.HasValue ?? false)
|
||||
{
|
||||
Model.Customers = EmployeeService.GetActiveCustomersForEmployee(Model.LoggedInEmployee.EmployeeOid.Value, Model.SelectedCustomerFilter).OrderBy(customer => customer.LastName).ToList();
|
||||
}
|
||||
@@ -110,34 +112,30 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.Customers = new List<CompactCustomerDC>();
|
||||
}
|
||||
|
||||
if (Model.CustomerSessionModel.SelectedCustomerOid.HasValue)
|
||||
if(Model.CustomerSessionModel.SelectedCustomerOid.HasValue)
|
||||
{
|
||||
Model.SelectedCustomer = CustomerService.LoadCustomer(Model.CustomerSessionModel.SelectedCustomerOid.Value);
|
||||
}
|
||||
|
||||
if (Model.IsAllowedToSeeMedikamentenliste)
|
||||
if(Model.IsAllowedToSeeMedikamentenliste)
|
||||
{
|
||||
Model.ReportTypes = new List<CustomerReportType> { CustomerReportType.Medikamentenliste, CustomerReportType.Bedarfsmedikation, CustomerReportType.Historie };
|
||||
}
|
||||
|
||||
Model.AllAbsenceReasons = Model.HasRightToViewCustomerAbsenceTimes ? CustomerService.GetAllAbsenceReasons().Where(a => !a.Sichtbarkeit.HasValue || a.Sichtbarkeit.Value == AbsenceReasonVisibilityType.All || a.Sichtbarkeit.Value == AbsenceReasonVisibilityType.Customer).ToList() : new List<AbsenceReasonDC>();
|
||||
|
||||
|
||||
|
||||
if (Model.CustomerSessionModel.SelectedAbsenceTimeOid.HasValue && Model.SelectedCustomer != null)
|
||||
if(Model.CustomerSessionModel.SelectedAbsenceTimeOid.HasValue && Model.SelectedCustomer != null)
|
||||
{
|
||||
Model.SelectedAbsenceTime = Model.SelectedCustomer.AbsenceTimes.FirstOrDefault(absenceTime => absenceTime.AbsenceTimeOid.HasValue && absenceTime.AbsenceTimeOid.Value.Equals(Model.CustomerSessionModel.SelectedAbsenceTimeOid.Value));
|
||||
}
|
||||
|
||||
ReloadBargeldkassen();
|
||||
|
||||
|
||||
if (Model.CustomerSessionModel.SelectedBargeldkasseOid.HasValue && Model.Bargeldkassen != null)
|
||||
if(Model.CustomerSessionModel.SelectedBargeldkasseOid.HasValue && Model.Bargeldkassen != null)
|
||||
{
|
||||
Model.SelectedBargeldkasse = Model.Bargeldkassen.FirstOrDefault(bargeldkasse => bargeldkasse.BargeldkassenOid.HasValue && bargeldkasse.BargeldkassenOid.Value.Equals(Model.CustomerSessionModel.SelectedBargeldkasseOid.Value));
|
||||
}
|
||||
|
||||
if (Model.CustomerSessionModel.SelectedBargeldtransaktionOid.HasValue)
|
||||
if(Model.CustomerSessionModel.SelectedBargeldtransaktionOid.HasValue)
|
||||
{
|
||||
var kassenbuch = GetBargeldkasseByTransaktionsOid(Model.CustomerSessionModel.SelectedBargeldtransaktionOid.Value);
|
||||
|
||||
@@ -146,17 +144,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
Model.SelectedBargeldtransaktion = zahlung;
|
||||
}
|
||||
|
||||
|
||||
if (Model.SelectedCustomer != null)
|
||||
if(Model.SelectedCustomer != null)
|
||||
{
|
||||
Model.FolderTree = OperationsService.GetFolderTree(TableID.Customer, Model.SelectedCustomer.CustomerOid.Value);
|
||||
Model.ICD10Diagnosen = OperationsService.GetDiagiosisStringsForICD10Codes(Model.SelectedCustomer.ICD10DiagnosisCodes);
|
||||
}
|
||||
|
||||
|
||||
var customerFilter = MobileUserSettingsUtils.GetSettingValueAsEnum(Model.UserSettings, SettingsKeys.CustomerFilterCustomers, CustomerFilterEnum.MyCustomer);
|
||||
|
||||
Model.SelectedCustomerFilter = customerFilter;
|
||||
}
|
||||
|
||||
private void LoadCustomerToModel(long? customerOid)
|
||||
@@ -166,29 +158,17 @@ namespace BeWoPlanerMobil.Controllers
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (customerOid == -1)
|
||||
if(customerOid == -1)
|
||||
{
|
||||
|
||||
Model.CustomerSessionModel.ResetValues();
|
||||
//Model.SelectedCustomer = null;
|
||||
//Model.SelectedCustomerOid = null;
|
||||
//Model.SelectedAbsenceTimeOid = null;
|
||||
//Model.SelectedAbsenceReason = null;
|
||||
//Model.FolderTree = null;
|
||||
//Model.ICD10Diagnosen = null;
|
||||
//Model.Bargeldkassen = new List<BargeldkassenDC>();
|
||||
//Model.BargeldtransaktionshistoryEntries = new List<BargeldtransaktionshistoryDC>();
|
||||
//Model.TransaktionsOid2HasHistoryEntries = new Dictionary<long, bool>();
|
||||
//Model.SelectedBargeldtransaktion = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Model.SelectedCustomerOid.HasValue && Model.SelectedCustomerOid != customerOid)
|
||||
if(Model.SelectedCustomerOid.HasValue && Model.SelectedCustomerOid != customerOid)
|
||||
{
|
||||
Model.CustomerSessionModel.ResetValues();
|
||||
}
|
||||
|
||||
Model.SelectedCustomerOid = customerOid;
|
||||
}
|
||||
}
|
||||
@@ -240,6 +220,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
UpdateApplicationSettings(SettingsKeys.CustomerFilterCustomers, customerFilter.ToString());
|
||||
|
||||
Model.SelectedCustomerFilter = customerFilter;
|
||||
|
||||
return RedirectToActionPermanent("Customer");
|
||||
}
|
||||
|
||||
|
||||
@@ -1142,15 +1142,15 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
var serviceRecord = GetServiceRecordDC(serviceRecordOid, false);
|
||||
|
||||
if (serviceRecordOid < 1 || serviceRecord is null)
|
||||
if(serviceRecordOid < 1 || serviceRecord is null)
|
||||
{
|
||||
var message2Log = string.Empty;
|
||||
|
||||
if (serviceRecordOid < 1)
|
||||
if(serviceRecordOid < 1)
|
||||
{
|
||||
message2Log = $"Einzelunterschrift konnte nicht gespeichert werden, da die ServiceRecordOid {serviceRecordOid} ungültig ist.";
|
||||
}
|
||||
else if (serviceRecord is null)
|
||||
else if(serviceRecord is null)
|
||||
{
|
||||
message2Log = "Einzelunterschrift konnte nicht gespeichert werden, da der Zeiterfassungseintrag im Model nicht gefunden werden konnte.";
|
||||
}
|
||||
@@ -1163,11 +1163,11 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
long? oid;
|
||||
|
||||
using (var signatureBitmap = SignatureUtils.Base64StringToBitmap(blob.Split(',')[1]))
|
||||
using(var signatureBitmap = SignatureUtils.Base64StringToBitmap(blob.Split(',')[1]))
|
||||
{
|
||||
var isValid = SignatureUtils.ValidateSignature(signatureBitmap);
|
||||
|
||||
if (!isValid)
|
||||
if(!isValid)
|
||||
{
|
||||
TempData[TempDataConstants.ErrorMessageKey] = "Das Unterschriftenfeld darf nicht leer sein.";
|
||||
return RedirectToActionPermanent("Main", "Main");
|
||||
@@ -1181,7 +1181,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}).SignatureOid;
|
||||
}
|
||||
|
||||
if (oid is null)
|
||||
if(oid is null)
|
||||
{
|
||||
TempData[TempDataConstants.ErrorMessageKey] = "Beim Speichern der Unterschrift ist ein Fehler aufgetreten. Bitte wenden Sie sich an Ihren Administrator.";
|
||||
}
|
||||
@@ -1190,11 +1190,10 @@ namespace BeWoPlanerMobil.Controllers
|
||||
TempData[TempDataConstants.InfoMessageKey] = $"Die Unterschrift von {serviceRecord.Customer} für den Eintrag vom {MainModel.GetServiceRecordTimeHeader(serviceRecord, false)} wurde erfolgreich gespeichert.";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch(Exception ex)
|
||||
{
|
||||
Log.Error("Fehler beim Speichern der Einzelunterschrift: " + ex.Message, ex);
|
||||
}
|
||||
|
||||
|
||||
return RedirectToActionPermanent("Main", "Main");
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ using DevExpress.XtraReports.UI;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class CustomerModel : AbstractModel, ISignaturePopup
|
||||
public class CustomerModel : AbstractModel, ISignable
|
||||
{
|
||||
public CustomerModel()
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ using System.Web.Mvc;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class MainModel : AbstractModel, ISignaturePopup
|
||||
public class MainModel : AbstractModel, ISignable
|
||||
{
|
||||
protected static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ using System.Web.Mvc;
|
||||
|
||||
namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class ReportModel : AbstractModel, ISignaturePopup
|
||||
public class ReportModel : AbstractModel, ISignable
|
||||
{
|
||||
public ReportModel()
|
||||
{
|
||||
|
||||
12
BeWoPlanerMobil/Util/ISignable.cs
Normal file
12
BeWoPlanerMobil/Util/ISignable.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System.Web.Mvc;
|
||||
using BS.Shared;
|
||||
|
||||
namespace BeWoPlanerMobil.Util
|
||||
{
|
||||
internal interface ISignable
|
||||
{
|
||||
string SignaturePopupTitle { get; set; }
|
||||
|
||||
//ActionResult SaveSignature(object blob, long objectOid, long objectTid, SignatureTable signatureTable);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace BeWoPlanerMobil.Util
|
||||
{
|
||||
internal interface ISignaturePopup
|
||||
{
|
||||
string SignaturePopupTitle { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -70,10 +70,13 @@
|
||||
}
|
||||
|
||||
function showNewSignaturePopup(serviceRecordOid) {
|
||||
showSpinner();
|
||||
showSpinner();
|
||||
|
||||
$(`#single-signature-popup-container`).load(
|
||||
"@Url.Action("GetSingleSignatureInfo")",
|
||||
{serviceRecordOid: serviceRecordOid},
|
||||
{
|
||||
serviceRecordOid: serviceRecordOid
|
||||
},
|
||||
() => {
|
||||
initializeSignatureCanvas(serviceRecordOid);
|
||||
hideSpinner();
|
||||
|
||||
@@ -2,14 +2,24 @@
|
||||
@model BeWoPlanerMobil.Models.MainModel
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
@*
|
||||
Benötigt: SketchPad-Id, SketchPad-Container-Id
|
||||
*@
|
||||
$(document).ready(() => {
|
||||
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
|
||||
});
|
||||
|
||||
@*
|
||||
Benötigt: SketchPad-Container-Id, SketchPad-Id
|
||||
*@
|
||||
$(window).resize(() => {
|
||||
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
|
||||
});
|
||||
|
||||
@*
|
||||
Benötigt: SketchPad-Id, SketchPad-Container-Id
|
||||
*@
|
||||
function updateSingleSignatureCanvas(canvasContainerId, canvasId) {
|
||||
const containerWidth = $(`#${canvasContainerId}`).innerWidth();
|
||||
const sourceCanvas = document.getElementById(canvasId);
|
||||
@@ -58,53 +68,54 @@
|
||||
img.src = trimmedCanvas.toDataURL();
|
||||
}
|
||||
|
||||
@*
|
||||
Benötigt: ServiceRecord-Oid, Modal-Id, SketchPad-Container-Id, Ok-Button-Id, Neu-Button-Id, Abbrechen-Button-Id
|
||||
*@
|
||||
function initializeSignatureCanvas(serviceRecordOid) {
|
||||
hideSpinner();
|
||||
|
||||
$.get(
|
||||
"@Url.Action("GetSelectedRecordInformationWithOid")",
|
||||
{
|
||||
oid: serviceRecordOid
|
||||
},
|
||||
() => {
|
||||
$("#single-signature-modal").modal("show");
|
||||
$("#single-signature-modal").modal("show");
|
||||
|
||||
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
|
||||
updateSingleSignatureCanvas("single-signature-canvas-row", "single-signature-sketch-pad");
|
||||
|
||||
const canvas = document.getElementById("single-signature-sketch-pad");
|
||||
const signaturePad = new SignaturePad(canvas, {backgroundColor: "rgba(255, 255, 255, 0)"});
|
||||
const canvas = document.getElementById("single-signature-sketch-pad");
|
||||
const signaturePad = new SignaturePad(canvas, {backgroundColor: "rgba(255, 255, 255, 0)"});
|
||||
|
||||
const saveButton = document.getElementById("single-signature-ok-btn");
|
||||
const clearButton = document.getElementById("single-signature-clear-btn");
|
||||
const closeButton = document.getElementById("single-signature-cancel-btn");
|
||||
const saveButton = document.getElementById("single-signature-ok-btn");
|
||||
const clearButton = document.getElementById("single-signature-clear-btn");
|
||||
const closeButton = document.getElementById("single-signature-cancel-btn");
|
||||
|
||||
const saveButtonClone = saveButton.cloneNode(true);
|
||||
const clearButtonClone = clearButton.cloneNode(true);
|
||||
const closeButtonClone = closeButton.cloneNode(true);
|
||||
const saveButtonClone = saveButton.cloneNode(true);
|
||||
const clearButtonClone = clearButton.cloneNode(true);
|
||||
const closeButtonClone = closeButton.cloneNode(true);
|
||||
|
||||
saveButton.parentNode.replaceChild(saveButtonClone, saveButton);
|
||||
clearButton.parentNode.replaceChild(clearButtonClone, clearButton);
|
||||
closeButton.parentNode.replaceChild(closeButtonClone, closeButton);
|
||||
saveButton.parentNode.replaceChild(saveButtonClone, saveButton);
|
||||
clearButton.parentNode.replaceChild(clearButtonClone, clearButton);
|
||||
closeButton.parentNode.replaceChild(closeButtonClone, closeButton);
|
||||
|
||||
function saveBtnListener(event) {
|
||||
singleSignatureSaveButtonEvent(serviceRecordOid);
|
||||
}
|
||||
function saveBtnListener(event) {
|
||||
singleSignatureSaveButtonEvent(serviceRecordOid);
|
||||
}
|
||||
|
||||
function clearBtnListener(event) {
|
||||
singleSignatureClearButtonEvent(signaturePad);
|
||||
}
|
||||
function clearBtnListener(event) {
|
||||
singleSignatureClearButtonEvent(signaturePad);
|
||||
}
|
||||
|
||||
function closeBtnListener(event) {
|
||||
singleSignatureCloseButtonEvent(signaturePad);
|
||||
}
|
||||
function closeBtnListener(event) {
|
||||
singleSignatureCloseButtonEvent(signaturePad);
|
||||
}
|
||||
|
||||
saveButtonClone.addEventListener("click", saveBtnListener);
|
||||
clearButtonClone.addEventListener("click", clearBtnListener);
|
||||
closeButtonClone.addEventListener("click", closeBtnListener);
|
||||
});
|
||||
saveButtonClone.addEventListener("click", saveBtnListener);
|
||||
clearButtonClone.addEventListener("click", clearBtnListener);
|
||||
closeButtonClone.addEventListener("click", closeBtnListener);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
function singleSignatureSaveButtonEvent(selectedServiceRecordOid) {
|
||||
@*
|
||||
Benötigt: sketchPad-Id, Form-Url, Container-Id, Modal-Id
|
||||
*@
|
||||
function singleSignatureSaveButtonEvent(selectedServiceRecordOid) {
|
||||
const date = new Date();
|
||||
|
||||
const clonedCanvas = trimCanvas(cloneCanvas(document.getElementById("single-signature-sketch-pad")));
|
||||
@@ -126,11 +137,11 @@
|
||||
|
||||
form.append(
|
||||
$("<input>",
|
||||
{
|
||||
type: "hidden",
|
||||
name: "@FormCollectionConstants.ServiceRecordSignatureBlobKey",
|
||||
value: dataUrl
|
||||
})
|
||||
{
|
||||
type: "hidden",
|
||||
name: "@FormCollectionConstants.ServiceRecordSignatureBlobKey",
|
||||
value: dataUrl
|
||||
})
|
||||
);
|
||||
|
||||
form.append($("<input>",
|
||||
@@ -151,12 +162,15 @@
|
||||
|
||||
$("#sr-sg-container").append(form);
|
||||
|
||||
form.submit();
|
||||
form.submit();
|
||||
|
||||
$("#single-signature-modal").modal("hide");
|
||||
}
|
||||
|
||||
function singleSignatureCloseButtonEvent(signaturePad) {
|
||||
@*
|
||||
Benötigt: Modal-Id
|
||||
*@
|
||||
function singleSignatureCloseButtonEvent(signaturePad) {
|
||||
$("#single-signature-modal").modal("hide");
|
||||
|
||||
signaturePad.clear();
|
||||
@@ -164,7 +178,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
function singleSignatureClearButtonEvent(signaturePad) {
|
||||
function singleSignatureClearButtonEvent(signaturePad) {
|
||||
signaturePad.clear();
|
||||
}
|
||||
</script>
|
||||
@@ -180,8 +194,11 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@*
|
||||
ToDo: Über Klasse statt Id lösen?
|
||||
*@
|
||||
<script type="text/javascript">
|
||||
$("#single-signature-modal").modal("show");
|
||||
$("#single-signature-modal").modal("show");
|
||||
</script>
|
||||
|
||||
var nameAndDateOfBirth = Model.SelectedSupportConceptListObject?.NameAndDateOfBirth ?? string.Empty;
|
||||
|
||||
Reference in New Issue
Block a user