Server:
Reines SQL holt die Unterschriftenwerte aus der ServiceRecordHistory-Tabelle
MoK:
Abwesenheiten bei Klienten angefangen. Nur im Debug-Modus sichtbar
This commit is contained in:
@@ -5090,6 +5090,9 @@
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Customer\CustomerBargeldkassen.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Customer\CustomerAbsenceTimeFormPartial.cshtml" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
|
||||
@@ -94,6 +94,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
{
|
||||
Model.ReportTypes = new List<CustomerReportType> { CustomerReportType.Medikamentenliste, CustomerReportType.Bedarfsmedikation, CustomerReportType.Historie };
|
||||
}
|
||||
|
||||
Model.AllAbsenceReasons = AbstractModel.HasRightToViewCustomerAbsenceTimes ? CustomerService.GetAllAbsenceReasons() : new List<AbsenceReasonDC>();
|
||||
}
|
||||
|
||||
[Authorize]
|
||||
|
||||
@@ -8,6 +8,7 @@ using BeWoPlanerMobil.Models;
|
||||
using BeWoPlanerMobil.Service;
|
||||
using BeWoPlanerMobil.Util;
|
||||
using BS.Shared;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
|
||||
namespace BeWoPlanerMobil.Controllers
|
||||
@@ -99,7 +100,6 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
Model.Queries = QueryService.GetAllQueriesOfType(QueryType.Public);
|
||||
|
||||
|
||||
return View(Model);
|
||||
}
|
||||
|
||||
@@ -121,6 +121,8 @@ namespace BeWoPlanerMobil.Controllers
|
||||
|
||||
var selectedQuery = Model.Queries.FirstOrDefault(query => query.Oid.Equals(reportOid.Value));
|
||||
|
||||
var queryParameter = selectedQuery?.Parameter ?? new List<QueryParamDC>();
|
||||
|
||||
if (selectedQuery is null)
|
||||
{
|
||||
Model.Report = null;
|
||||
@@ -137,12 +139,13 @@ namespace BeWoPlanerMobil.Controllers
|
||||
}
|
||||
|
||||
QueryService.PrepareQueryReport(test, dcid);
|
||||
|
||||
Model.Report = Model.ReportCreator.CreateQueryReport(selectedQuery.Oid, dcid);
|
||||
var queryReport = Model.ReportCreator.CreateQueryReport(selectedQuery.Oid, dcid);
|
||||
Model.Report = queryReport;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e);
|
||||
TempData["ErrorMessage"] = e.Message;
|
||||
}
|
||||
|
||||
return PartialView("DocumentWebViewerPartial", Model);
|
||||
|
||||
@@ -133,5 +133,34 @@ namespace BeWoPlanerMobil.Models
|
||||
public string ReportName { get; set; }
|
||||
|
||||
public List<BargeldkassenDC> Bargeldkassen { get; set; }
|
||||
|
||||
[Display(Name = "Kategorie")]
|
||||
public long? SelectedAbsenceReason { get; set; }
|
||||
|
||||
public List<AbsenceReasonDC> AllAbsenceReasons { get; set; }
|
||||
|
||||
public List<SelectListItem> AbsenceReasonItems
|
||||
{
|
||||
get
|
||||
{
|
||||
var result = new List<SelectListItem>();
|
||||
|
||||
foreach(var absenceReason in AllAbsenceReasons)
|
||||
{
|
||||
if(absenceReason.AbsenceReasonOid is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
result.Add(new SelectListItem
|
||||
{
|
||||
Value = absenceReason.AbsenceReasonOid.Value.ToString(),
|
||||
Text = absenceReason.Description
|
||||
});
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -977,7 +977,7 @@
|
||||
@if(Html.IsInDebugMode() && AbstractModel.HasRightToViewCustomerAbsenceTimes)
|
||||
{
|
||||
<div class="col-12 my-3">
|
||||
<div class="card w-100 h-100">
|
||||
<div class="card w-100 h-100 bg-bewo-dev">
|
||||
<div class="card-header" onclick="cardHeaderClick('#chevron-customer-absencetimes', '#collapse-customer-absencetimes')">
|
||||
<div class="d-inline-flex">
|
||||
<i class="fas fa-chevron-down h-100 text-bewo-customer-card-header" id="chevron-customer-absencetimes"></i>
|
||||
@@ -988,8 +988,11 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ToDo: Formular-Partial anlegen! -->
|
||||
<div class="collapse" id="collapse-customer-absencetimes">
|
||||
<div class="card-body">
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#customer-absence-times-form-popup" onclick="calcAbsenceTimePrependWidth()"></button>
|
||||
<hr />
|
||||
@Html.Partial("CustomerAbsenceTimePartial", Model)
|
||||
</div>
|
||||
</div>
|
||||
@@ -1002,6 +1005,30 @@
|
||||
}
|
||||
</div>
|
||||
|
||||
@if(Html.IsInDebugMode() && AbstractModel.HasRightToViewCustomerAbsenceTimes)
|
||||
{
|
||||
<!-- ToDo: Popup für Abwesenheitsformular -->
|
||||
<div class="modal" tabindex="-1" role="dialog" id="customer-absence-times-form-popup">
|
||||
<div class="modal-dialog modal-lg" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Abwesenheit hinzufügen</h5>
|
||||
<button class="close" type="button" data-dismiss="modal" aria-label="close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body" id="modal-body">
|
||||
@Html.Partial("CustomerAbsenceTimeFormPartial", Model)
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-primary" type="button" data-dismiss="modal" onclick="submitCustomerAbsenceTimesForm()">OK</button>
|
||||
<button class="btn btn-secondary" type="button" data-dismiss="modal" onclick="clearCustomerAbsenceTimesForm()">Abbrechen</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if(!(Model?.Report is null) && Html.IsInDebugMode())
|
||||
{
|
||||
<div class="modal modal-fullscreen" tabindex="-1" role="dialog" id="report-popup">
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
@using BeWoPlanerMobil.Models;
|
||||
@using BeWoPlanerMobil.Util
|
||||
@using BS.Shared
|
||||
|
||||
@model CustomerModel
|
||||
|
||||
@*
|
||||
ToDos:
|
||||
1. Formularvalidierung mittels Klassen und Bootstrap
|
||||
2. Ganztagsfunktionalität einbauen
|
||||
3. Controller-Funktionen implementieren:
|
||||
1. Bearbeiten einer existierenden Abwesenheit
|
||||
2. Anlegen einer neuen Abwesenheit
|
||||
*@
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$("#customer-absence-time-start-date-picker, #customer-absence-time-end-date-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "L"
|
||||
});
|
||||
|
||||
$("#customer-absence-time-start-time-picker, #customer-absence-time-end-time-picker").datetimepicker({
|
||||
locale: "de",
|
||||
format: "LT"
|
||||
});
|
||||
});
|
||||
|
||||
var initialDatePrependWidth = 0;
|
||||
function calcAbsenceTimePrependWidth() {
|
||||
try {
|
||||
setTimeout(function() {
|
||||
if (initialDatePrependWidth <= 0 && $.isNumeric(getMaxWidth("customer-absence-time-prepend"))) {
|
||||
initialDatePrependWidth = getMaxWidth("customer-absence-time-prepend");
|
||||
}
|
||||
|
||||
if (initialDatePrependWidth <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
logInfo2(`max width: ${getMaxWidth("customer-absence-time-prepend")}`);
|
||||
|
||||
$(".customer-absence-time-prepend").width(getMaxWidth("customer-absence-time-prepend"));
|
||||
});
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function submitCustomerAbsenceTimesForm() {
|
||||
try {
|
||||
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
|
||||
function clearCustomerAbsenceTimesForm() {
|
||||
try {
|
||||
|
||||
} catch (error) {
|
||||
showErrorPopup(error);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="form-row">
|
||||
<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="Datum" class="form-control datetimepicker-input" data-target="#customer-absence-time-start-date-picker" data-toggle="datetimepicker" />
|
||||
<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="Enddatum" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-date-picker" data-toggle="datetimepicker" />
|
||||
<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>
|
||||
|
||||
<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" id="customer-absence-time-start-time" name="Start" class="form-control datetimepicker-input" data-target="#customer-absence-time-start-time-picker" />
|
||||
<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" id="customer-absence-time-end-time" name="Ende" class="form-control datetimepicker-input" data-target="#customer-absence-time-end-time-picker" />
|
||||
<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>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="custom-control custom-checkbox custom-control-inline">
|
||||
<input type="checkbox" class="custom-control-input" name="allday-cb" id="customer-absence-time-allday-cb" />
|
||||
<label class="custom-control-label" for="customer-absence-time-allday-cb">Ganztäglich</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
Kategorie
|
||||
</div>
|
||||
</div>
|
||||
@Html.DropDownListFor(m => m.SelectedAbsenceReason, Model.AbsenceReasonItems, new { @class = "custom-select", Id = "absence-reason-select" })
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group mb-1">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text customer-absence-time-prepend">
|
||||
Erläuterung
|
||||
</div>
|
||||
</div>
|
||||
<textarea class="form-control" id="notice" name="Notice" maxlength="1024" ></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1 +1,22 @@
|
||||
<p>Hier wird für Sie gebaut!</p>
|
||||
@using BeWoPlanerMobil.Models;
|
||||
@using BS.Shared.Extensions
|
||||
|
||||
@model CustomerModel
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
</script>
|
||||
|
||||
@foreach(var absenceTime in Model.SelectedCustomer.AbsenceTimes)
|
||||
{
|
||||
if(absenceTime.Start is null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@*
|
||||
ToDo: Startdatum und -zeit, Enddatum und -zeit, Kategorie, Erläuterung
|
||||
*@
|
||||
|
||||
|
||||
}
|
||||
@@ -216,7 +216,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Einzelbuchung: Startdatum -->
|
||||
<!-- Einzelbuchung: Startdatum und gegebenenfalls Enddatum -->
|
||||
<div class="form-row">
|
||||
<div class="col-md">
|
||||
<div class="form-group my-2">
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@using BeWoPlanerMobil.Util
|
||||
@model BeWoPlanerMobil.Models.ReportViewerModel
|
||||
@model BeWoPlanerMobil.Models.ReportViewerModel
|
||||
|
||||
<script>
|
||||
$(window).ready(function () {
|
||||
@@ -17,6 +16,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
// ToDo: Nicht hier laden, sondern nur, wenn keine weiteren Variablen benötigt werden!
|
||||
function loadCustomReport() {
|
||||
try {
|
||||
var selectedReportOid = $("#msk-customReportSelect").val();
|
||||
@@ -50,12 +50,12 @@
|
||||
<div class="container-fluid my-3">
|
||||
<div class="row h-auto" id="abc-def">
|
||||
<div class="col-sm-12 col-md-4 col-lg-4 col-xl-3">
|
||||
@*<div class="row">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
@Html.DropDownListFor(model => model.SelectedReportType, Model.ReportTypes, new { @class = "custom-select", onchange = "updateForm()", id = "msk-report-type-select" })
|
||||
<hr />
|
||||
</div>
|
||||
</div>*@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col" id="msk-form-col">
|
||||
@Html.Partial("ReportViewerFormPartial", Model)
|
||||
@@ -69,5 +69,4 @@
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,9 +1,7 @@
|
||||
@using BeWoPlanerMobil.Models
|
||||
@using BeWoPlanerMobil.Util
|
||||
@model BeWoPlanerMobil.Models.ReportViewerModel
|
||||
|
||||
<script type="text/javascript">
|
||||
// ToDo:
|
||||
function reportFilterOnChange() {
|
||||
try {
|
||||
//team oder mitarbeiter
|
||||
|
||||
@@ -494,7 +494,6 @@
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
@RenderBody()
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -5515,13 +5515,25 @@ namespace BeWo.Data.Access
|
||||
return list.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// VERALTET! FindMostRecentSignatureStatusInfoByServiceRecordOid benutzen!
|
||||
/// </summary>
|
||||
/// <param name="serviceRecordOid"></param>
|
||||
/// <returns></returns>
|
||||
public ServiceRecordHistory FindMostRecentServiceRecordHistoryEntryByServiceRecordOid(long serviceRecordOid)
|
||||
{
|
||||
var criteira = CreateCriteria<ServiceRecordHistory>()
|
||||
.Add(Restrictions.Eq(nameof(ServiceRecordHistory.ServiceRecordOid), serviceRecordOid))
|
||||
.AddOrder(Order.Desc(nameof(ServiceRecordHistory.InsTs)));
|
||||
try
|
||||
{
|
||||
var criteira = CreateCriteria<ServiceRecordHistory>()
|
||||
.Add(Restrictions.Eq(nameof(ServiceRecordHistory.ServiceRecordOid), serviceRecordOid))
|
||||
.AddOrder(Order.Desc(nameof(ServiceRecordHistory.InsTs)));
|
||||
|
||||
return criteira.List<ServiceRecordHistory>().FirstOrDefault();
|
||||
return criteira.List<ServiceRecordHistory>().FirstOrDefault();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<long, ServiceRecordHistory> FindMostRecentServiceRecordHistoryEntryByServiceRecords(List<long> serviceRecordOids)
|
||||
@@ -5603,5 +5615,32 @@ namespace BeWo.Data.Access
|
||||
|
||||
return criteria.List<ServiceRecord>().ToList();
|
||||
}
|
||||
|
||||
public SignatureStateInfoFromServiceRecordHistoryEntry FindMostRecentSignatureStatusInfoByServiceRecordOid(long serviceRecordOid)
|
||||
{
|
||||
var sqlQuery = Session.CreateSQLQuery($"SELECT * FROM ServiceRecordHistory WHERE ServiceRecordOid = {serviceRecordOid} ORDER BY InsTs LIMIT 1")
|
||||
.AddScalar("CustomerConfirmationReceiptSignatureStateType", NHibernateUtil.Int32)
|
||||
.AddScalar("EmployeeConfirmationReceiptSignatureStateType", NHibernateUtil.Int32)
|
||||
.AddScalar("ServiceRecordSignatureStateType", NHibernateUtil.Int32)
|
||||
.AddScalar("CustomerConfirmationReceiptSignatureOid", NHibernateUtil.Int64)
|
||||
.AddScalar("EmployeeConfirmationReceiptSignatureOid", NHibernateUtil.Int64);
|
||||
|
||||
var objectsList = sqlQuery.List<object[]>().ToList();
|
||||
|
||||
var row = objectsList.FirstOrDefault();
|
||||
|
||||
if(row is null || row.Length != 5)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var customerConfirmationReceiptSignatureState = (SignatureStateType)row[0];
|
||||
var employeeConfirmationReceiptSignatureState = (SignatureStateType)row[1];
|
||||
var serviceRecordSignatureStateType = (SignatureStateType)row[2];
|
||||
var customerConfirmationReceiptSignatureOid = (long?)row[3];
|
||||
var employeeConfirmationReceiptSignatureOid = (long?)row[4];
|
||||
|
||||
return new SignatureStateInfoFromServiceRecordHistoryEntry(customerConfirmationReceiptSignatureState, employeeConfirmationReceiptSignatureState, serviceRecordSignatureStateType, customerConfirmationReceiptSignatureOid, employeeConfirmationReceiptSignatureOid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -382,6 +382,7 @@
|
||||
<Compile Include="UpdInsInterceptor.cs" />
|
||||
<Compile Include="Utils\AppointmentSearchResult.cs" />
|
||||
<Compile Include="Utils\IntervalFinderHelper.cs" />
|
||||
<Compile Include="Utils\SignatureStateInfoFromServiceRecordHistoryEntry.cs" />
|
||||
<Compile Include="WCFHibernateSessionManager.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
using BS.Shared;
|
||||
|
||||
namespace BeWo.Data.Utils
|
||||
{
|
||||
public class SignatureStateInfoFromServiceRecordHistoryEntry
|
||||
{
|
||||
public SignatureStateType CustomerConfirmationReceiptSignatureStateType { get; }
|
||||
public SignatureStateType EmployeeConfirmationReceiptSignatureStateType { get; }
|
||||
public SignatureStateType ServiceRecordSignatureStateType { get; }
|
||||
|
||||
public long? CustomerConfirmationReceiptSignatureOid { get; }
|
||||
public long? EmployeeConfirmationReceiptSignatureOid { get; }
|
||||
|
||||
public SignatureStateInfoFromServiceRecordHistoryEntry(SignatureStateType customerConfirmationReceiptSignatureStateType, SignatureStateType employeeConfirmationReceiptSignatureStateType, SignatureStateType serviceRecordSignatureStateType, long? customerConfirmationReceiptSignatureOid, long? employeeConfirmationReceiptSignatureOid)
|
||||
{
|
||||
CustomerConfirmationReceiptSignatureStateType = customerConfirmationReceiptSignatureStateType;
|
||||
EmployeeConfirmationReceiptSignatureStateType = employeeConfirmationReceiptSignatureStateType;
|
||||
ServiceRecordSignatureStateType = serviceRecordSignatureStateType;
|
||||
CustomerConfirmationReceiptSignatureOid = customerConfirmationReceiptSignatureOid;
|
||||
EmployeeConfirmationReceiptSignatureOid = employeeConfirmationReceiptSignatureOid;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1 @@
|
||||
ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatureStateType` int DEFAULT 0;
|
||||
ALTER TABLE servicerecordhistory ADD COLUMN `EmployeeConfirmationReceiptSignatureStateType` int DEFAULT 0;
|
||||
ALTER TABLE servicerecordhistory ADD COLUMN `ServiceRecordSignatureStateType` int DEFAULT 0;
|
||||
ALTER TABLE servicerecordhistory ADD COLUMN `CustomerConfirmationReceiptSignatureStateType` int DEFAULT 0, ADD COLUMN `EmployeeConfirmationReceiptSignatureStateType` int DEFAULT 0, ADD COLUMN `ServiceRecordSignatureStateType` int DEFAULT 0;
|
||||
@@ -85,7 +85,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "4867997795"; // ADiK Kleve
|
||||
//t = "3184859776"; // Sergej Becker
|
||||
//t = "7752610643"; // BWK Gbr
|
||||
//t = "3785623125"; // Betreuwo
|
||||
t = "3785623125"; // Betreuwo
|
||||
//t = "7130228334"; // LH Borken
|
||||
//t = "4209820830"; // VKM Hamm
|
||||
//t = "5700328131"; // Betreutes Wohnen St. Ludgerus Essen-Werden
|
||||
@@ -357,7 +357,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "4434019324"; // FENIX Soziale Dienste
|
||||
//t = "6219220038"; // SKM Kreis Viersen e.V.
|
||||
//t = "1372050368"; // Petra Wagner Matthes
|
||||
t = "1253359817"; // Lebenshilfe Bad Kreuznach e.V.
|
||||
//t = "1253359817"; // Lebenshilfe Bad Kreuznach e.V.
|
||||
//t = "6038574522"; // I-Wohl
|
||||
//t = "2438529184"; // Alloheim Seniorenresidenzen SE
|
||||
//t = "7564067748"; // SKM Aachen
|
||||
|
||||
@@ -36,6 +36,7 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Web;
|
||||
using System.Windows;
|
||||
using BeWo.Data.Utils;
|
||||
using Utils = BeWo.Service.Core.Utils;
|
||||
|
||||
namespace BeWo.Service.ServiceImplementations
|
||||
@@ -2230,11 +2231,12 @@ namespace BeWo.Service.ServiceImplementations
|
||||
var customerMonthlySignatureState = serviceRecord2SignatureState.CustomerMonthlySignatureStateType;
|
||||
var employeeMonthlySignatureState = serviceRecord2SignatureState.EmployeeMonthlySignatreStateType;
|
||||
|
||||
ServiceRecordHistory previousRecordHistoryEntry = null;
|
||||
SignatureStateInfoFromServiceRecordHistoryEntry previousRecordHistorySignatureInfo = null;
|
||||
|
||||
if(serviceRecord.Oid.HasValue)
|
||||
{
|
||||
previousRecordHistoryEntry = DAOFactory.SearchDAO.FindMostRecentServiceRecordHistoryEntryByServiceRecordOid(serviceRecord.Oid.Value);
|
||||
//previousRecordHistoryEntry = DAOFactory.SearchDAO.FindMostRecentServiceRecordHistoryEntryByServiceRecordOid(serviceRecord.Oid.Value);
|
||||
previousRecordHistorySignatureInfo = DAOFactory.SearchDAO.FindMostRecentSignatureStatusInfoByServiceRecordOid(serviceRecord.Oid.Value);
|
||||
}
|
||||
|
||||
serviceRecordHistoryEntries.AddIfNotIn(new ServiceRecordHistory
|
||||
@@ -2269,22 +2271,17 @@ namespace BeWo.Service.ServiceImplementations
|
||||
SystemEntryID = serviceRecord.SystemEntryID,
|
||||
DistanceInMeter = serviceRecord.DistanceInMeter,
|
||||
IsCreatedInMobileClient = serviceRecord.IsCreatedInMobileClient,
|
||||
ServiceRecordSignatureStateType = singleSignatureState ?? previousRecordHistoryEntry?.ServiceRecordSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureStateType = customerMonthlySignatureState ?? previousRecordHistoryEntry?.CustomerConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
EmployeeConfirmationReceiptSignatureStateType = employeeMonthlySignatureState ?? previousRecordHistoryEntry?.EmployeeConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureOid = previousRecordHistoryEntry?.CustomerConfirmationReceiptSignatureOid,
|
||||
EmployeeConfirmationReceiptSignatureOid = previousRecordHistoryEntry?.EmployeeConfirmationReceiptSignatureOid
|
||||
ServiceRecordSignatureStateType = singleSignatureState ?? previousRecordHistorySignatureInfo?.ServiceRecordSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureStateType = customerMonthlySignatureState ?? previousRecordHistorySignatureInfo?.CustomerConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
EmployeeConfirmationReceiptSignatureStateType = employeeMonthlySignatureState ?? previousRecordHistorySignatureInfo?.EmployeeConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureOid = previousRecordHistorySignatureInfo?.CustomerConfirmationReceiptSignatureOid,
|
||||
EmployeeConfirmationReceiptSignatureOid = previousRecordHistorySignatureInfo?.EmployeeConfirmationReceiptSignatureOid
|
||||
});
|
||||
}
|
||||
|
||||
DAOFactory.GenericDAO.Insert(serviceRecordHistoryEntries);
|
||||
}
|
||||
|
||||
// ToDo: 3 Unterschriften; 1 Gültig mit U1; 2 Ungültig mit U1; 3 Gültig mit U2;
|
||||
// ToDo:
|
||||
// ToDo:
|
||||
// ToDo:
|
||||
// ToDo:
|
||||
private static List<ServiceRecord2SignatureStates> GenerateSignatureStates(List<ServiceRecord> serviceRecordsWithDeletedSingleSignatures, List<ServiceRecord2SignatureStates> serviceRecordsdWithRemovedConfirmationReceiptSignatures, List<ServiceRecord> originals)
|
||||
{
|
||||
var serviceRecords2SignatureStates = new List<ServiceRecord2SignatureStates>();
|
||||
@@ -3190,11 +3187,11 @@ namespace BeWo.Service.ServiceImplementations
|
||||
{
|
||||
foreach(var original in lOriginals)
|
||||
{
|
||||
ServiceRecordHistory previousRecordHistoryEntry = null;
|
||||
SignatureStateInfoFromServiceRecordHistoryEntry previousRecordHistorySignatureInfo = null;
|
||||
|
||||
if(original.Oid.HasValue)
|
||||
{
|
||||
previousRecordHistoryEntry = DAOFactory.SearchDAO.FindMostRecentServiceRecordHistoryEntryByServiceRecordOid(original.Oid.Value);
|
||||
previousRecordHistorySignatureInfo = DAOFactory.SearchDAO.FindMostRecentSignatureStatusInfoByServiceRecordOid(original.Oid.Value);
|
||||
}
|
||||
|
||||
serviceRecordHistoryEntries.AddIfNotIn(new ServiceRecordHistory
|
||||
@@ -3229,9 +3226,11 @@ namespace BeWo.Service.ServiceImplementations
|
||||
SystemEntryID = original.SystemEntryID,
|
||||
DistanceInMeter = original.DistanceInMeter,
|
||||
IsCreatedInMobileClient = original.IsCreatedInMobileClient,
|
||||
ServiceRecordSignatureStateType = previousRecordHistoryEntry?.ServiceRecordSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureStateType = previousRecordHistoryEntry?.CustomerConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
EmployeeConfirmationReceiptSignatureStateType = previousRecordHistoryEntry?.EmployeeConfirmationReceiptSignatureStateType ?? SignatureStateType.None
|
||||
ServiceRecordSignatureStateType = previousRecordHistorySignatureInfo?.ServiceRecordSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureStateType = previousRecordHistorySignatureInfo?.CustomerConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
EmployeeConfirmationReceiptSignatureStateType = previousRecordHistorySignatureInfo?.EmployeeConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureOid = previousRecordHistorySignatureInfo?.CustomerConfirmationReceiptSignatureOid,
|
||||
EmployeeConfirmationReceiptSignatureOid = previousRecordHistorySignatureInfo?.EmployeeConfirmationReceiptSignatureOid
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -8323,8 +8322,13 @@ namespace BeWo.Service.ServiceImplementations
|
||||
|
||||
private static void MakeSignatureStatusTypeServiceRecordHistoryEntry(ServiceRecord serviceRecord, SignatureStateType? singleSignatureStateType, SignatureStateType? customerMonthlySignatureStateType, SignatureStateType? employeeMonthlySignatureStateType, long? customerConfirmationReceiptSignatureOid, long? employeeConfirmationReceiptsignatureOid)
|
||||
{
|
||||
// Alten ServiceRecordHistory laden
|
||||
var mostRecentHistoryEntry = DAOFactory.SearchDAO.FindMostRecentServiceRecordHistoryEntryByServiceRecordOid(serviceRecord.Oid.Value);
|
||||
// Alten Unterschriftenstatus aus ServiceRecordHistory laden
|
||||
SignatureStateInfoFromServiceRecordHistoryEntry previousRecordHistorySignatureInfo = null;
|
||||
|
||||
if(serviceRecord.Oid.HasValue)
|
||||
{
|
||||
previousRecordHistorySignatureInfo = DAOFactory.SearchDAO.FindMostRecentSignatureStatusInfoByServiceRecordOid(serviceRecord.Oid.Value);
|
||||
}
|
||||
|
||||
var seviceRecordHistoryEntry = new ServiceRecordHistory
|
||||
{
|
||||
@@ -8358,11 +8362,11 @@ namespace BeWo.Service.ServiceImplementations
|
||||
SystemEntryID = serviceRecord.SystemEntryID,
|
||||
DistanceInMeter = serviceRecord.DistanceInMeter,
|
||||
IsCreatedInMobileClient = serviceRecord.IsCreatedInMobileClient,
|
||||
CustomerConfirmationReceiptSignatureStateType = customerMonthlySignatureStateType ?? mostRecentHistoryEntry?.CustomerConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
EmployeeConfirmationReceiptSignatureStateType = employeeMonthlySignatureStateType ?? mostRecentHistoryEntry?.EmployeeConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
ServiceRecordSignatureStateType = singleSignatureStateType ?? mostRecentHistoryEntry?.ServiceRecordSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureOid = customerConfirmationReceiptSignatureOid ?? mostRecentHistoryEntry?.CustomerConfirmationReceiptSignatureOid,
|
||||
EmployeeConfirmationReceiptSignatureOid = employeeConfirmationReceiptsignatureOid ?? mostRecentHistoryEntry?.EmployeeConfirmationReceiptSignatureOid
|
||||
CustomerConfirmationReceiptSignatureStateType = customerMonthlySignatureStateType ?? previousRecordHistorySignatureInfo?.CustomerConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
EmployeeConfirmationReceiptSignatureStateType = employeeMonthlySignatureStateType ?? previousRecordHistorySignatureInfo?.EmployeeConfirmationReceiptSignatureStateType ?? SignatureStateType.None,
|
||||
ServiceRecordSignatureStateType = singleSignatureStateType ?? previousRecordHistorySignatureInfo?.ServiceRecordSignatureStateType ?? SignatureStateType.None,
|
||||
CustomerConfirmationReceiptSignatureOid = customerConfirmationReceiptSignatureOid ?? previousRecordHistorySignatureInfo?.CustomerConfirmationReceiptSignatureOid,
|
||||
EmployeeConfirmationReceiptSignatureOid = employeeConfirmationReceiptsignatureOid ?? previousRecordHistorySignatureInfo?.EmployeeConfirmationReceiptSignatureOid
|
||||
};
|
||||
|
||||
DAOFactory.GenericDAO.Insert(seviceRecordHistoryEntry);
|
||||
|
||||
@@ -87,21 +87,9 @@ namespace BeWo.Service.ServiceImplementations
|
||||
var lDir = BS.Shared.Core.Utils.CreateSavePath(baseDirectory, tenant + @"\temp");
|
||||
var lPath = BS.Shared.Core.Utils.CreateSavePath(lDir, lResult);
|
||||
|
||||
|
||||
|
||||
var table = BS.Shared.Core.Utils.XMLDeserializeFromString<DataTable>(dataTableJsonString);
|
||||
BS.Shared.Core.Utils.XMLSerialize(lPath, table);
|
||||
|
||||
if(!Directory.Exists(lDir))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
if(!File.Exists(lPath))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return lResult;
|
||||
}
|
||||
catch (Exception e)
|
||||
|
||||
@@ -684,5 +684,36 @@ namespace BS.Shared.Extensions
|
||||
{
|
||||
return (dateTime.GetLastOfMonth() - dateTime.GetFirstOfMonth()).Days + 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Liefert einen String, der das Interval darstellt.
|
||||
/// Ist endDate null und die Uhrzeit vom Startdatum 00:00 oder sind beide Uhrzeiten 00:00, wird die Uhrzeit nicht angezeigt.
|
||||
/// </summary>
|
||||
/// <param name="dateTime">Startdatum des Intervalls</param>
|
||||
/// <param name="endDate">Eventuelles Enddatum des Intervalls</param>
|
||||
/// <returns></returns>
|
||||
public static string ToIntervalString(this DateTime dateTime, DateTime? endDate)
|
||||
{
|
||||
if(endDate is null)
|
||||
{
|
||||
if(dateTime.Hour == 0 && dateTime.Minute == 0)
|
||||
{
|
||||
return $"{dateTime:dd.MM.yyyy}";
|
||||
}
|
||||
|
||||
return $"{dateTime:dd.MM.yyyy HH:mm}";
|
||||
}
|
||||
|
||||
if(dateTime.Hour == 0 && dateTime.Minute == 0 && endDate.Value.Hour == 0 && endDate.Value.Minute == 0)
|
||||
{
|
||||
return dateTime.Year == endDate.Value.Year ?
|
||||
$"{dateTime:dd.MM.} - {endDate.Value:dd.MM.yyyy}" :
|
||||
$"{dateTime:dd.MM.yyyy} - {endDate.Value:dd.MM.yyyy}";
|
||||
}
|
||||
|
||||
return dateTime.Year == endDate.Value.Year ?
|
||||
$"{dateTime:dd.MM. HH:mm} - {endDate.Value:dd.MM.yyyy HH:mm}" :
|
||||
$"{dateTime:dd.MM.yyyy HH:mm} - {endDate.Value:dd.MM.yyyy HH:mm}";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user