Bugs behoben, die mit dem Wechsel zum browsereigenen Datumsinputs oder des Wiederherstellen des alten Textes der Dokufelder zu tun hatten
This commit is contained in:
@@ -22,6 +22,7 @@ using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Services;
|
||||
using DevExpress.Mvvm.ModuleInjection.Native;
|
||||
using DevExpress.XtraScheduler;
|
||||
using DevExpress.XtraScheduler.Compatibility;
|
||||
using Newtonsoft.Json;
|
||||
@@ -105,10 +106,10 @@ namespace BeWoPlanerMobil.Controllers
|
||||
switch(MobileSessionFacade.PasswordStrength)
|
||||
{
|
||||
case 0:
|
||||
tempDataValue = "Sie benutzen ein sehr schwaches Passwort.<br/><br/>Bitte ändern Sie Ihr Passwort, indem Sie im Menü auf 'Password ändern' klicken.";
|
||||
tempDataValue = "Sie benutzen ein sehr schwaches Passwort.<br><br>Bitte ändern Sie Ihr Passwort, indem Sie im Menü auf 'Password ändern' klicken.";
|
||||
break;
|
||||
case 1:
|
||||
tempDataValue = "Sie benutzen ein schwaches Passwort.<br/><br/>Bitte ändern Sie Ihr Passwort, indem Sie im Menü auf 'Password ändern' klicken.";
|
||||
tempDataValue = "Sie benutzen ein schwaches Passwort.<br><br>Bitte ändern Sie Ihr Passwort, indem Sie im Menü auf 'Password ändern' klicken.";
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -246,7 +247,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
if(Model.SelectedCostBearer2SupportConceptRelListObject is null || !isInList)
|
||||
{
|
||||
if(!(Model.SelectedCostBearer2SupportConceptRelListObject is null) && !isInList)
|
||||
if(Model.SelectedCostBearer2SupportConceptRelListObject != null && !isInList)
|
||||
{
|
||||
Log.Info($"Model.SelectedSupportConceptListObject.Oid = {Model.SelectedCostBearer2SupportConceptRelListObject.CostBearer2SupportConceptOid} is not in list !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||||
|
||||
@@ -481,6 +482,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
if(supportConcept is null)
|
||||
{
|
||||
Log.Info($"Hilfeplan von Bewilligung mit Oid {Model.CostBearer2SupportConceptOid} nicht gefunden beim Laden der Ziele (LoadGoals).");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -958,6 +960,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
Log.Info($"Model ist null bei CreateOrUpdateServiceRecord; User: {MobileSessionFacade.LoggedInUser.Oid} {MobileSessionFacade.LoggedInUser.LoginName} ({MobileSessionFacade.LoggedInUser.Employee})");
|
||||
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||
return Logout();
|
||||
}
|
||||
@@ -993,6 +996,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
if(string.IsNullOrEmpty(collection[FormCollectionConstants.DateKey]))
|
||||
{
|
||||
Log.Info($"CreateOrUpdateServiceRecord: Das Startdatum ist null. Breche das {(Model.IsInEditingMode ? "Speichern" : "Anlegen")} ab.");
|
||||
return View("Main", Model);
|
||||
}
|
||||
|
||||
@@ -1080,6 +1084,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
if(Model.NewServiceRecord is null)
|
||||
{
|
||||
Log.Info("CreateOrUpdateServiceRecord: NewServiceRecord ist null. Breche ab.");
|
||||
return RedirectToActionPermanent("Main");
|
||||
}
|
||||
|
||||
@@ -1743,6 +1748,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
Log.Info($"Model ist null in Methode LoadServiceCategoriesToModel({cb2ScOid})");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1757,6 +1763,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
if(cb2ScOid is null && (Model.IsInGroupBookingMode || Model.IsInMultiBookingMode))
|
||||
{
|
||||
Log.Info("Oid der Bewilligung ist null und der MoK befindet sich im Gruppen- oder Mehrfachbuchungsmodus");
|
||||
|
||||
var selectedSupportConcepts = Model.IsInGroupBookingMode ?
|
||||
Model.GroupBookingSelectedSupportConcepts :
|
||||
Model.IsInMultiBookingMode ?
|
||||
@@ -1930,7 +1938,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
var serviceRecordDC = Model.ServiceRecords.FirstOrDefault(f => f.ServiceRecordOid != null && f.ServiceRecordOid.Value.Equals(Model.ServiceRecordOidToDelete));
|
||||
var version = serviceRecordDC?.ServiceRecordVersion;
|
||||
|
||||
if(version != null && MainModel.IsAllowedToDeleteServiceRecord(serviceRecordDC))
|
||||
if(version != null && Model.IsAllowedToDeleteServiceRecord(serviceRecordDC))
|
||||
{
|
||||
OperationsService.DeleteServiceRecord(Model.ServiceRecordOidToDelete.Value, version.Value);
|
||||
|
||||
@@ -1938,9 +1946,7 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
ResetEditingMode();
|
||||
|
||||
return RedirectToActionPermanent("Main");
|
||||
return ResetEditingMode();
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
@@ -3064,7 +3070,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
LoadSupportConceptThings(Model.CostBearer2SupportConceptOid);
|
||||
//LoadGoals();
|
||||
}
|
||||
|
||||
private void ResetMultiBookingMode()
|
||||
@@ -4731,6 +4736,12 @@ namespace BeWoPlanerMobil.Controllers
|
||||
[Authorize]
|
||||
public override string SaveCollapsibleStatus(bool isOpen, string identifier)
|
||||
{
|
||||
if(Model is null)
|
||||
{
|
||||
TempData[TempDataConstants.DoLogoutKey] = true;
|
||||
return LeerzeichenFuerGetMethoden;
|
||||
}
|
||||
|
||||
Model.Collapsibles2IsShown[identifier] = isOpen;
|
||||
|
||||
return LeerzeichenFuerGetMethoden;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using BeWo.View.Navigation.Filter;
|
||||
@@ -16,6 +17,10 @@ namespace BeWoPlanerMobil.Models
|
||||
{
|
||||
public class MainModel : AbstractModel
|
||||
{
|
||||
protected static readonly log4net.ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
|
||||
|
||||
public long? SelectedCostBearerSupportConceptRelOid { get; set; }
|
||||
|
||||
[Display(Name = "Nur meine Klienten anzeigen")]
|
||||
@@ -94,8 +99,19 @@ namespace BeWoPlanerMobil.Models
|
||||
[Display(Name = "Abgelaufene Hilfepläne anzeigen")]
|
||||
public bool ShowExpiredSupportConcepts { get; set; }
|
||||
|
||||
[Display(Name = "Hilfeplan")]
|
||||
public long? CostBearer2SupportConceptOid { get; set; }
|
||||
private long? _CostBearer2SupportConceptOid;
|
||||
|
||||
[Display(Name = "Hilfeplan")]
|
||||
public long? CostBearer2SupportConceptOid
|
||||
{
|
||||
get => _CostBearer2SupportConceptOid;
|
||||
|
||||
set
|
||||
{
|
||||
Log.Info($"CostBearer2SupportConceptOid ausgewählt: {value}. Vorher: {_CostBearer2SupportConceptOid}; Benutzer: {MobileSessionFacade.LoggedInUser.LoginName} UserOid: {MobileSessionFacade.LoggedInUser.Oid}");
|
||||
_CostBearer2SupportConceptOid = value;
|
||||
}
|
||||
}
|
||||
|
||||
public long? SelectedServiceCategoryOid => SelectedServiceCategory?.ServiceCategoryOid;
|
||||
|
||||
@@ -103,7 +119,7 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public long? SelectedServiceRecordOid { get; set; }
|
||||
|
||||
public static bool IsAllowedToDeleteServiceRecord(ServiceRecordDC serviceRecord)
|
||||
public bool IsAllowedToDeleteServiceRecord(ServiceRecordDC serviceRecord)
|
||||
{
|
||||
var allowed = false;
|
||||
|
||||
@@ -176,8 +192,22 @@ namespace BeWoPlanerMobil.Models
|
||||
}
|
||||
|
||||
public ServiceRecordDC SelectedServiceRecord { get; set; }
|
||||
|
||||
public SupportConceptDC SelectedSupportConcept { get; set; }
|
||||
|
||||
private SupportConceptDC _SelectedSupportConcept;
|
||||
|
||||
public SupportConceptDC SelectedSupportConcept
|
||||
{
|
||||
get => _SelectedSupportConcept;
|
||||
|
||||
set
|
||||
{
|
||||
var stackTrace = new StackTrace();
|
||||
var callingMethodsName = stackTrace.GetFrame(1).GetMethod().Name;
|
||||
Log.Info($"SC mit Oid {value?.SupportConceptOid} ausgewählt. Vorheriger SC: {_SelectedSupportConcept?.SupportConceptOid}. Aufrufende Methode: {callingMethodsName}");
|
||||
|
||||
_SelectedSupportConcept = value;
|
||||
}
|
||||
}
|
||||
|
||||
public int Zeitraum { get; set; }
|
||||
|
||||
@@ -256,8 +286,6 @@ namespace BeWoPlanerMobil.Models
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public CostBearer2SupportConceptRelListObject SelectedCostBearer2SupportConceptRelListObject { get; set; }
|
||||
|
||||
public List<SupportConceptCostBearerRelDC> SelectedConceptCostBearerRelations { get; set; }
|
||||
@@ -386,7 +414,23 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public CompactEmployeeDC PreviouslySelectedEmployee { get; set; }
|
||||
public SupportConceptDC PreviouslySelectedSupportConcept { get; set; }
|
||||
public long? PreviouslySelectedCostbearer2SupportConceptOid { get; set; }
|
||||
private long? _PreviouslySelectedCostbearer2SupportConceptOid;
|
||||
|
||||
public long? PreviouslySelectedCostbearer2SupportConceptOid
|
||||
{
|
||||
get => _PreviouslySelectedCostbearer2SupportConceptOid;
|
||||
set
|
||||
{
|
||||
var stackTrace = new StackTrace();
|
||||
var callingMethodsName = stackTrace.GetFrame(1).GetMethod().Name;
|
||||
|
||||
var alt = _PreviouslySelectedCostbearer2SupportConceptOid;
|
||||
|
||||
Log.Info($"PreviouslySelectedCostbearer2SupportConceptOid-Set von {alt} zu {value} von Methode: {callingMethodsName}");
|
||||
|
||||
_PreviouslySelectedCostbearer2SupportConceptOid = value;
|
||||
}
|
||||
}
|
||||
public bool IsEndDateVisible { get; set; }
|
||||
|
||||
public static string GetServiceRecordTimeHeader(ServiceRecordDC serviceRecord, bool isForServiceRecordsList)
|
||||
@@ -742,7 +786,7 @@ namespace BeWoPlanerMobil.Models
|
||||
|
||||
public ServiceDescriptionDC GetSelectedOrFirstServiceDescription()
|
||||
{
|
||||
if(!(SelectedServiceDescription is null) || Categories2Descriptions is null)
|
||||
if(SelectedServiceDescription != null || Categories2Descriptions is null)
|
||||
{
|
||||
return SelectedServiceDescription;
|
||||
}
|
||||
|
||||
@@ -317,12 +317,14 @@ function calcTimeWithDuration(timeAsString, timeElement, start, duration, isForm
|
||||
}
|
||||
|
||||
function beiDaueraenderung(idPrefix) {
|
||||
const hoursMinutesDropdown = $(`#${idPrefix}-hours-minutes-dropdown-btn`);
|
||||
|
||||
const startTimeInput = $(`#${idPrefix}-start-time-input`);
|
||||
const endTimeInput = $(`#${idPrefix}-end-time-input`);
|
||||
const durationInput = $(`#${idPrefix}-duration-input`);
|
||||
const startDateInput = $(`#${idPrefix}-start-date-input`);
|
||||
const endDateInput = $(`#${idPrefix}-end-date-input`);
|
||||
const isInMin = $(`#${idPrefix}-hours-minutes-dropdown-btn`).text().replaceAll(/\s/g, "") === "Minuten";
|
||||
const isInMin = getIsZeiterfassungseinheitInMinutes();//hoursMinutesDropdown.length && hoursMinutesDropdown.text().replaceAll(/\s/g, "") === "Minuten" || 0 === hoursMinutesDropdown.length;
|
||||
|
||||
const startTimeCondition = startTimeInput.val().length > 0;
|
||||
const endTimeCondition = endTimeInput.val().length > 0;
|
||||
|
||||
@@ -269,7 +269,7 @@ function getDokuTexte(prefix) {
|
||||
x += ", ";
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
} catch(error) {
|
||||
window.showErrorPopup(error);
|
||||
} finally {
|
||||
return noticeList;
|
||||
@@ -326,7 +326,6 @@ function checkNumberInput(inputId) {
|
||||
}
|
||||
|
||||
// Wird bei der Validierung des Formulars benutzt
|
||||
// ToDo: Umbauen zu JavaScript-Date-Objekt
|
||||
function getStartAndEndDate(prefix) {
|
||||
if(prefix === undefined || prefix === null) {
|
||||
prefix = "";
|
||||
@@ -337,6 +336,19 @@ function getStartAndEndDate(prefix) {
|
||||
const startTimeInput = $(`#${prefix}-start-time-input`);
|
||||
const endTimeInput = $(`#${prefix}-end-time-input`);
|
||||
|
||||
return validateStartAndEndInputs(startDateInput, startTimeInput, endDateInput, endTimeInput, true, false);
|
||||
}
|
||||
|
||||
// ToDo: eine Validierungsmethode für alle Anwendungsfälle (Zeiterfassung, Abwesenheiten, Kalendertermine)
|
||||
function validateStartAndEndInputs(startDateInput, startTimeInput, endDateInput, endTimeInput, isServiceRecord, hasOpenEnd) {
|
||||
if(hasOpenEnd === undefined || hasOpenEnd === null) {
|
||||
hasOpenEnd = false;
|
||||
}
|
||||
|
||||
if(isServiceRecord === undefined || isServiceRecord === null) {
|
||||
isServiceRecord = false;
|
||||
}
|
||||
|
||||
const startDate = new Date(startDateInput.val());
|
||||
const startTime = startTimeInput.val();
|
||||
|
||||
@@ -347,13 +359,13 @@ function getStartAndEndDate(prefix) {
|
||||
const isEndDateValid = endDateInput.length ? false === isNaN(endDate.getTime()) : true;
|
||||
|
||||
if(false === isStartDateValid && startTimeInput.length === 0 || false === isEndDateValid && endTimeInput.length === 0) {
|
||||
return [new Date(`${startDate}T00:00:01`), new Date(`${endDate}T00:00:01`)];
|
||||
return [new Date(`${startDate}T00:00:0${(isServiceRecord ? "1" : "0")}`), new Date(`${endDate}T00:00:0${(isServiceRecord ? "1" : "0")}`)];
|
||||
}
|
||||
|
||||
const isStartTimeValid = startTime.length > 0;
|
||||
const isEndTimeValid = endTime.length > 0;
|
||||
|
||||
if (false === isStartTimeValid || false === isStartDateValid || false === isEndTimeValid || false === isEndDateValid) {
|
||||
|
||||
if(false === isStartTimeValid || false === isStartDateValid || false === isEndTimeValid || false === isEndDateValid) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -361,7 +373,6 @@ function getStartAndEndDate(prefix) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
function supportConceptSearchOnChange() {
|
||||
try {
|
||||
var text = $("#support-concept-search-input").val().toLowerCase();
|
||||
|
||||
@@ -49,13 +49,22 @@ namespace BeWoPlanerMobil.Service
|
||||
|
||||
var serverPath = HttpContext.Current.Server.MapPath(null);
|
||||
|
||||
serverPath = Path.Combine(serverPath, ConfigurationManager.AppSettings.Get("MultitenancyPath"));
|
||||
var multitenancyPath = ConfigurationManager.AppSettings.Get("MultitenancyPath");
|
||||
var configFileName = $"{MobileSessionFacade.Tenant}.config";
|
||||
|
||||
serverPath = Path.Combine(serverPath, MobileSessionFacade.Tenant + ".config");
|
||||
serverPath = Path.Combine(serverPath, multitenancyPath);
|
||||
|
||||
serverPath = Path.Combine(serverPath, configFileName);
|
||||
|
||||
if(!File.Exists(serverPath))
|
||||
{
|
||||
return null;
|
||||
serverPath = HttpContext.Current.Server.MapPath(null);
|
||||
serverPath = Path.Combine(serverPath, Path.Combine("..\\", Path.Combine(multitenancyPath, configFileName)));
|
||||
|
||||
if(!File.Exists(serverPath))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
var config = new Configuration().Configure(serverPath).SetInterceptor(new MobileUpdInsInterceptor()).BuildSessionFactory();
|
||||
|
||||
@@ -76,16 +76,16 @@ namespace BeWoPlanerMobil.Util
|
||||
|
||||
public JsonCustomer(CustomerDC customer, List<BeWoFolderDC> folderTree, Dictionary<string, string> icd10Diagnosen)
|
||||
{
|
||||
Krankenkasse = customer.HealthInsurance;
|
||||
Krankenkasse = customer.HealthInsurance;
|
||||
Versichertennummer = customer.InsuranceNumber;
|
||||
Versichertenstatus = customer.VersichertenStatus;
|
||||
|
||||
HasDisabilities = customer.Disabilities.Any();
|
||||
SchwebiIsUnlimited = customer.AusweisUnbefristetGueltig == true ? "JA" : "NEIN";
|
||||
HasDisabilities = customer.Disabilities.Any();
|
||||
SchwebiIsUnlimited = customer.AusweisUnbefristetGueltig == true ? "JA" : "NEIN";
|
||||
SchwebiGradDerBehinderung = customer.GradDerBehinderung;
|
||||
SchwebiPflegegrad = customer.Pflegegrad?.ToString() ?? string.Empty;
|
||||
SchwebiAktenzeichen = customer.AusweisAktenzeichen;
|
||||
SchwebiMerkzeichen = string.Empty;
|
||||
SchwebiPflegegrad = customer.Pflegegrad?.ToString() ?? string.Empty;
|
||||
SchwebiAktenzeichen = customer.AusweisAktenzeichen;
|
||||
SchwebiMerkzeichen = string.Empty;
|
||||
foreach(var mz in customer.MerkzeichenListe)
|
||||
{
|
||||
SchwebiMerkzeichen += $"{mz}; ";
|
||||
@@ -119,7 +119,7 @@ namespace BeWoPlanerMobil.Util
|
||||
Vorname = customer.FirstName;
|
||||
Nachname = customer.LastName;
|
||||
Alias = customer.CustomerAlias;
|
||||
Geburtstag = customer.DateOfBirth?.ToShortDateString() ?? string.Empty;
|
||||
Geburtstag = customer.DateOfBirth?.ToString("yyyy-MM-dd") ?? string.Empty;
|
||||
|
||||
switch(customer.Sex)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$(".collapse").on("shown.bs.collapse", function () {
|
||||
logInfo3(`Das Collapsible-Element '${$(this).attr("id")}' ist geöffnet.`);
|
||||
window.saveCollapsibleState($(this).attr("id"), "@Url.Action("SaveCollapsibleStatus")");
|
||||
});
|
||||
|
||||
@@ -169,12 +168,12 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-fluid mt-3 px-0 lg-max-width" id="customer-container">
|
||||
<div class="container-fluid mt-1 px-0 lg-max-width" id="customer-container">
|
||||
@if(Model?.SelectedJsonCustomer != null)
|
||||
{
|
||||
@* ----- Details ----- *@
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this, resizeCustomerPrependElements)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -192,14 +191,14 @@
|
||||
var inputDisabled = !AbstractModel.HasRightToEditCustomers ? "disabled" : string.Empty;
|
||||
|
||||
<div class="row" id="stammdaten-container">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-2 px-1">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
Eigenschaften
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
||||
@@ -214,7 +213,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
||||
@@ -229,7 +228,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
||||
@@ -241,29 +240,22 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="input-group date" id="date-of-birth-picker" data-target-input="nearest">
|
||||
<div class="form-group w-100 mt-1 my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
||||
Geburtstag
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" @inputDisabled id="date-of-birth"
|
||||
<input type="date" @inputDisabled id="date-of-birth-input"
|
||||
autocomplete="on"
|
||||
name="geburtstag" class="form-control datetimepicker-input"
|
||||
data-target="#date-of-birth-picker"
|
||||
value="@Model.SelectedJsonCustomer.Geburtstag"
|
||||
data-toggle="datetimepicker" />
|
||||
<div class="input-group-append" data-target="#date-of-birth-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
name="geburtstag" class="form-control"
|
||||
value="@Model.SelectedJsonCustomer.Geburtstag" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 my-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-eigenschaften">
|
||||
@@ -287,7 +279,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@@ -299,7 +291,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@@ -311,7 +303,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 my-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
@@ -325,14 +317,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-2 px-1">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
<a href="@Model.SelectedJsonCustomer.GoogleMapsLink" target="_blank" class="text-bewo-customer-card-header">Adresse<i class="fas fa-map-marker-alt ml-3"></i></a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-adresse">
|
||||
@@ -344,7 +336,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-adresse">
|
||||
@@ -356,7 +348,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-adresse">
|
||||
@@ -368,7 +360,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 my-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-adresse">
|
||||
@@ -382,14 +374,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-2 px-1">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
Rechnungsadresse
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-rechnungsadresse">
|
||||
@@ -401,7 +393,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-rechnungsadresse">
|
||||
@@ -413,7 +405,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-rechnungsadresse">
|
||||
@@ -425,7 +417,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mb-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-rechnungsadresse">
|
||||
@@ -439,14 +431,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-3 px-1">
|
||||
<div class="col-sm-6 col-md-6 col-lg-6 col-xl-3 mt-2 px-1">
|
||||
<div class="card">
|
||||
<div class="card-body pb-0">
|
||||
<div class="card-title text-bewo-customer-card-header">
|
||||
Kontakt
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-kontakt">
|
||||
@@ -463,7 +455,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-kontakt">
|
||||
@@ -480,7 +472,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 mt-1 mb-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-kontakt">
|
||||
@@ -492,7 +484,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group w-100">
|
||||
<div class="form-group w-100 my-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-prepend-text-kontakt">
|
||||
@@ -512,7 +504,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 col-md-6 col-lg-12 my-3 px-1">
|
||||
<div class="col-sm-12 col-md-6 col-lg-12 mt-2 px-1">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="card-header">
|
||||
<div class="clearfix">
|
||||
@@ -529,7 +521,7 @@
|
||||
|
||||
@if(AbstractModel.HasRightToEditCustomers)
|
||||
{
|
||||
<div class="col-12 my-3 px-1">
|
||||
<div class="col-12 mb-2 px-1 mt-2">
|
||||
<button type="submit" class="btn btn-primary float-right w-100 m-0" onclick="showSpinner()">Speichern</button>
|
||||
</div>
|
||||
}
|
||||
@@ -543,8 +535,8 @@
|
||||
@* ----- Aktenzeichen ----- *@
|
||||
if(Model.SelectedJsonCustomer.ReferenceNumbers.Any())
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -593,8 +585,8 @@
|
||||
@* ----- Umfeld ----- *@
|
||||
if(Model.SelectedJsonCustomer.Umfeldpersonen.Any())
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -695,8 +687,8 @@
|
||||
@* ----- Organisationen des Umfelds ----- *@
|
||||
if(Model.SelectedJsonCustomer.Organisations.Any())
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down text-bewo-customer-card-header h-100"></i>
|
||||
@@ -818,8 +810,8 @@
|
||||
@* ----- Dokumente ----- *@
|
||||
if(AbstractModel.HasRightToViewCustomerDocuments)
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -845,8 +837,8 @@
|
||||
@* ----- Medikamentenliste ----- *@
|
||||
if(AbstractModel.IsAllowedToSeeMedikamentenliste)
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -869,8 +861,8 @@
|
||||
@* ----- Diagnosen ----- *@
|
||||
if(AbstractModel.HasRightToViewDiagnosen && (Model.SelectedJsonCustomer.HasDiagnosen || Model.SelectedJsonCustomer.HasDisabilities || Model.SelectedJsonCustomer.HasSchwebi))
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -1006,7 +998,7 @@
|
||||
if(isAllowedToViewBargeldkassen)
|
||||
{
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -1031,8 +1023,8 @@
|
||||
@* ----- Abwesenheiten ----- *@
|
||||
if(AbstractModel.HasRightToViewCustomerAbsenceTimes)
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -1064,8 +1056,8 @@
|
||||
|
||||
if(AbstractModel.HasRightToViewBetreuung && (hasRelatedEmployees || hasRelatedTeams))
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="col-12">
|
||||
<div class="card w-100 h-100 my-1">
|
||||
<div class="card-header" onclick="cardHeaderClick2(this)">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header"></i>
|
||||
@@ -1100,10 +1092,10 @@
|
||||
<span>×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="customer-absence-time-modal-body">
|
||||
<div class="modal-body p-2" id="customer-absence-time-modal-body">
|
||||
@Html.Partial("CustomerAbsenceTimeFormPartial", Model)
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="modal-footer p-2">
|
||||
<button class="btn btn-primary" type="button" onclick="submitCustomerAbsenceTimesForm()">OK</button>
|
||||
<button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearCustomerAbsenceTimesForm()">Abbrechen</button>
|
||||
</div>
|
||||
|
||||
@@ -40,31 +40,30 @@
|
||||
$("#form-validation-result-column").addClass("d-none");
|
||||
$("#form-validation-result-container").html("");
|
||||
|
||||
var validationMessage = "";
|
||||
let validationMessage = "";
|
||||
|
||||
var allDay = $("#customer-absence-time-allday-cb").is(":checked");
|
||||
const allDay = $("#customer-absence-time-allday-cb").is(":checked");
|
||||
|
||||
var startDateString = $("#customer-absence-time-start-date").val();
|
||||
var endDateString = $("#customer-absence-time-end-date").val();
|
||||
var startTimeString = $("#customer-absence-time-start-time").val();
|
||||
var endTimeString = $("#customer-absence-time-end-time").val();
|
||||
const startDateString = $("#customer-absence-time-start-date-input").val();
|
||||
const endDateString = $("#customer-absence-time-end-date-input").val(); // z.B. 2025-05-20
|
||||
const startTimeString = $("#customer-absence-time-start-time-input").val(); // z.B. 09:17
|
||||
const endTimeString = $("#customer-absence-time-end-time-input").val();
|
||||
|
||||
var isInfinite = endDateString.length === 0 && endTimeString.length === 0;
|
||||
const isInfinite = endDateString.length === 0 && endTimeString.length === 0;
|
||||
|
||||
var start = allDay ? moment(startDateString, "DD.MM.YYYY") : moment(startDateString + " " + startTimeString, "DD.MM.YYYY hh:mm");
|
||||
var end = allDay ? moment(endDateString, "DD.MM.YYYY") : moment(endDateString + " " + endTimeString, "DD.MM.YYYY hh:mm");
|
||||
const start = allDay ? new Date(startDateString) : combineDateAndTime(new Date(startDateString), startTimeString);
|
||||
const end = allDay ? new Date(endDateString) : combineDateAndTime(new Date(endDateString), endTimeString);
|
||||
|
||||
|
||||
var isStartValid = start.isValid();
|
||||
var isEndValid = end.isValid() || isInfinite;
|
||||
const isStartValid = false === isNaN(start.getTime());
|
||||
const isEndValid = false === isNaN(end.getTime()) || isInfinite;
|
||||
|
||||
if(!isStartValid || !isEndValid) {
|
||||
return "Die Datumsangaben sind ungültig!";
|
||||
}
|
||||
|
||||
var selectedOption = $("#absence-reason-select option:selected");
|
||||
const selectedOption = $("#absence-reason-select option:selected");
|
||||
|
||||
if(!isInfinite && isStartValid === true && end.isBefore(start)) {
|
||||
if(!isInfinite && end.getTime() > start.getTime()) {
|
||||
validationMessage = "Das Enddatum muss vor dem Startdatum liegen.";
|
||||
}
|
||||
|
||||
@@ -84,13 +83,14 @@
|
||||
|
||||
function toggleAllDay() {
|
||||
try {
|
||||
var isChecked = $("#customer-absence-time-allday-cb").is(":checked");
|
||||
const checkbox = $("#customer-absence-time-allday-cb");
|
||||
const isChecked = checkbox.is(":checked");
|
||||
|
||||
if(isChecked === true) {
|
||||
$("#customer-absence-time-start-time, #customer-absence-time-end-time").val("");
|
||||
$("#customer-absence-time-start-time-input, #customer-absence-time-end-time-input").val(null);
|
||||
}
|
||||
|
||||
$("#customer-absence-time-start-time, #customer-absence-time-end-time").prop("disabled", isChecked);
|
||||
$("#customer-absence-time-start-time-input, #customer-absence-time-end-time-input").prop("disabled", isChecked);
|
||||
} catch(error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
@@ -98,10 +98,10 @@
|
||||
|
||||
function submitCustomerAbsenceTimesForm() {
|
||||
try {
|
||||
var validationMessage = validateAbsenceTimeForm();
|
||||
const validationMessage = validateAbsenceTimeForm();
|
||||
|
||||
if(validationMessage !== undefined && validationMessage !== null && validationMessage.length > 0) {
|
||||
$("#form-validation-result-column").removeClass("d-none");
|
||||
$("#form-validation-result-row").removeClass("d-none");
|
||||
$("#form-validation-result-container").html(validationMessage);
|
||||
|
||||
return;
|
||||
@@ -132,8 +132,8 @@
|
||||
var isAllDay = Model.SelectedAbsenceTime?.Start?.IsTimeZero() ?? false;
|
||||
var allDay = isAllDay ? "checked" : "";
|
||||
var isDisabled = isAllDay ? "disabled" : "";
|
||||
var startDate = Model.SelectedAbsenceTime?.Start?.ToString("dd.MM.yyyy");
|
||||
var endDate = Model.SelectedAbsenceTime?.End?.ToString("dd.MM.yyyy");
|
||||
var startDate = Model.SelectedAbsenceTime?.Start?.ToString("yyyy-MM-dd");
|
||||
var endDate = Model.SelectedAbsenceTime?.End?.ToString("yyyy-MM-dd");
|
||||
var startTime = Model.SelectedAbsenceTime?.Start?.ToString("HH:mm");
|
||||
var endTime = Model.SelectedAbsenceTime?.End?.ToString("HH:mm");
|
||||
|
||||
@@ -148,87 +148,63 @@
|
||||
}
|
||||
|
||||
<input type="hidden" name="customer-absence-time-oid" value="@Model.SelectedAbsenceTime?.AbsenceTimeOid" />
|
||||
|
||||
<div class="form-row d-none" id="form-validation-result-row">
|
||||
<div class="col-12">
|
||||
<div class="alert alert-danger mb-0" role="alert" id="form-validation-result-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* Neue Datums- und Zeitinputs *@
|
||||
<div class="form-row">
|
||||
<div class="col-12 d-none" id="form-validation-result-column">
|
||||
<div class="alert alert-danger" role="alert" id="form-validation-result-container"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="customer-absence-time-start-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
Startdatum
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" id="customer-absence-time-start-date" name="customer-absence-time-start-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-start-date-picker" data-toggle="datetimepicker" value="@startDate" />
|
||||
<div class="input-group-append" data-target="#customer-absence-time-start-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="customer-absence-time-end-date-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
Enddatum
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" id="customer-absence-time-end-date" name="customer-absence-time-end-date" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" value="@endDate" />
|
||||
<div class="input-group-append" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-calendar-alt"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mt-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
Startdatum
|
||||
</span>
|
||||
</div>
|
||||
<input type="date" value="@startDate" class="form-control" id="customer-absence-time-start-date-input" name="customer-absence-time-start-date" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 mt-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
Enddatum
|
||||
</span>
|
||||
</div>
|
||||
<input type="date" value="@endDate" class="form-control" id="customer-absence-time-end-date-input" name="customer-absence-time-end-date" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-lg">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="customer-absence-time-start-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
Von
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" autocomplete="on" @isDisabled id="customer-absence-time-start-time" name="customer-absence-time-start-time" class="form-control datetimepicker-input" data-target="#customer-absence-time-start-time-picker" value="@startTime" />
|
||||
<div class="input-group-append" data-target="#customer-absence-time-start-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-clock"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group date" id="customer-absence-time-end-time-picker" data-target-input="nearest">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
Bis
|
||||
</div>
|
||||
</div>
|
||||
<input type="text" autocomplete="on" @isDisabled id="customer-absence-time-end-time" name="customer-absence-time-end-time" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-time-picker" value="@endTime" />
|
||||
<div class="input-group-append" data-target="#customer-absence-time-end-time-picker" data-toggle="datetimepicker">
|
||||
<div class="input-group-text px-2">
|
||||
<i class="fas fa-clock"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 mt-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
Von
|
||||
</span>
|
||||
</div>
|
||||
<input type="time" class="form-control" id="customer-absence-time-start-time-input" name="customer-absence-time-start-time" @isDisabled value="@startTime" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 mt-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text">
|
||||
Bis
|
||||
</span>
|
||||
</div>
|
||||
<input type="time" class="form-control" id="customer-absence-time-end-time-input" name="customer-absence-time-end-time" @isDisabled value="@endTime" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@* /Neue Datums- und Zeitinputs *@
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="col-md py-1">
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" class="custom-control-input" name="customer-absence-time-allday-cb" id="customer-absence-time-allday-cb" onclick="toggleAllDay()" @allDay />
|
||||
<label class="custom-control-label" for="customer-absence-time-allday-cb">Ganztäglich</label>
|
||||
@@ -238,7 +214,7 @@
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="form-group mb-2 mt-0">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
{
|
||||
var start = relation.StartDate.HasValue ? $"{relation.StartDate.Value:dd.MM.yyyy}" : "";
|
||||
var end = relation.EndDate.HasValue ? $"{relation.EndDate.Value:dd.MM.yyyy}" : "";
|
||||
|
||||
var relationRole = relation.RelationRole?.DisplayName ?? string.Empty;
|
||||
|
||||
<div class="col mb-3">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
@@ -39,7 +42,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-secondary align-text-top">Rolle:</td>
|
||||
<td class="text-right align-text-top">@relation.RelationRole?.DisplayName</td>
|
||||
<td class="text-right align-text-top">@relationRole</td>
|
||||
</tr>
|
||||
@if(!string.IsNullOrWhiteSpace(start))
|
||||
{
|
||||
@@ -93,7 +96,7 @@
|
||||
@foreach(var teamRelation in Model.SelectedCustomer.RelatedTeams)
|
||||
{
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 row-cols-xl-4">
|
||||
<div class="col mb-3">
|
||||
<div class="col mb-0">
|
||||
<div class="card h-100">
|
||||
<div class="card-body">
|
||||
<table class="w-100">
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
<div class="col mt-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text prepend-input-group-text">
|
||||
<span class="input-group-text">
|
||||
Von
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@using BeWoPlanerMobil.Models;
|
||||
@using BeWoPlanerMobil.Service
|
||||
@using BeWoPlanerMobil.Util;
|
||||
|
||||
@model MainModel
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
@if(Model.NumberOfDokuTypes == 0)
|
||||
{
|
||||
<div class="form-group mt-2">
|
||||
<label for="mb-dokufeld">Dokumentation</label>
|
||||
<label for="mb-dokufeld-textarea">Dokumentation</label>
|
||||
<button type="button" class="btn btn-outline-bewo-dev btn-sm mb-restore-btn" onclick="restoreField('mb-dokufeld-textarea')">
|
||||
<i class="fas fa-recycle"></i>
|
||||
</button>
|
||||
|
||||
@@ -291,7 +291,7 @@
|
||||
}
|
||||
|
||||
@* Löschen-Button *@
|
||||
@if(MainModel.IsAllowedToDeleteServiceRecord(serviceRecord))
|
||||
@if(Model.IsAllowedToDeleteServiceRecord(serviceRecord))
|
||||
{
|
||||
<button type="button" class="btn btn-outline-danger" onclick="deleteServiceRecord(@serviceRecord.ServiceRecordOid)">
|
||||
<span class="fas fa-trash-alt"></span>
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
if(Model.IsCustomerAbsence)
|
||||
{
|
||||
<div class="container my-1 mb-0 mx-auto p-0 w-100 text-center bg-bewo-dev">
|
||||
<div class="container my-1 mb-0 mx-auto p-0 w-100 text-center">
|
||||
<span>
|
||||
<i class="fas fa-exclamation-triangle text-warning"></i>
|
||||
<div class="text-danger d-inline">Klient ist abwesend</div>
|
||||
@@ -256,7 +256,7 @@
|
||||
|
||||
using(Html.BeginForm("CreateOrUpdateServiceRecord", "Main", FormMethod.Post, new { id = "singleBookingForm" }))
|
||||
{
|
||||
<div>
|
||||
<div>
|
||||
@* ----- Einzelbuchung: Mitarbeiter ----- *@
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
@@ -382,7 +382,7 @@
|
||||
<div class="col mt-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text prepend-input-group-text">
|
||||
<span class="input-group-text">
|
||||
Von
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -29,43 +29,55 @@
|
||||
}
|
||||
|
||||
function textModuleOnClick(textModuleOid) {
|
||||
var focusedDokuFeld;
|
||||
let focusedDokuFeld;
|
||||
let prefix = "sb";
|
||||
|
||||
var dokufeldId = "#dokufeld";
|
||||
var dokuTextareaId = "#doku-textarea-";
|
||||
var textareaContainerId = "#doku_";
|
||||
|
||||
if("@Model.IsInMultiBookingMode".toLocaleLowerCase() === "true") {
|
||||
dokufeldId = "#mb-dokufeld";
|
||||
dokuTextareaId = "#mb-doku-textarea-";
|
||||
textareaContainerId = "#mb-doku_";
|
||||
if("@Model.IsInGroupBookingMode".toLocaleLowerCase() === "true") {
|
||||
prefix = "gb";
|
||||
}
|
||||
|
||||
if ("@Model.IsInMultiBookingMode".toLocaleLowerCase() === "true") {
|
||||
prefix = "mb";
|
||||
}
|
||||
|
||||
const dokufeldId = `#${prefix}-dokufeld`;
|
||||
const dokuTextareaId = `#${prefix}-doku-textarea-`;
|
||||
const textareaContainerId = `#${prefix}-doku_`;
|
||||
|
||||
$.get("@Url.Action("LoadCompleteTextbausteinByOid")", { pTextbausteinOid: textModuleOid }).done(function(textModuleText) {
|
||||
if($(dokufeldId).length > 0) {
|
||||
focusedDokuFeld = $(dokufeldId);
|
||||
} else {
|
||||
const numberOfDokutypes = getNumberOfDokutypes();
|
||||
if($(dokufeldId).length > 0) {
|
||||
focusedDokuFeld = $(dokufeldId);
|
||||
} else {
|
||||
const numberOfDokutypes = getNumberOfDokutypes();
|
||||
|
||||
for(let i = 0; i < numberOfDokutypes; i++) {
|
||||
const currentElement = $(`#doku_${i}`);
|
||||
for(let i = 0; i < numberOfDokutypes; i++) {
|
||||
const currentElement = $(`#${prefix}-doku_${i}`);
|
||||
|
||||
if(currentElement.css("display") !== "none") {
|
||||
focusedDokuFeld = $(dokuTextareaId + i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(currentElement.css("display") !== "none") {
|
||||
focusedDokuFeld = $(dokuTextareaId + i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const cursorPosition = focusedDokuFeld.prop("selectionStart");
|
||||
const v = focusedDokuFeld.val();
|
||||
const textBefore = v.substring(0, cursorPosition);
|
||||
const textAfter = v.substring(cursorPosition, v.length);
|
||||
const cursorPosition = focusedDokuFeld.prop("selectionStart");
|
||||
const v = focusedDokuFeld.val();
|
||||
|
||||
focusedDokuFeld.val(textBefore + textModuleText + textAfter);
|
||||
focusedDokuFeld.trigger("change");
|
||||
let wholeText = "";
|
||||
|
||||
$("#textbausteine-popup").modal("hide");
|
||||
if(cursorPosition === undefined || v === undefined) {
|
||||
wholeText = textModuleText;
|
||||
} else {
|
||||
const textBefore = v.substring(0, cursorPosition);
|
||||
const textAfter = v.substring(cursorPosition, v.length);
|
||||
|
||||
wholeText = textBefore + textModuleText + textAfter;
|
||||
}
|
||||
|
||||
focusedDokuFeld.val(wholeText);
|
||||
focusedDokuFeld.trigger("change");
|
||||
|
||||
$("#textbausteine-popup").modal("hide");
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -92,6 +92,12 @@
|
||||
new Script { ExtensionSuite = ExtensionSuite.Icons },
|
||||
new Script { ExtensionType = ExtensionType.WebDocumentViewer }
|
||||
)
|
||||
|
||||
<style type="text/css">
|
||||
input::-webkit-date-and-time-value {
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
class LocalBeWoStorage {
|
||||
|
||||
Reference in New Issue
Block a user