Bugs gefixt.
Großes Esszett wird durch das kleine ersetzt; es kommt sonst zu einer Ausnahme.
Termine, die auf die alte Art und Weise in die Zeiterfassung übertragen wurden, werden wieder als übertragen angezeigt.
This commit is contained in:
2023-03-14 16:12:52 +01:00
parent 5f156254f6
commit 9d3daf7df7
9 changed files with 92 additions and 81 deletions

View File

@@ -27,7 +27,7 @@
<Use64BitIISExpress>false</Use64BitIISExpress>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TypeScriptToolsVersion>3.7</TypeScriptToolsVersion>
<TypeScriptToolsVersion>4.3</TypeScriptToolsVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

View File

@@ -22,6 +22,7 @@
<WebStackScaffolding_IsAsyncSelected>False</WebStackScaffolding_IsAsyncSelected>
<View_SelectedScaffolderID>MvcViewScaffolder</View_SelectedScaffolderID>
<View_SelectedScaffolderCategoryPath>root/Common/MVC/View</View_SelectedScaffolderCategoryPath>
<ToolsVersionPromptShown>3.7</ToolsVersionPromptShown>
</PropertyGroup>
<ProjectExtensions>
<VisualStudio>

View File

@@ -10,6 +10,7 @@ using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using DevExpress.XtraReports.UI;
namespace BeWoPlanerMobil.Controllers
@@ -197,7 +198,7 @@ namespace BeWoPlanerMobil.Controllers
if(isAllowedToEdit && Model.SelectedCustomer != null)
{
Model.SelectedCustomer.Notice = newNotice;
Model.SelectedCustomer.Notice = newNotice?.RemoveUppercaseEsszett();
var customerOid = CustomerService.UpdateCustomer(Model.SelectedCustomer);
Model.SelectedCustomer = CustomerService.LoadCustomer(customerOid);
@@ -257,29 +258,27 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
// ToDo: Stammdaten aus formCollection holen, validieren und Customer-Objekt aktualisieren.
var firstname = formCollection["vorname"]?.RemoveUppercaseEsszett();
var lastname = formCollection["nachname"]?.RemoveUppercaseEsszett();
var geburtdatum = formCollection["geburtstag"]?.RemoveUppercaseEsszett();
var geschlecht = formCollection["geschlecht"]?.RemoveUppercaseEsszett();
var firstname = formCollection["vorname"];
var lastname = formCollection["nachname"];
var geburtdatum = formCollection["geburtstag"];
var geschlecht = formCollection["geschlecht"];
var adresszusatz = formCollection["adresszusatz"]?.RemoveUppercaseEsszett();
var street = formCollection["strasse"]?.RemoveUppercaseEsszett();
var postalCode = formCollection["plz"]?.RemoveUppercaseEsszett();
var city = formCollection["ort"]?.RemoveUppercaseEsszett();
var adresszusatz = formCollection["adresszusatz"];
var street = formCollection["strasse"];
var postalCode = formCollection["plz"];
var city = formCollection["ort"];
var nameInvoiceAddress = formCollection["name-rechnungsadresse"]?.RemoveUppercaseEsszett();
var streetInvoiceAddress = formCollection["strasse-rechnungsadresse"]?.RemoveUppercaseEsszett();
var postalCodeInvoiceAddress = formCollection["plz-rechnungsadresse"]?.RemoveUppercaseEsszett();
var cityInvoiceAddress = formCollection["ort-rechnungsadresse"]?.RemoveUppercaseEsszett();
var nameInvoiceAddress = formCollection["name-rechnungsadresse"];
var streetInvoiceAddress = formCollection["strasse-rechnungsadresse"];
var postalCodeInvoiceAddress = formCollection["plz-rechnungsadresse"];
var cityInvoiceAddress = formCollection["ort-rechnungsadresse"];
var mobile = formCollection["handy"]?.RemoveUppercaseEsszett();
var phone = formCollection["telefon"]?.RemoveUppercaseEsszett();
var fax = formCollection["fax"]?.RemoveUppercaseEsszett();
var eMailAddress = formCollection["mail"]?.RemoveUppercaseEsszett();
var mobile = formCollection["handy"];
var phone = formCollection["telefon"];
var fax = formCollection["fax"];
var eMailAddress = formCollection["mail"];
var notice = formCollection["notiz"];
var notice = formCollection["notiz"]?.RemoveUppercaseEsszett();
var customer = Model.SelectedCustomer;

View File

@@ -935,10 +935,10 @@ namespace BeWoPlanerMobil.Controllers
int.TryParse(collection[FormCollectionConstants.DurationKey], out dauer);
}
var doku2 = collection[FormCollectionConstants.Dokumentation2Key];
var doku3 = collection[FormCollectionConstants.Dokumentation3Key];
var doku4 = collection[FormCollectionConstants.Dokumentation4Key];
var doku5 = collection[FormCollectionConstants.Dokumentation5Key];
var doku2 = collection[FormCollectionConstants.Dokumentation2Key]?.RemoveUppercaseEsszett();
var doku3 = collection[FormCollectionConstants.Dokumentation3Key]?.RemoveUppercaseEsszett();
var doku4 = collection[FormCollectionConstants.Dokumentation4Key]?.RemoveUppercaseEsszett();
var doku5 = collection[FormCollectionConstants.Dokumentation5Key]?.RemoveUppercaseEsszett();
var zeitenFeld = new DateTime[2];
@@ -1039,12 +1039,12 @@ namespace BeWoPlanerMobil.Controllers
Model.NewServiceRecord.ServiceRecordFormat = ServiceRecordFormate.ZeiterfassungMitEndDatum;
}
Model.NewServiceRecord.Notice = string.IsNullOrEmpty(doku1) ? null : doku1;
Model.NewServiceRecord.Notice = string.IsNullOrEmpty(doku1) ? null : doku1?.RemoveUppercaseEsszett();
Model.NewServiceRecord.Notice2 = string.IsNullOrEmpty(doku2) ? null : doku2;
Model.NewServiceRecord.Notice3 = string.IsNullOrEmpty(doku3) ? null : doku3;
Model.NewServiceRecord.Notice4 = string.IsNullOrEmpty(doku4) ? null : doku4;
Model.NewServiceRecord.Notice5 = string.IsNullOrEmpty(doku5) ? null : doku5;
Model.NewServiceRecord.Notice2 = string.IsNullOrEmpty(doku2) ? null : doku2?.RemoveUppercaseEsszett();
Model.NewServiceRecord.Notice3 = string.IsNullOrEmpty(doku3) ? null : doku3?.RemoveUppercaseEsszett();
Model.NewServiceRecord.Notice4 = string.IsNullOrEmpty(doku4) ? null : doku4?.RemoveUppercaseEsszett();
Model.NewServiceRecord.Notice5 = string.IsNullOrEmpty(doku5) ? null : doku5?.RemoveUppercaseEsszett();
var serviceDescOid = 0L;
@@ -1206,11 +1206,11 @@ namespace BeWoPlanerMobil.Controllers
CustomerCount = personCount,
StartDate = Model.NewServiceRecord.Start,
EndDate = Model.NewServiceRecord.End,
Notice = Model.NewServiceRecord.Notice,
Notice2 = Model.NewServiceRecord.Notice2,
Notice3 = Model.NewServiceRecord.Notice3,
Notice4 = Model.NewServiceRecord.Notice4,
Notice5 = Model.NewServiceRecord.Notice5,
Notice = Model.NewServiceRecord.Notice?.RemoveUppercaseEsszett(),
Notice2 = Model.NewServiceRecord.Notice2?.RemoveUppercaseEsszett(),
Notice3 = Model.NewServiceRecord.Notice3?.RemoveUppercaseEsszett(),
Notice4 = Model.NewServiceRecord.Notice4?.RemoveUppercaseEsszett(),
Notice5 = Model.NewServiceRecord.Notice5?.RemoveUppercaseEsszett(),
ServiceRecordList = newDCList
};
@@ -1309,22 +1309,22 @@ namespace BeWoPlanerMobil.Controllers
Model.NewServiceRecord.RoundedDuration = roundedDuration;
Model.NewServiceRecord.GroupRoundedDuration = groupDuration;
group.Notice = Model.NewServiceRecord.Notice;
group.Notice2 = Model.NewServiceRecord.Notice2;
group.Notice3 = Model.NewServiceRecord.Notice3;
group.Notice4 = Model.NewServiceRecord.Notice4;
group.Notice5 = Model.NewServiceRecord.Notice5;
group.Notice = Model.NewServiceRecord.Notice?.RemoveUppercaseEsszett();
group.Notice2 = Model.NewServiceRecord.Notice2?.RemoveUppercaseEsszett();
group.Notice3 = Model.NewServiceRecord.Notice3?.RemoveUppercaseEsszett();
group.Notice4 = Model.NewServiceRecord.Notice4?.RemoveUppercaseEsszett();
group.Notice5 = Model.NewServiceRecord.Notice5?.RemoveUppercaseEsszett();
group.RoundedDuration = groupDuration;
group.StartDate = Model.NewServiceRecord.Start;
group.EndDate = Model.NewServiceRecord.End;
foreach(var item in group.ServiceRecordList)
{
item.Notice = Model.NewServiceRecord.Notice;
item.Notice2 = Model.NewServiceRecord.Notice2;
item.Notice3 = Model.NewServiceRecord.Notice3;
item.Notice4 = Model.NewServiceRecord.Notice4;
item.Notice5 = Model.NewServiceRecord.Notice5;
item.Notice = Model.NewServiceRecord.Notice?.RemoveUppercaseEsszett();
item.Notice2 = Model.NewServiceRecord.Notice2?.RemoveUppercaseEsszett();
item.Notice3 = Model.NewServiceRecord.Notice3?.RemoveUppercaseEsszett();
item.Notice4 = Model.NewServiceRecord.Notice4?.RemoveUppercaseEsszett();
item.Notice5 = Model.NewServiceRecord.Notice5?.RemoveUppercaseEsszett();
item.End = Model.NewServiceRecord.End;
item.Start = Model.NewServiceRecord.Start;
item.RoundedDuration = roundedDuration;
@@ -2539,11 +2539,11 @@ namespace BeWoPlanerMobil.Controllers
return;
}
ResetModel();
Model.IsInGroupBookingMode = bookingMode == BookingMode.GroupBookingMode;
Model.IsInMultiBookingMode = bookingMode == BookingMode.MultiBookingMode;
ResetModel();
if(bookingMode == BookingMode.GroupBookingMode)
{
ResetMultiBookingMode();
@@ -3302,7 +3302,7 @@ namespace BeWoPlanerMobil.Controllers
{
Employee = employee,
Customer = customer,
Notice = notice,
Notice = notice?.RemoveUppercaseEsszett(),
InsertedOn = DateTime.Now,
InsUser = employee?.ToString(),
IsCreatedInMobileClient = true
@@ -3351,6 +3351,9 @@ namespace BeWoPlanerMobil.Controllers
return Logout();
}
TempData[TempDataConstants.IsInTransferModeKey] = null;
TempData[TempDataConstants.AppointmentListItemKey] = null;
try
{
var isInMultiBookingMode = "true,false" == formCollection[FormCollectionConstants.IsInMultiBookingModeKey];

View File

@@ -219,20 +219,20 @@ namespace BeWoPlanerMobil.Controllers
{
AllDay = appointment.AllDay,
CustomerList = appointment.CustomerList,
Description = appointment.Description,
Description = appointment.Description?.RemoveUppercaseEsszett(),
EmployeeList = appointment.EmployeeList,
EndDate = app.Start.AddMinutes(duration),
FormerBookingSequenceOid = appointment.FormerBookingSequenceOid,
IsPrivate = appointment.IsPrivate,
LabelKey = appointment.LabelKey,
Location = appointment.Location,
Location = appointment.Location?.RemoveUppercaseEsszett(),
Originator = appointment.Originator,
RecurrenceInfo = app.RecurrenceInfo.ToXml(),
RecurrenceIndex = index,
ReminderInfo = appointment.ReminderInfo,
ResourceList = appointment.ResourceList,
StartDate = app.Start,
Subject = appointment.Subject ?? "",
Subject = appointment.Subject?.RemoveUppercaseEsszett() ?? "",
Type = (int) app.Type,
ServiceRecordList = appointment.ServiceRecordList,
SupportConceptList = appointment.SupportConceptList
@@ -271,6 +271,10 @@ namespace BeWoPlanerMobil.Controllers
var location = formCollection[FormCollectionConstants.AppointmentLocationKey];
var notice = formCollection[FormCollectionConstants.AppointmentNoticeKey];
subject = subject.RemoveUppercaseEsszett();
location = location.RemoveUppercaseEsszett();
notice = notice.RemoveUppercaseEsszett();
var isPrivate = formCollection[FormCollectionConstants.AppointmentIsPrivateKey] == "true,false";
var allDay = formCollection[FormCollectionConstants.AppointmentIsAllDayKey] == "true,false";
@@ -325,6 +329,7 @@ namespace BeWoPlanerMobil.Controllers
appointmentToInsert.CustomerList = Model.SelectedCustomers;
appointmentToInsert.ResourceList = Model.SelectedResources ?? new List<ResourceDC>();
appointmentToInsert.SupportConceptList = isNew ? new List<CompactSupportConceptDC>() : appointmentToInsert.SupportConceptList;
appointmentToInsert.ServiceRecordList = isNew ? new List<ServiceRecordDC>() : appointmentToInsert.ServiceRecordList;
appointmentToInsert.EndDate = endDate;
appointmentToInsert.StartDate = startDate;
appointmentToInsert.Subject = subject;
@@ -1045,7 +1050,7 @@ namespace BeWoPlanerMobil.Controllers
CompletedNotice = schedulerAppointment.CompletedNotice,
CompletedUser = schedulerAppointment.CompletedUser,
CustomerList = schedulerAppointment.CustomerList ?? new List<CompactCustomerDC>(),
Description = schedulerAppointment.Description,
Description = schedulerAppointment.Description?.RemoveUppercaseEsszett(),
DueDate = schedulerAppointment.DueDate,
FormerBookingSequenceOid = schedulerAppointment.FormerBookingSequenceOid,
FormerTaskOid = schedulerAppointment.FormerTaskOid,
@@ -1054,13 +1059,13 @@ namespace BeWoPlanerMobil.Controllers
IsTask = schedulerAppointment.IsTask,
IsTeilnahmeBestaetigung = schedulerAppointment.IsTeilnahmeBestaetigung,
LabelKey = schedulerAppointment.LabelKey,
Location = schedulerAppointment.Location,
Location = schedulerAppointment.Location?.RemoveUppercaseEsszett(),
Originator = schedulerAppointment.Originator,
RecurrenceInfo = recurrenceInfo,
ReminderInfo = schedulerAppointment.ReminderInfo,
ResourceList = schedulerAppointment.ResourceList ?? new List<ResourceDC>(),
Status = schedulerAppointment.Status,
Subject = schedulerAppointment.Subject,
Subject = schedulerAppointment.Subject?.RemoveUppercaseEsszett() ?? string.Empty,
SupportConceptList = schedulerAppointment.SupportConceptList ?? new List<CompactSupportConceptDC>(),
TaskDescription = schedulerAppointment.TaskDescription,
Type = type

View File

@@ -65,7 +65,7 @@ namespace BeWoPlanerMobil.Util
public bool HasEmployeesCustomersOrResources => !string.IsNullOrWhiteSpace(EmployeeListInfo + CustomerListInfo + ResourceListInfo);
public bool AllDay { get; }
public bool HasServiceRecord => SchedulerAppointment?.ServiceRecordList?.Any() ?? false;
public bool HasServiceRecord => (SchedulerAppointment?.ServiceRecordList?.Any() ?? false) || (SchedulerAppointment?.HasServiceRecordEntry ?? false);
public string Subject { get; }

View File

@@ -11,8 +11,13 @@
<script defer src="~/Content/fontawesome/all.min.js"></script>
<!-- jquery first, then Popper.js, then Bootstrap JS --><!-- jquery first, then Popper.js, then Bootstrap JS -->
@*<script src="@Url.Content("~/Scripts/jquery-3.6.0.min.js")" type="text/javascript"></script>*@
<!--
Einbindereihenfolge der Skripte für Bootstrap:
1. jQuery
2. Popper
3. Bootstrap
-->
<script src="@Url.Content("~/node_modules/jquery/dist/jquery.min.js")"></script>
<script src="@Url.Content("~/node_modules/jquery-ui/dist/jquery-ui.min.js")"></script>
<script src="@Url.Content("~/node_modules/jquery-validation/dist/jquery.validate.min.js")"></script>
@@ -23,24 +28,19 @@
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr/supplemental.js")"></script>
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr/unresolved.js")"></script>
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr.js")"></script>
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr/event.js")"></script>
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr/supplemental.js")"></script>
<script src="@Url.Content("~/node_modules/cldrjs/dist/cldr/unresolved.js")"></script>
<script src="@Url.Content("~/node_modules/globalize/dist/globalize.js")"></script>
<script src="@Url.Content("~/node_modules/globalize/dist/globalize/message.js")"></script>
<script src="@Url.Content("~/node_modules/globalize/dist/globalize/number.js")"></script>
<script src="@Url.Content("~/node_modules/globalize/dist/globalize/currency.js")"></script>
<script src="@Url.Content("~/node_modules/globalize/dist/globalize/date.js")"></script>
<script src="@Url.Content("~/node_modules/ace-builds/src-min/ace.js")"></script>
<script src="@Url.Content("~/node_modules/ace-builds/src-min/ext-language_tools.js")"></script>
<script src="@Url.Content("~/node_modules/ace-builds/src-min/theme-dreamweaver.js")"></script>
<script src="@Url.Content("~/node_modules/ace-builds/src-min/theme-ambiance.js")"></script>
<link href="@Url.Content("~/node_modules/jquery-ui/dist/themes/base/jquery-ui.min.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/dx.all.js")"></script>
<script src="@Url.Content("~/node_modules/popper.js/dist/umd/popper.js")"></script>
@@ -67,7 +67,7 @@
<script src="~/Scripts/utils/service-record-time-calc.js?v=1.18"></script>
<script src="~/Scripts/utils/js-helper.js?v=1.18"></script>
<script src="~/Scripts/utils/logging.js?v=1.18"></script>
@Html.DevExpress().GetStyleSheets(
new StyleSheet { ExtensionSuite = ExtensionSuite.Report }
)
@@ -251,8 +251,6 @@
}
}
</script>
@Styles.Render("~/Content/DevExtremeBundle")
@Scripts.Render("~/Scripts/DevExtremeBundle")
</head>
<body>
@@ -280,17 +278,17 @@
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
@*@if(Html.IsInDebugMode())
{
using(Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-hand-middle-finger"></i>
Scheduler
</button>
</li>
}
}*@
{
using(Html.BeginForm("RedirectToDevExpressScheduler", "Main", FormMethod.Post))
{
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showSpinner()">
<i class="fas fa-hand-middle-finger"></i>
Scheduler
</button>
</li>
}
}*@
@if(AbstractModel.IsAllowedToSeeCustomers)
{
@@ -346,7 +344,7 @@
<li class="nav-item">
<button class="btn btn-link text-light no-underline" onclick="showAboutPopup()">
<i class="fas fa-balance-scale text-primary"></i>
Über
&Uuml;ber
</button>
</li>

View File

@@ -220,7 +220,7 @@
</namespaces>
</pages>
<httpHandlers>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<add type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" validate="false" />
<add validate="false" verb="GET,POST" path="DXXRDV.axd" type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<add validate="false" verb="GET,POST" path="DXXRD.axd" type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />

View File

@@ -79,5 +79,10 @@ namespace BS.Shared.Extensions
throw new ArgumentException("Not found.", "description");
}
public static string RemoveUppercaseEsszett(this string pString)
{
return pString?.Replace("ẞ", "ß");
}
}
}