Schulbegleitender Dienst:

Tabellen angepasst und eine für Klienten ohne Vertretungsbedarf hinzugefügt
Bindingfehler behoben

WaitLayer2
Bindingfehler behoben
This commit is contained in:
Lyndon
2019-09-02 15:48:37 +02:00
parent 2e24cc01ed
commit cb39ab94fb
33 changed files with 4901 additions and 2929 deletions

View File

@@ -621,6 +621,7 @@
<Compile Include="Converter\ParticipationBrushConverter.cs" />
<Compile Include="Converter\ReactivationRight2VisibilityConverter.cs" />
<Compile Include="Converter\Rights2DefaultBooleanConverter.cs" />
<Compile Include="Converter\StringLengthVisibilityConverter.cs" />
<Compile Include="Core\AutoLockUI.cs" />
<Compile Include="Core\BeWoUtils.cs" />
<Compile Include="Core\BeWoWebClient.cs">
@@ -670,6 +671,7 @@
<Compile Include="SchulbegleitenderDienst\TagesansichtVM.cs" />
<Compile Include="SchulbegleitenderDienst\TagesVertretung.cs" />
<Compile Include="SchulbegleitenderDienst\ViewModel\SbdConfigVM.cs" />
<Compile Include="SchulbegleitenderDienst\ViewModel\VertretungsansichtBaseVM.cs" />
<Compile Include="SchulbegleitenderDienst\ViewModel\VertretungWochenansichtVM.cs" />
<Compile Include="SchulbegleitenderDienst\View\SbdAdminView.xaml.cs">
<DependentUpon>SbdAdminView.xaml</DependentUpon>
@@ -2228,362 +2230,362 @@
<ItemGroup>
<PublishFile Include="Blacklight.Wpf.Controls">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Charts.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Data.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Data.v17.1.Linq">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Office.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.PivotGrid.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Printing.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.RichEdit.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Sparkline.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Utils.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Charts.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Core.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Docking.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Grid.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Grid.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Layout.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Mvvm.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Printing.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Printing.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Ribbon.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Scheduler.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.LightGray.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2007Black.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2010Black.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.Xpf.Themes.Office2016White.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraBars.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraCharts.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraEditors.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraNavBar.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraPivotGrid.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraPrinting.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraReports.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v17.1.Core">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraScheduler.v17.1.Reporting">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
<PublishFile Include="DevExpress.XtraTreeList.v17.1">
<Visible>False</Visible>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<Group>
</Group>
<TargetPath>
</TargetPath>
<PublishState>Include</PublishState>
<IncludeHash>True</IncludeHash>
<FileType>Assembly</FileType>
</PublishFile>
</ItemGroup>

View File

@@ -0,0 +1,22 @@
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace BeWo.Converter
{
public class StringLengthVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value == null || value.GetType() != typeof(string) || string.IsNullOrWhiteSpace(value.ToString()))
{
return Visibility.Collapsed;
}
return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using System.Windows.Media;
namespace BeWo.SchulbegleitenderDienst.Converter
{
public class SubstitutionBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value != null)
{
var color = (Color) (ColorConverter.ConvertFromString(value.ToString()) ?? Color.FromArgb(0,0,0,0));
return new SolidColorBrush(color);
}
return DependencyProperty.UnsetValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
}
}

View File

@@ -17,32 +17,46 @@ namespace BeWo.SchulbegleitenderDienst
{
var tagesansichtVM = new TagesansichtVM
{
Absencetime = vertretungsItem.Absencetime,
VertretungsStatus = vertretungsItem.VertretungsStatus,
Employee = vertretungsItem.Employee,
Customer = vertretungsItem.Customer,
Schule = vertretungsItem.Schule,
Arbeitszeiten = vertretungsItem.Arbeitszeiten,
Bemerkung = vertretungsItem.Bemerkung,
Vertretung = vertretungsItem.Vertretung,
Datum = vertretungsItem.Datum,
Vertreter = vertretungsItem.Vertreter,
Krankheitsmeldung = vertretungsItem.Krankheitsmeldung,
Krankheitszeitraum = vertretungsItem.Krankheitszeitraum,
MitarbeiterStatusColor = vertretungsItem.MitarbeiterStatusColor,
KlientStatusColor = vertretungsItem.KlientStatusColor,
WochenansichtBemerkung = vertretungsItem.WochenansichtBemerkung,
Dringlichkeit = vertretungsItem.Dringlichkeit,
DringlichkeitColor = vertretungsItem.DringlichkeitColor,
Teamleitung = vertretungsItem.Teamleitung,
Pflege = vertretungsItem.Pflege,
Toilettengang = vertretungsItem.Toilettengang,
Aggressiv = vertretungsItem.Aggressiv,
Geschlecht = vertretungsItem.Geschlecht,
MitarbeiterEinsatzBei = vertretungsItem.MitarbeiterEinsatzBei
Absencetime = vertretungsItem.Absencetime,
VertretungsStatus = vertretungsItem.VertretungsStatus,
Employee = vertretungsItem.Employee,
Customer = vertretungsItem.Customer,
Schule = vertretungsItem.Schule,
Arbeitszeiten = vertretungsItem.Arbeitszeiten,
Bemerkung = vertretungsItem.Bemerkung,
Vertretung = vertretungsItem.Vertretung,
Datum = vertretungsItem.Datum,
Vertreter = vertretungsItem.Vertreter,
Krankheitsmeldung = vertretungsItem.Krankheitsmeldung,
Krankheitszeitraum = vertretungsItem.Krankheitszeitraum,
MitarbeiterStatusColor = vertretungsItem.MitarbeiterStatusColor,
KlientStatusColor = vertretungsItem.KlientStatusColor,
WochenansichtBemerkung = vertretungsItem.WochenansichtBemerkung,
Dringlichkeit = vertretungsItem.Dringlichkeit,
DringlichkeitColor = vertretungsItem.DringlichkeitColor,
Teamleitung = vertretungsItem.Teamleitung,
Pflege = vertretungsItem.Pflege,
Toilettengang = vertretungsItem.Toilettengang,
Aggressiv = vertretungsItem.Aggressiv,
Geschlecht = vertretungsItem.Geschlecht,
MitarbeiterEinsatzBei = vertretungsItem.MitarbeiterEinsatzBei,
CustomerContactInformation = vertretungsItem.CustomerContactInformation,
EmployeeContactInformation = vertretungsItem.EmployeeContactInformation,
Schools = vertretungsItem.Schools,
LastSubstitutions = vertretungsItem.LastSubstitutions,
CustomerPflege = vertretungsItem.CustomerPflege,
CustomerSchutzstufe = vertretungsItem.CustomerSchutzstufe,
CustomerHygienebelehrung = vertretungsItem.CustomerHygienebelehrung,
CustomerAggressivitaet = vertretungsItem.CustomerAggressivitaet,
CustomerToilettengang = vertretungsItem.CustomerToilettengang,
EmployeeAggressivitaet = vertretungsItem.EmployeeAggressivitaet,
EmployeeToilettengang = vertretungsItem.EmployeeToilettengang,
EmployeeSchutzstufe = vertretungsItem.EmployeeSchutzstufe,
EmployeeHygienebelehrung = vertretungsItem.EmployeeHygienebelehrung,
EmployeePflege = vertretungsItem.EmployeePflege
};
if (vertretungsItem.Arbeitszeiten != null)
if (vertretungsItem.Arbeitszeiten != null && vertretungsItem.Arbeitszeiten.Any())
{
tagesansichtVM.AssistanceTimes = vertretungsItem.Arbeitszeiten.ToList();
}
@@ -130,7 +144,7 @@ namespace BeWo.SchulbegleitenderDienst
private void NewWindowKrankzeitraum_RaiseCustomEvent(object sender, KrankheitsEventArgs e)
{
UpdateKrankheitsZeitraum(e.Start, e.Ende,e.TagesItem);
UpdateKrankheitsZeitraum(e.Start, e.Ende, e.TagesItem);
_krankView.Close();
}
@@ -147,63 +161,78 @@ namespace BeWo.SchulbegleitenderDienst
public void UpdateRowData(TagesansichtVM viewModel)
{
if(viewModel.StartDate == null || viewModel.EndDate == null)
try
{
return;
}
if(viewModel?.StartDate == null || viewModel.EndDate == null)
{
return;
}
var abstime = new AbsenceTimeDC
{
AbsenceTimeOid = viewModel.Absencetime.AbsenceTimeOid,
Start = viewModel.StartDate,
End = viewModel.EndDate,
Reason = viewModel.Absencetime.Reason,
KrankheitsMeldung = viewModel.Absencetime.KrankheitsMeldung
};
var absenceTime = new AbsenceTimeDC
{
AbsenceTimeOid = viewModel.Absencetime.AbsenceTimeOid,
Start = viewModel.StartDate,
End = viewModel.EndDate,
Reason = viewModel.Absencetime.Reason,
KrankheitsMeldung = viewModel.Absencetime.KrankheitsMeldung
};
if (viewModel.Customer != null)
{
abstime.CustomerOid = viewModel.Customer.CustomerOid;
}
if (viewModel.Customer != null)
{
absenceTime.CustomerOid = viewModel.Customer.CustomerOid;
}
if (viewModel.Employee != null)
{
abstime.EmployeeOid = viewModel.Employee.EmployeeOid;
}
if (viewModel.Employee != null)
{
absenceTime.EmployeeOid = viewModel.Employee.EmployeeOid;
}
if (viewModel.Absencetime != null)
{
abstime.AbsenceTimeOid = viewModel.Absencetime.AbsenceTimeOid;
}
if (viewModel.Absencetime != null)
{
absenceTime.AbsenceTimeOid = viewModel.Absencetime.AbsenceTimeOid;
}
ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(abstime));
ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(absenceTime));
if (viewModel.Vertretung == null)
{
viewModel.Vertretung = new VertretungDC();
}
if (viewModel.Vertretung == null)
{
viewModel.Vertretung = new VertretungDC();
}
viewModel.Vertretung.VertretungsZeitraumVon = viewModel.StartDate.Value;
viewModel.Vertretung.VertretungsZeitraumBis = viewModel.EndDate.Value;
viewModel.Vertretung.Notice = viewModel.Bemerkung;
viewModel.Vertretung.VertretungsZeitraumVon = viewModel.StartDate.Value;
viewModel.Vertretung.VertretungsZeitraumBis = viewModel.EndDate.Value;
viewModel.Vertretung.Notice = viewModel.Bemerkung;
if (viewModel.Customer != null)
{
viewModel.Vertretung.CustomerOid = viewModel.Customer.CustomerOid;
}
if (viewModel.Customer != null)
{
viewModel.Vertretung.CustomerOid = viewModel.Customer.CustomerOid;
}
if (viewModel.Employee != null)
{
viewModel.Vertretung.EmployeeOid = viewModel.Employee.EmployeeOid;
}
if (viewModel.Employee != null)
{
viewModel.Vertretung.EmployeeOid = viewModel.Employee.EmployeeOid;
}
if (viewModel.Vertretung.VertretungOid.HasValue)
{
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(viewModel.Vertretung));
if (viewModel.Vertretung.VertretungOid.HasValue)
{
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(viewModel.Vertretung));
}
else
{
ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(viewModel.Vertretung));
}
}
else
catch(Exception ex)
{
ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(viewModel.Vertretung));
}
}
public void UpdateRows(List<TagesansichtVM> viewModels)
{
foreach(var viewModel in viewModels)
{
UpdateRowData(viewModel);
}
}
}

View File

@@ -1,56 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.SchulbegleitenderDienst.ViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWo.SchulbegleitenderDienst
{
public class TagesansichtVM
public class TagesansichtVM : VertretungsansichtBaseVM
{
public DateTime Datum { get; set; }
public IList<ArbeitszeitEintragDC> Arbeitszeiten { get; set; }
public CompactEmployeeDC Employee { get; set; }
public CompactCustomerDC Customer { get; set; }
public CompactOrganisationDC Schule { get; set; }
public CompactEmployeeDC Vertreter { get; set; }
public VertretungsStatus VertretungsStatus { get; set; }
public string EmployeeName => Employee?.ToString();
public string CustomerName => Customer?.ToString();
public string WochenansichtBemerkung { get; set; }
public string Bemerkung { get; set; }
public string MitarbeiterStatusColor { get; set; }
public string KlientStatusColor { get; set; }
public string Krankheitszeitraum { get; set; }
public string Dringlichkeit { get; set; }
public string DringlichkeitColor { get; set; }
public string Teamleitung { get; set; }
public string Geschlecht { get; set; }
public string Pflege { get; set; }
public string Toilettengang { get; set; }
public string Aggressiv { get; set; }
public string MitarbeiterEinsatzBei { get; set; }
public DateTime Krankheitsmeldung { get; set; }
@@ -136,13 +113,27 @@ namespace BeWo.SchulbegleitenderDienst
}
}
public List<ArbeitszeitEintragDC> AssistanceTimes { get; set; }
private List<ArbeitszeitEintragDC> _AssistanceTimes;
public List<ArbeitszeitEintragDC> AssistanceTimes
{
get => _AssistanceTimes;
set
{
if(_AssistanceTimes != value)
{
_AssistanceTimes = value;
FirePropertyChanged(nameof(AssistanceTimes));
}
}
}
public ArbeitszeitEintragDC FirstAssistanceTimeEntry
{
get
{
if(AssistanceTimes != null && AssistanceTimes.Any())
if (AssistanceTimes != null && AssistanceTimes.Any())
{
return AssistanceTimes[0];
}
@@ -150,5 +141,129 @@ namespace BeWo.SchulbegleitenderDienst
return null;
}
}
public new string SchulbegleitenderDienstString
{
get
{
var result = string.Empty;
if(Absencetime != null)
{
if(VertretungsStatus == VertretungsStatus.KlientKrank || Vertretung?.VertretenderMitarbeiterOid != null || Customer.SubstitutionStartingDayCount > 0)
{
if(CustomerPflege?.Equals("Ja") ?? false)
{
result += "Benötigt Pflege";
}
if (CustomerToilettengang?.Equals("Ja") ?? false)
{
if(result.Length > 0)
{
result += ", ";
}
result += "Toilettengang";
}
if (CustomerAggressivitaet?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Aggressivität";
}
if (CustomerHygienebelehrung?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Hygienebelehrung";
}
if (string.IsNullOrWhiteSpace(CustomerSchutzstufe) == false)
{
if (result.Length > 0)
{
result += ", ";
}
result += $"Schutzstufe {CustomerSchutzstufe}";
}
// Vertretung gewünscht [ab x. Tag]
if (Customer.IsSubstitutionWanted)
{
if(result.Length > 0)
{
result += "\n";
}
result += "Vertretung gewünscht";
if(Customer.SubstitutionStartingDayCount > 0)
{
result += $" ab {Customer.SubstitutionStartingDayCount}. Tag";
}
}
}
else
{
if (EmployeePflege?.Equals("Ja") ?? false)
{
result += "Benötigt Pflege";
}
if (EmployeeToilettengang?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Toilettengang";
}
if (EmployeeAggressivitaet?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Aggressivität";
}
if (EmployeeHygienebelehrung?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Hygienebelehrung";
}
if (string.IsNullOrWhiteSpace(EmployeeSchutzstufe) == false)
{
if (result.Length > 0)
{
result += ", ";
}
result += $"Schutzstufe {EmployeeSchutzstufe}";
}
}
}
return result;
}
}
}
}

View File

@@ -10,11 +10,42 @@
xmlns:search="clr-namespace:BeWo.View.Search"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:localConv="clr-namespace:BeWo.SchulbegleitenderDienst.Converter"
xmlns:converter="clr-namespace:BeWo.Converter"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
xmlns:dxpbars="http://schemas.devexpress.com/winfx/2008/xaml/printing/bars"
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True" x:Name="View">
<localView:BeWoView.Resources>
<ResourceDictionary>
<localConv:SubstitutionBrushConverter x:Key="SubstitutionBrushConverter" />
</ResourceDictionary>
<Style TargetType="dxg:RowControl" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Setter Property="ToolTipService.ShowDuration" Value="{x:Static sys:Int32.MaxValue}" />
</Style>
<localConv:SubstitutionBrushConverter x:Key="SubstitutionBrushConverter" />
<converter:StringLengthVisibilityConverter x:Key="StringLengthVisibilityConverter" />
<DataTemplate x:Key="WeekViewEmployeeCellTemplate">
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Employee}" />
<TextBlock FontWeight="Bold" Text="Dönermann" />
<Separator Visibility="{Binding Path=SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schule:" Visibility="{Binding Path=SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding SchoolString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding EmployeeContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding Path=LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Letzte Vertretungen" Visibility="{Binding Path=LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding LastSubstitutionsString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was kommt hier in den Text? -->
<Separator Visibility="{Binding Path=SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</localView:BeWoView.Resources>
<Grid Width="Auto" Height="Auto">
<uc:ShadowChrome>
@@ -230,7 +261,7 @@
</Grid.RowDefinitions>
<GroupBox Header="{markup:Translate Abwesenheiten Mitarbeiter}" Style="{StaticResource ObjectEditGroupBox}" >
<dxg:GridControl x:Name="GridDataControlTagesansichtMitarbeiter" Visibility="Visible" Margin="5" VerticalContentAlignment="Stretch">
<dxg:GridControl x:Name="GridDataControlTagesansichtMitarbeiter" Visibility="Visible" Margin="5" VerticalContentAlignment="Stretch" ItemsSource="{Binding Path=AbsentEmployeesDayViewList, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridControl.Columns >
<dxg:GridColumn FieldName="EmployeeName" ReadOnly="True" Header="Mitarbeiter/in" SortOrder="Ascending">
<dxg:GridColumn.CellStyle>
@@ -284,14 +315,14 @@
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Dringlichkeit" Header="Dringlichkeit">
<dxg:GridColumn FieldName="Dringlichkeit" Header="Dringlichkeit" ReadOnly="True">
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}">
<Setter Property="Background" Value="{Binding RowData.Row.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Bemerkung" Header="Bemerkung">
<dxg:GridColumn FieldName="Bemerkung" Header="Bemerkung" ReadOnly="False">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings TextWrapping="Wrap" AcceptsReturn="True" />
</dxg:GridColumn.EditSettings>
@@ -315,12 +346,14 @@
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="FirstAssistanceTimeEntry" Header="Betreuungszeiten" ReadOnly="True">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ItemsSource="{Binding AssistanceTimes}" />
</dxg:GridColumn.EditSettings>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:ComboBoxEdit ItemsSource="{Binding RowData.Row.AssistanceTimes}" Name="PART_Editor" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Teamleitung" Header="Teamleitung" ReadOnly="True" />
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom" />
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom" ReadOnly="True" />
<dxg:GridColumn FieldName="Krankheitszeitraum" ReadOnly="True" Header="Abwesenheit von - bis">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings DefaultButtonClick="KrankmeldungsZeitraumBearbeitungsView"/>
@@ -333,13 +366,49 @@
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" BestFitMode="AllRows" AllowBestFit="True" ShowGridMenu="GridDataControlTagesansichtMitarbeiter_OnShowGridMenu" CellValueChanged="GridViewBase_OnRowUpdated" ShowGroupPanel="False" />
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" BestFitMode="AllRows" AllowBestFit="True" ShowGridMenu="GridDataControlTagesansichtMitarbeiter_OnShowGridMenu" CellValueChanged="AbsentEmployeesDayViewGridControl_OnCellValueChanged" ShowGroupPanel="False">
<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="ToolTipService.ShowDuration" Value="{x:Static sys:Int32.MaxValue}" />
<Setter Property="ToolTipService.ToolTip">
<Setter.Value>
<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Row.Employee}" />
<Separator Visibility="{Binding Path=Row.SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schule:" Visibility="{Binding Path=Row.SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchoolString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding Row.EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=Row.EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.EmployeeContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding Path=Row.LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Letzte Vertretungen" Visibility="{Binding Path=Row.LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.LastSubstitutionsString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was kommt hier in den Text? -->
<Separator Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Setter.Value>
</Setter>
</Style>
</dxg:TableView.RowStyle>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
<GroupBox Grid.Row="1" Header="{markup:Translate Abwesenheiten Klienten}" Style="{StaticResource ObjectEditGroupBox}" Margin="0,10,0,0">
<dxg:GridControl x:Name="GridDataControlTagesansichtKlient" Visibility="Visible" Margin="5" VerticalContentAlignment="Stretch">
<dxg:GridControl x:Name="GridDataControlTagesansichtKlient" Visibility="Visible" Margin="5" VerticalContentAlignment="Stretch" ItemsSource="{Binding Path=AbsentCustomersDayViewList, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="EmployeeName" ReadOnly="True" Header="Mitarbeiter/in" SortOrder="Ascending">
<dxg:GridColumn.CellStyle>
@@ -357,7 +426,13 @@
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="" ReadOnly="True" />
<dxg:GridColumn FieldName="FirstAssistanceTimeEntry" Header="Betreuungszeiten" ReadOnly="False">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<dxe:ComboBoxEdit ItemsSource="{Binding RowData.Row.AssistanceTimes}" Name="PART_Editor" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="CustomerName" Header="Klient/in" ReadOnly="True">
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}">
@@ -398,28 +473,59 @@
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Teamleitung" Header="Teamleitung" ReadOnly="True" />
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom"/>
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom" ReadOnly="True" />
<dxg:GridColumn FieldName="Krankheitszeitraum" ReadOnly="True" Header="Abwesenheit von - bis">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings DefaultButtonClick="KrankmeldungsZeitraumBearbeitungsView"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Vertretungszeitraum" Header="Vertretung von - bis" />
<dxg:GridColumn FieldName="Vertretungszeitraum" Header="Vertretung von - bis" ReadOnly="True" />
<dxg:GridColumn FieldName="Absencetime.Reason.Description" Header="Abwesenheitskategorie">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings x:Name="AbwesenheitsKategorieKlientComboBox"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" AllowBestFit="True" CellValueChanged="GridViewBase_OnRowUpdated" ShowGroupPanel="False" ShowGridMenu="GridDataControlTagesansichtKlient_OnShowGridMenu" />
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" AllowBestFit="True" CellValueChanged="AbsentCustomersDayViewGridControl_OnCellValueChanged" ShowGroupPanel="False" ShowGridMenu="GridDataControlTagesansichtKlient_OnShowGridMenu">
<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="ToolTipService.ShowDuration" Value="{x:Static sys:Int32.MaxValue}" />
<Setter Property="ToolTipService.ToolTip">
<Setter.Value>
<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Row.Customer}" />
<Separator Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Wohnort:" Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.Customer.AddressString}" />
<Separator Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.CustomerContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was wird hier angezeigt? -->
<Separator Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Setter.Value>
</Setter>
</Style>
</dxg:TableView.RowStyle>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
<GroupBox Grid.Row="2" Header="{markup:Translate Kein Vertretungsbedarf}" Style="{StaticResource ObjectEditGroupBox}">
<dxg:GridControl x:Name="SubstitutionUnwantedDayViewGridControl" AllowDrop="True" Margin="5" BorderBrush="Black" VerticalContentAlignment="Stretch">
<dxg:GridControl x:Name="SubstitutionUnwantedDayViewGridControl" AllowDrop="True" Margin="5" BorderBrush="Black" VerticalContentAlignment="Stretch" ItemsSource="{Binding Path=SubstitutionUnwantedDayViewList, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="EmployeeName" ReadOnly="True" Header="Mitarbeiter/in abwesend" SortOrder="Ascending">
<dxg:GridColumn.CellStyle>
@@ -480,7 +586,7 @@
</dxg:GridColumn>
<dxg:GridColumn FieldName="Teamleitung" Header="Teamleitung" ReadOnly="True" />
<dxg:GridColumn FieldName="Vertretungszeitraum" Header="Vertretung von - bis" ReadOnly="True" />
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom"/>
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom" ReadOnly="True"/>
<dxg:GridColumn FieldName="Krankheitszeitraum" ReadOnly="True" Header="Abwesenheit von - bis">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings DefaultButtonClick="KrankmeldungsZeitraumBearbeitungsView"/>
@@ -493,7 +599,38 @@
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" AllowBestFit="True" ShowGroupPanel="False" />
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" AllowBestFit="True" ShowGroupPanel="False" ShowGridMenu="GridControlTagesansichtNoSubstitutionWanted_OnShowGridMenu" CellValueChanged="GridControlSubUnwanted_OnCellValueChanged">
<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="ToolTipService.ToolTip">
<Setter.Value>
<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Row.Customer}" />
<Separator Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Wohnort:" Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.Customer.AddressString}" />
<Separator Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.CustomerContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was wird hier angezeigt? -->
<Separator Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Setter.Value>
</Setter>
</Style>
</dxg:TableView.RowStyle>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
@@ -509,9 +646,16 @@
</Grid.RowDefinitions>
<GroupBox Header="{markup:Translate Abwesenheiten Mitarbeiter}" Style="{StaticResource ObjectEditGroupBox}">
<dxg:GridControl x:Name="GridDataControlWochenansichtMitarbeiter" AllowDrop="true" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black">
<dxg:GridControl x:Name="GridDataControlWochenansichtMitarbeiter" AllowDrop="true" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black" ItemsSource="{Binding AbsentEmployeesWeekViewList, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="EmployeeName" Header="Mitarbeiter/in" ReadOnly="True" SortOrder="Ascending">
<dxg:GridColumn.CellToolTipTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="TEST" />
</StackPanel>
</DataTemplate>
</dxg:GridColumn.CellToolTipTemplate>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock Margin="5,5,0,0">
@@ -533,13 +677,6 @@
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Dringlichkeit" Header="Dringlichkeit">
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="Background" Value="{Binding RowData.Row.DringlichkeitColor}" />
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Geschlecht" Header="m/w" ReadOnly="True" Width="40" HorizontalHeaderContentAlignment="Center">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings HorizontalContentAlignment="Center"/>
@@ -558,50 +695,15 @@
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Pflege" Header="Pflege" ReadOnly="True">
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.Pflege}" Value="Ja">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Toilettengang" Header="Toilettengang" ReadOnly="True">
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.Toilettengang}" Value="Ja">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Aggressiv" Header="Aggressivität" ReadOnly="True" >
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.Aggressiv}" Value="Ja">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
</Style.Triggers>
</Style>
</dxg:GridColumn.CellStyle>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Teamleitung" Header="Teamleitung" ReadOnly="True" />
<dxg:GridColumn FieldName="ItemMo.Vertreter" Header="Montag" Width="100" ReadOnly="True" AllowEditing="False">
<dxg:GridColumn FieldName="Bemerkung" />
<dxg:GridColumn FieldName="ItemMo.Vertreter" Header="Montag" Width="100" ReadOnly="True" AllowEditing="False" CellToolTipTemplate="{StaticResource WeekViewEmployeeCellTemplate}">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Margin="5,5,0,0">
<Hyperlink TargetName="inexistent" NavigateUri="http://www.bewoplaner.de" RequestNavigate="Hyperlink_OnRequestVertreterNavigate" Tag="{Binding RowData.Row.ItemMo}" Foreground="Black">
@@ -617,7 +719,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMo.DringlichkeitColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMo.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemMo}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -648,7 +750,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDi.DringlichkeitColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDi.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemDi}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -656,8 +758,34 @@
</Style.Triggers>
</Style>
</dxg:GridColumn.CellStyle>
<dxg:GridColumn.CellToolTipTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Employee}" />
<TextBlock FontWeight="Bold" Text="TEST" />
<Separator Visibility="{Binding Path=SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schule:" Visibility="{Binding Path=SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding SchoolString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding EmployeeContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding Path=LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Letzte Vertretungen" Visibility="{Binding Path=LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding LastSubstitutionsString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was kommt hier in den Text? -->
<!-- Wie beim Klientenreiter -->
<Separator Visibility="{Binding Path=SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</dxg:GridColumn.CellToolTipTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="ItemMi.Vertreter" Header="Mittwoch" ReadOnly="True" AllowEditing="False">
<dxg:GridColumn FieldName="ItemMi.Vertreter" Header="Mittwoch" ReadOnly="True" AllowEditing="False" CellToolTipTemplate="{StaticResource WeekViewEmployeeCellTemplate}">
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<Grid>
@@ -679,7 +807,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMi.DringlichkeitColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMi.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemMi}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -710,7 +838,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDo.DringlichkeitColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDo.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemDo}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -741,7 +869,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemFr.DringlichkeitColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemFr.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemFr}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -772,7 +900,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemSa.DringlichkeitColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemSa.DringlichkeitColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemSa}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -783,13 +911,49 @@
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" ShowGridMenu="GridDataControlWochenansichtMitarbeiter_OnShowGridMenu" AllowBestFit="True" ShowGroupPanel="False" />
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" AllowBestFit="True" ShowGroupPanel="False" CellValueChanged="AbsentEmployeesWeekViewDataGrid_OnCellValueChanged">
<!--<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="ToolTipService.ShowDuration" Value="{x:Static sys:Int32.MaxValue}" />
<Setter Property="ToolTipService.ToolTip">
<Setter.Value>
<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Row.Employee}" />
<Separator Visibility="{Binding Path=Row.SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schule:" Visibility="{Binding Path=Row.SchoolString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchoolString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding Row.EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=Row.EmployeeContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.EmployeeContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<Separator Visibility="{Binding Path=Row.LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Letzte Vertretungen" Visibility="{Binding Path=Row.LastSubstitutionsString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.LastSubstitutionsString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
--><!-- TODO: Was kommt hier in den Text? --><!--
<Separator Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Setter.Value>
</Setter>
</Style>
</dxg:TableView.RowStyle>-->
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
<GroupBox Grid.Row="1" Header="{markup:Translate Abwesenheiten Klienten}" Style="{StaticResource ObjectEditGroupBox}" Margin="0,10,0,0">
<dxg:GridControl x:Name="GridDataControlWochenansichtKlient" AllowDrop="true" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black">
<dxg:GridControl x:Name="GridDataControlWochenansichtKlient" AllowDrop="true" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black" ItemsSource="{Binding AbsentCustomersWeekViewList, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridControl.Columns >
<dxg:GridColumn FieldName="EmployeeName" Header="Mitarbeiter/in" ReadOnly="True" SortOrder="Ascending">
<dxg:GridColumn.CellTemplate>
@@ -872,7 +1036,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMo.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMo.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemMo}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -885,7 +1049,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDi.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDi.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemDi}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -898,7 +1062,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMi.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMi.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemMi}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -911,7 +1075,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDo.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDo.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemDo}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -924,7 +1088,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemFr.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemFr.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemFr}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -937,7 +1101,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemSa.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemSa.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemSa}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -948,13 +1112,44 @@
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" ShowGridMenu="GridDataControlWochenansichtKlient_OnShowGridMenu" AllowBestFit="True" ShowGroupPanel="False" />
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="False" AllowBestFit="True" ShowGroupPanel="False">
<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="ToolTipService.ToolTip">
<Setter.Value>
<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Row.Customer}" />
<Separator Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Wohnort:" Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.Customer.AddressString}" />
<Separator Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.CustomerContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was wird hier angezeigt? -->
<Separator Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Setter.Value>
</Setter>
</Style>
</dxg:TableView.RowStyle>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
<GroupBox Grid.Row="2" Header="{markup:Translate Kein Vertretungsbedarf}" Style="{StaticResource ObjectEditGroupBox}" Margin="0,10,0,0">
<dxg:GridControl AllowDrop="True" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black" x:Name="SubstitutionUnwantedWeekViewGridControl">
<dxg:GridControl AllowDrop="True" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black" x:Name="SubstitutionUnwantedWeekViewGridControl" ItemsSource="{Binding SubstitutionUnwantedWeekViewList, UpdateSourceTrigger=PropertyChanged}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="EmployeeName" Header="Mitarbeiter/in abwesend" ReadOnly="True" SortOrder="Ascending">
<dxg:GridColumn.CellTemplate>
@@ -986,7 +1181,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMo.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMo.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemMo}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -999,7 +1194,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDi.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDi.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemDi}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -1012,7 +1207,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMi.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemMi.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemMi}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -1025,7 +1220,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDo.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemDo.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemDo}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -1038,7 +1233,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemFr.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemFr.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemFr}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -1051,7 +1246,7 @@
<dxg:GridColumn.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" >
<Setter Property="BorderBrush" Value="#D2D2D2" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemSa.MitarbeiterStatusColor}" />
<Setter Property="Background" Value="{Binding RowData.Row.ItemSa.MitarbeiterStatusColor, Converter={StaticResource SubstitutionBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RowData.Row.ItemSa}" Value="{x:Null}">
<Setter Property="Background" Value="#A0D2D2D2" />
@@ -1062,7 +1257,38 @@
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" AllowBestFit="True" ShowGroupPanel="False" />
<dxg:TableView AllowPerPixelScrolling="True" ShowTotalSummary="False" AutoWidth="True" AllowBestFit="True" ShowGroupPanel="False">
<dxg:TableView.RowStyle>
<Style TargetType="dxg:RowControl">
<Setter Property="ToolTipService.ToolTip">
<Setter.Value>
<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Row.Customer}" />
<Separator Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Wohnort:" Visibility="{Binding Path=Row.Customer.AddressString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.Customer.AddressString}" />
<Separator Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Kontakt:" Visibility="{Binding Path=Row.CustomerContactInformationString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.CustomerContactInformationString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
<!-- TODO: Was wird hier angezeigt? -->
<Separator Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock FontWeight="Bold" Text="Schulbegleitender Dienst:" Visibility="{Binding Path=Row.SchulbegleitenderDienstString, Converter={StaticResource StringLengthVisibilityConverter}}" />
<TextBlock Text="{Binding Row.SchulbegleitenderDienstString}" Visibility="{Binding Path=Text, Converter={StaticResource StringLengthVisibilityConverter}, RelativeSource={RelativeSource Self}}" />
</StackPanel>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Setter.Value>
</Setter>
</Style>
</dxg:TableView.RowStyle>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</GroupBox>
@@ -1076,6 +1302,31 @@
<Popup Grid.Row="0" Margin="10" x:Name="popup_KlientVertretung" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Closed="popup_Closed" Opened="popup_Opened">
<search:CustomerSearchView x:Name="KlientVertretungsearchview" />
</Popup>
<Popup Grid.Row="0" Margin="10" x:Name="Popup_CharacteristicsPreview" StaysOpen="True" Placement="Center" Opened="popup_Opened" Width="800" Height="600">
<dxp:DocumentPreviewControl x:Name="DocumentPreviewControl" CommandBarStyle="Bars">
<dxp:DocumentPreviewControl.CommandProvider>
<dxp:DocumentCommandProvider>
<dxp:DocumentCommandProvider.Actions>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.ExportCsv}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.ExportMht}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.ExportTxt}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Open}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.DocumentMap}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Watermark}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Scale}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.PrintDirect}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.PageSetup}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Save}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Send}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Parameters}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.Thumbnails}"/>
<dxb:RemoveAction ElementName="{x:Static dxpbars:DefaultPreviewBarItemNames.EditingFields}"/>
</dxp:DocumentCommandProvider.Actions>
</dxp:DocumentCommandProvider>
</dxp:DocumentPreviewControl.CommandProvider>
</dxp:DocumentPreviewControl>
</Popup>
</Grid>
<Border Grid.Row="2" Grid.ColumnSpan="3" Height="35" Margin="0,0,0,0" VerticalAlignment="Stretch" Background="#FF000000">

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Windows;
@@ -8,7 +9,6 @@ using System.Windows.Documents;
using System.Windows.Navigation;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.View;
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.Core;
@@ -25,43 +25,41 @@ namespace BeWo.SchulbegleitenderDienst
{
public partial class VertretungsMainView2
{
private readonly List<TagesansichtVM> _AbwesendeMitarbeiter = new List<TagesansichtVM>();
private readonly List<TagesansichtVM> _AbwesendeKlienten = new List<TagesansichtVM>();
private readonly List<TagesansichtVM> _SubstitutionUnwanteDayViewList = new List<TagesansichtVM>();
private readonly ObservableCollection<TagesansichtVM> _AbwesendeMitarbeiter = new ObservableCollection<TagesansichtVM>();
private readonly ObservableCollection<TagesansichtVM> _AbwesendeKlienten = new ObservableCollection<TagesansichtVM>();
private readonly ObservableCollection<TagesansichtVM> _SubstitutionUnwanteDayViewList = new ObservableCollection<TagesansichtVM>();
private readonly List<WochenansichtVM> _ItemsWochenMitarbeiter = new List<WochenansichtVM>();
private readonly List<WochenansichtVM> _ItemsWochenKlienten = new List<WochenansichtVM>();
private readonly List<WochenansichtVM> _SubstitutionUnwantedWeekViewList = new List<WochenansichtVM>();
private readonly ObservableCollection<WochenansichtVM> _ItemsWochenMitarbeiter = new ObservableCollection<WochenansichtVM>();
private readonly ObservableCollection<WochenansichtVM> _ItemsWochenKlienten = new ObservableCollection<WochenansichtVM>();
private readonly ObservableCollection<WochenansichtVM> _SubstitutionUnwantedWeekViewList = new ObservableCollection<WochenansichtVM>();
private string _Mitarbeitervertretungswocheninfo = string.Empty;
private string _DeleteSubstitutionWeek = string.Empty;
private readonly TagesVertretung _Tagesvertretung = new TagesVertretung();
private readonly WochenVertretung _Wochenvertretung = new WochenVertretung();
private bool IsInTagesansicht => ScrollViewerTagesansicht.Visibility == Visibility.Visible;
public ObservableCollection<TagesansichtVM> AbsentEmployeesDayViewList => _AbwesendeMitarbeiter;
public ObservableCollection<TagesansichtVM> AbsentCustomersDayViewList => _AbwesendeKlienten;
public ObservableCollection<TagesansichtVM> SubstitutionUnwantedDayViewList => _SubstitutionUnwanteDayViewList;
public ObservableCollection<WochenansichtVM> AbsentEmployeesWeekViewList => _ItemsWochenMitarbeiter;
public ObservableCollection<WochenansichtVM> AbsentCustomersWeekViewList => _ItemsWochenKlienten;
public ObservableCollection<WochenansichtVM> SubstitutionUnwantedWeekViewList => _SubstitutionUnwantedWeekViewList;
public VertretungsMainView2()
{
InitializeComponent();
ScrollViewerTagesansicht.Visibility = Visibility.Visible;
DataContext = this;
ScrollViewerTagesansicht.Visibility = Visibility.Visible;
WochenansichtsContainerGrid.Visibility = Visibility.Collapsed;
GridDataControlTagesansichtKlient.ItemsSource = _AbwesendeKlienten;
GridDataControlTagesansichtMitarbeiter.ItemsSource = _AbwesendeMitarbeiter;
SubstitutionUnwantedDayViewGridControl.ItemsSource = _SubstitutionUnwanteDayViewList;
GridDataControlWochenansichtMitarbeiter.ItemsSource = _ItemsWochenMitarbeiter;
GridDataControlWochenansichtKlient.ItemsSource = _ItemsWochenKlienten;
SubstitutionUnwantedWeekViewGridControl.ItemsSource = _SubstitutionUnwantedWeekViewList;
SetDefaultDatePicker(DateTime.Now.Date);
Datepicker.DateTime = DateTime.Now;
Datelbl.Content = DateTime.Now.Date.ToString("dddd dd.MM.yyyy");
SetAbwesenheiten();
SetAbsenceReasons();
MVCheckBox.IsChecked = true;
KVCheckBox.IsChecked = true;
@@ -97,7 +95,19 @@ namespace BeWo.SchulbegleitenderDienst
}
else
{
if(tagesansichtVM.Vertretung != null || tagesansichtVM.Customer?.SubstitutionStartingDayCount > 0)
var substitutionStartingDayCountCondition = false;
if(tagesansichtVM.Customer != null)
{
var substitutionNeededDate = DateTime.Now.AddDays(-1 * tagesansichtVM.Customer.SubstitutionStartingDayCount);
if(tagesansichtVM.Absencetime?.Start.HasValue ?? false)
{
substitutionStartingDayCountCondition = substitutionNeededDate < tagesansichtVM.Absencetime.Start;
}
}
if(tagesansichtVM.Vertretung?.VertretenderMitarbeiterOid != null || substitutionStartingDayCountCondition)
{
_SubstitutionUnwanteDayViewList.AddIfNotIn(tagesansichtVM);
}
@@ -107,20 +117,11 @@ namespace BeWo.SchulbegleitenderDienst
}
}
}
GridDataControlTagesansichtMitarbeiter.RefreshData();
GridDataControlTagesansichtMitarbeiter.RefreshUI();
GridDataControlTagesansichtKlient.RefreshData();
GridDataControlTagesansichtKlient.RefreshUI();
SubstitutionUnwantedDayViewGridControl.RefreshData();
SubstitutionUnwantedDayViewGridControl.RefreshUI();
});
});
}
private void LadeWochenansicht(DateTime startDatum, DateTime endDatum )
private void LadeWochenansicht(DateTime startDatum, DateTime endDatum)
{
ServiceFacade.DoOperationsServiceAsync(s => s.GetVertretungsListeForTimeSpan(startDatum, endDatum), vertretungsItems =>
{
@@ -147,7 +148,7 @@ namespace BeWo.SchulbegleitenderDienst
var itemsMitarbeiter = _Wochenvertretung.GetWochenAnsichtFromItems(time, items.Where(i => i.VertretungsStatus != VertretungsStatus.KlientKrank).ToList());
var itemsKlienten = _Wochenvertretung.GetWochenAnsichtFromItems(time, items.Where(i => i.VertretungsStatus == VertretungsStatus.KlientKrank && i.Customer.IsSubstitutionWanted).ToList());
var subsitutionUnwantedItems = _Wochenvertretung.GetWochenAnsichtFromItems(time, items.Where(i => i.VertretungsStatus == VertretungsStatus.KlientKrank && !i.Customer.IsSubstitutionWanted).ToList());
var subsitutionUnwantedItems = _Wochenvertretung.GetWochenAnsichtFromItems(time, items.Where(i => i.VertretungsStatus == VertretungsStatus.KlientKrank && (!i.Customer.IsSubstitutionWanted || i.Vertretung?.EmployeeOid != null)).ToList());
foreach (var item in itemsMitarbeiter)
{
@@ -163,15 +164,6 @@ namespace BeWo.SchulbegleitenderDienst
{
_SubstitutionUnwantedWeekViewList.AddIfNotIn(item);
}
GridDataControlWochenansichtMitarbeiter.RefreshData();
GridDataControlWochenansichtMitarbeiter.RefreshUI();
GridDataControlWochenansichtKlient.RefreshData();
GridDataControlWochenansichtKlient.RefreshUI();
SubstitutionUnwantedWeekViewGridControl.RefreshData();
SubstitutionUnwantedWeekViewGridControl.RefreshUI();
}
private void MVDatepickerVon_OnEditValueChanged(object sender, EditValueChangedEventArgs e)
@@ -354,12 +346,12 @@ namespace BeWo.SchulbegleitenderDienst
{
//MVDatepickerVon.DateTime = DateTime.Now;
//MVDatepickerBis.DateTime = DateTime.Now;
popupedit_MitarbeiterVertretungSearch.Text = "";
popupedit_MitarbeiterVertretungSearch.Text = string.Empty;
ComboBoxMitarbeiterVertretung.SelectedIndex = -1;
MitarbeiterNotice.Text = "";
MitarbeiterNotice.Text = string.Empty;
// MVDatepicker_UhrzeitVon.Text = "";
// MVDatepicker_UhrzeitVon.Text = "";
//MVDatepicker_UhrzeitBis.Text = "";
}
@@ -404,7 +396,8 @@ namespace BeWo.SchulbegleitenderDienst
absenceTime.Notice = MitarbeiterNotice.Text;
absenceTime.KrankheitsMeldung = KrankMeldungMitarbeiterDatepicker.DateTime.Date;
ServiceFacade.DoOperationsServiceAsync(s1 => s1.CheckForOverlappingSubstitutionEntries(absenceTime.Start.Value, absenceTime.End.Value, _CurrentEmployee.EmployeeOid, absenceTime.CustomerOid), isOverlapping => {
ServiceFacade.DoOperationsServiceAsync(s1 => s1.CheckForOverlappingAbsenceTimes(absenceTime.Start.Value, absenceTime.End.Value, _CurrentEmployee.EmployeeOid, absenceTime.CustomerOid), isOverlapping =>
{
this.Dispatch(() =>
{
if (isOverlapping)
@@ -428,8 +421,6 @@ namespace BeWo.SchulbegleitenderDienst
});
});
}
private void KlientVertretungsToggleButton_OnChecked(object sender, RoutedEventArgs e)
{
@@ -610,7 +601,8 @@ namespace BeWo.SchulbegleitenderDienst
absenceTime.Notice = KlientNotice.Text;
absenceTime.KrankheitsMeldung = KrankMeldungKlientDatepicker.DateTime.Date;
ServiceFacade.DoOperationsServiceAsync(s1 => s1.CheckForOverlappingSubstitutionEntries(absenceTime.Start.Value, absenceTime.End.Value, _CurrentEmployee?.EmployeeOid, _CurrentCustomer.CustomerOid), isOverlapping => {
ServiceFacade.DoOperationsServiceAsync(s1 => s1.CheckForOverlappingAbsenceTimes(absenceTime.Start.Value, absenceTime.End.Value, _CurrentEmployee?.EmployeeOid, _CurrentCustomer.CustomerOid), isOverlapping =>
{
this.Dispatch(() =>
{
if (isOverlapping)
@@ -648,25 +640,10 @@ namespace BeWo.SchulbegleitenderDienst
{
_Wochenvertretung.AddeNeueVertretungforWochenAnsicht((WochenansichtVM)GridDataControlWochenansichtMitarbeiter.SelectedItem, GridDataControlWochenansichtMitarbeiter.CurrentColumn.FieldName);
var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear());
LadeWochenansicht(x, x.AddDays(5));
var selectedDate = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear());
LadeWochenansicht(selectedDate, selectedDate.AddDays(5));
}
private void ButtonInfo_OnClick(object sender, RoutedEventArgs e)
{
//var a = (WochenansichtVM)GridDataControlKlientenWochenansicht2.SelectedItem;
//if (!a.IsMitarbeiterKrank)
//{
// // bleibt noch offen
//}
//else
//{
// MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.","Info");
//}
}
private void TagesansichtSettings_OnDefaultButtonClick(object sender, RoutedEventArgs e)
{
var button = (Button) sender;
@@ -677,375 +654,44 @@ namespace BeWo.SchulbegleitenderDienst
}
private void GridDataControlTagesansichtMitarbeiter_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
var a = (TagesansichtVM) GridDataControlTagesansichtMitarbeiter.SelectedItem;
{
var barButtonItem = new BarButtonItem {Content = "Abwesenheit löschen"};
barButtonItem.ItemClick += DeleteMitarbeiterKrankmeldung_OnClick;
e.Customizations.Add(barButtonItem);
if (e.MenuInfo.Column.FieldName.Equals("Kunde"))
{
var x = new BarButtonItem {Content = "Klient/in öffnen"};
x.ItemClick += Kundeninfo_OnClick;
e.Customizations.Add(x);
}
var barButtonItem2 = new BarButtonItem {Content = "Steckbrief anzeigen"};
barButtonItem2.ItemClick += ShowCharacteristics;
e.Customizations.Add(barButtonItem2);
}
if (e.MenuInfo.Column.FieldName == "KrankerMitarbeiter")
{
var x = new BarButtonItem {Content = "Mitarbeiter/in öffnen"};
x.ItemClick += Mitarbeiterinfo_OnClick;
e.Customizations.Add(x);
}
private void ShowCharacteristics(object sender, RoutedEventArgs e)
{
var selectedItem = GridDataControlTagesansichtMitarbeiter.SelectedItem;
if (e.MenuInfo.Column.FieldName == "Vertretung")
{
var s = new BarButtonItem {Content = "Mitarbeiter/in öffnen"};
s.ItemClick += MitarbeiterVertretunginfo_OnClick;
e.Customizations.Add(s);
}
if(selectedItem != null)
{
var selectedTagesansichtVM = (TagesansichtVM) selectedItem;
if (a.Vertretung != null)
{
var y = new BarButtonItem {Content = "Vertretung löschen"};
y.ItemClick += DeletePerson_OnClick;
e.Customizations.Add(y);
}
var url = $"{BeWoApp.SiteOfOrigin}/ReportView.aspx?type={ReportTypes.SBDCharacteristics}&customerOid={selectedTagesansichtVM.Customer.CustomerOid}";
var ys = new BarButtonItem() {Content = "Abwesenheit löschen"};
ys.ItemClick += DeleteMitarbeiterKrankmeldung_OnClick;
e.Customizations.Add(ys);
}
var tempToken = string.Empty;
ServiceFacade.DoDownloadServiceSync(s => tempToken = s.CreateTemporaryToken(url, true));
var addChar = (url.Contains("?")) ? "&" : "?";
url = $"{url}{addChar}token={tempToken}";
url = BeWoWpfUtils.GetHTMLEncodedURL(url);
BeWoUtils.NavigateToReportUri(url, "Steckbrief");
}
}
private void GridDataControlTagesansichtKlient_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
var a = (TagesansichtVM)GridDataControlTagesansichtKlient.SelectedItem;
if (e.MenuInfo.Column.FieldName == "Kunde")
{
BarButtonItem x = new BarButtonItem() { Content = "Klient/in öffnen" };
x.ItemClick += Kundeninfo_OnClick;
e.Customizations.Add(x);
}
if (e.MenuInfo.Column.FieldName == "KrankerMitarbeiter")
{
BarButtonItem x = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
x.ItemClick += Mitarbeiterinfo_OnClick;
e.Customizations.Add(x);
}
if (e.MenuInfo.Column.FieldName == "Vertretung")
{
BarButtonItem s = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
s.ItemClick += MitarbeiterVertretunginfo_OnClick;
e.Customizations.Add(s);
}
//if (a.Vertretung != null)
//{
// BarButtonItem y = new BarButtonItem() { Content = "Vertretung löschen" };
// y.ItemClick += DeletePerson_OnClick;
// e.Customizations.Add(y);
//}
BarButtonItem ys = new BarButtonItem() { Content = "Abwesenheit löschen" };
ys.ItemClick += DeleteKlientKrankmeldung_OnClick;
e.Customizations.Add(ys);
var barButtonItem = new BarButtonItem {Content = "Abwesenheit löschen"};
barButtonItem.ItemClick += DeleteKlientKrankmeldung_OnClick;
e.Customizations.Add(barButtonItem);
}
private void GridMitarbeiterEinsatz_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
// ########### KontextMenue Wochenanzeige #########
//BarButtonItem ys = new BarButtonItem() { Content = "Krankmeldung Löschen" }; // villeicht reaktivieren
//ys.ItemClick += DeleteKrankmeldung_OnClick;
//e.Customizations.Add(ys);
if (e.MenuInfo.Column.FieldName == "Kunde") // FieldNames umbennenen
{
BarButtonItem x = new BarButtonItem() { Content = "Klient/in öffnen" };
x.ItemClick += Kundeninfo_OnClick; // bearbeiten
e.Customizations.Add(x);
}
if (e.MenuInfo.Column.FieldName == "MaKrank")
{
BarButtonItem x = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
x.ItemClick += Mitarbeiterinfo_OnClick; // eee
e.Customizations.Add(x);
}
if (e.MenuInfo.Column.FieldName == "VertretungMo" || e.MenuInfo.Column.FieldName == "VertretungDi" ||
e.MenuInfo.Column.FieldName == "VertretungMi" || e.MenuInfo.Column.FieldName == "VertretungDo" ||
e.MenuInfo.Column.FieldName == "VertretungFr" || e.MenuInfo.Column.FieldName == "VertretungSa" ||
e.MenuInfo.Column.FieldName == "VertretungSo")
{
BarButtonItem s = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
s.ItemClick += MitarbeiterVertretunginfoWochenanzeige_OnClick;
e.Customizations.Add(s);
_Mitarbeitervertretungswocheninfo = e.MenuInfo.Column.FieldName;
BarButtonItem xs = new BarButtonItem() { Content = "Vertretung löschen" };
xs.ItemClick += DeletVertretungForWochenanzeige_OnClick;
e.Customizations.Add(xs);
_DeleteSubstitutionWeek = e.MenuInfo.Column.FieldName;
}
}
private void GridDataControlWochenansichtMitarbeiter_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
//if (e.MenuInfo.Column.FieldName == "Kunde") // FieldNames umbennenen
//{
// BarButtonItem x = new BarButtonItem() { Content = "Klient/in öffnen" };
// x.ItemClick += Kundeninfo_OnClick; // bearbeiten
// e.Customizations.Add(x);
//}
//if (e.MenuInfo.Column.FieldName == "MaKrank")
//{
// BarButtonItem x = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
// x.ItemClick += Mitarbeiterinfo_OnClick; // eee
// e.Customizations.Add(x);
//}
//if (e.MenuInfo.Column.FieldName == "VertretungMo" || e.MenuInfo.Column.FieldName == "VertretungDi" ||
// e.MenuInfo.Column.FieldName == "VertretungMi" || e.MenuInfo.Column.FieldName == "VertretungDo" ||
// e.MenuInfo.Column.FieldName == "VertretungFr" || e.MenuInfo.Column.FieldName == "VertretungSa" ||
// e.MenuInfo.Column.FieldName == "VertretungSo")
//{
// BarButtonItem s = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
// s.ItemClick += MitarbeiterVertretunginfoWochenanzeige_OnClick;
// e.Customizations.Add(s);
// _Mitarbeitervertretungswocheninfo = e.MenuInfo.Column.FieldName;
// BarButtonItem xs = new BarButtonItem() { Content = "Vertretung löschen" };
// xs.ItemClick += DeletVertretungForWochenanzeige_OnClick;
// e.Customizations.Add(xs);
// _DeleteSubstitutionWeek = e.MenuInfo.Column.FieldName;
//}
}
private void GridDataControlWochenansichtKlient_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
//if (e.MenuInfo.Column.FieldName == "Kunde") // FieldNames umbennenen
//{
// BarButtonItem x = new BarButtonItem() { Content = "Klient/in öffnen" };
// x.ItemClick += Kundeninfo_OnClick; // bearbeiten
// e.Customizations.Add(x);
//}
//if (e.MenuInfo.Column.FieldName == "MaKrank")
//{
// BarButtonItem x = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
// x.ItemClick += Mitarbeiterinfo_OnClick; // eee
// e.Customizations.Add(x);
//}
//if (e.MenuInfo.Column.FieldName == "VertretungMo" || e.MenuInfo.Column.FieldName == "VertretungDi" ||
// e.MenuInfo.Column.FieldName == "VertretungMi" || e.MenuInfo.Column.FieldName == "VertretungDo" ||
// e.MenuInfo.Column.FieldName == "VertretungFr" || e.MenuInfo.Column.FieldName == "VertretungSa" ||
// e.MenuInfo.Column.FieldName == "VertretungSo")
//{
// BarButtonItem s = new BarButtonItem() { Content = "Mitarbeiter/in öffnen" };
// s.ItemClick += MitarbeiterVertretunginfoWochenanzeige_OnClick;
// e.Customizations.Add(s);
// _Mitarbeitervertretungswocheninfo = e.MenuInfo.Column.FieldName;
// BarButtonItem xs = new BarButtonItem() { Content = "Vertretung löschen" };
// xs.ItemClick += DeletVertretungForWochenanzeige_OnClick;
// e.Customizations.Add(xs);
// _DeleteSubstitutionWeek = e.MenuInfo.Column.FieldName;
//}
}
private void Kundeninfo_OnClick(object sender, RoutedEventArgs e)
{
var vm = (TagesansichtVM)GridDataControlTagesansichtMitarbeiter.SelectedItem;
if (vm.Customer != null)
{
List<long> customerOidList = new List<long>();
customerOidList.Add(vm.Customer.CustomerOid);
var sgf = ServiceFacade.DoCustomerServiceSync(s => s.GetCompactCustomersById(customerOidList));
var selectedCustomer = sgf[0];
VMFactory.CreateCustomerVMAsync(selectedCustomer.CustomerOid,
cb => this.Dispatch(
() =>
BeWoUtils.OpenModalViewWindow<CustomerVM, CustomerDC, BeWoView>(cb, null, () => this.Dispatch(
delegate
{
var updatedCustomer = new CompactCustomerDC();
ServiceFacade.DoCustomerServiceSync(s =>
updatedCustomer = s.GetCompactCustomerDC(selectedCustomer.CustomerOid));
selectedCustomer = updatedCustomer;
// UpdateControls();
// customerText.Text = updatedCustomer.ToString();
BeWoUtils.UpdateAllViews(selectedCustomer);
}))
));
}
}
private void Mitarbeiterinfo_OnClick(object sender, RoutedEventArgs e)
{
var a = (TagesansichtVM)GridDataControlTagesansichtMitarbeiter.SelectedItem;
if (a.Employee != null)
{
var sgf = ServiceFacade.DoEmployeeServiceSync(s =>
s.GetActiveCompactEmployeeWithOid(a.Employee.EmployeeOid));
var selectedEmployee = sgf;
VMFactory.CreateEmployeeVMAsync(selectedEmployee.EmployeeOid,
cb => this.Dispatch(
() =>
BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, BeWoView>(cb, null,
() => this.Dispatch(
delegate
{
var updatedEmployee = new CompactEmployeeDC();
ServiceFacade.DoEmployeeServiceSync(
s =>
updatedEmployee =
s.GetActiveCompactEmployeeWithOid(selectedEmployee
.EmployeeOid));
selectedEmployee = new CompactEmployeeDC();
selectedEmployee = updatedEmployee;
// UpdateControls();
// customerText.Text = updatedCustomer.ToString();
BeWoUtils.UpdateAllViews(selectedEmployee);
}))
));
}
}
private void MitarbeiterVertretunginfo_OnClick(object sender, RoutedEventArgs e)
{
var a = (TagesansichtVM)GridDataControlTagesansichtMitarbeiter.SelectedItem;
if (a.Vertretung != null)
{
if (!a.Vertretung.Equals(""))
{
long? employeeOid = null;
if (a.Vertretung != null)
{
employeeOid = a.Vertretung.VertretenderMitarbeiterOid;
}
if (employeeOid.HasValue)
{
var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(employeeOid.Value));
var selectedEmployee = sgf;
VMFactory.CreateEmployeeVMAsync(selectedEmployee.EmployeeOid,
cb => this.Dispatch(
() =>
BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, BeWoView>(cb, null,
() => this.Dispatch(
delegate
{
var updatedEmployee = new CompactEmployeeDC();
ServiceFacade.DoEmployeeServiceSync(
s =>
updatedEmployee =
s.GetActiveCompactEmployeeWithOid(selectedEmployee
.EmployeeOid));
selectedEmployee = new CompactEmployeeDC();
selectedEmployee = updatedEmployee;
// UpdateControls();
// customerText.Text = updatedCustomer.ToString();
BeWoUtils.UpdateAllViews(selectedEmployee);
}))
));
}
}
else
{
MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt");
}
}
else
{
MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt");
}
}
private void MitarbeiterVertretunginfoWochenanzeige_OnClick(object sender, RoutedEventArgs e)
{
var x = (WochenansichtVM)GridDataControlWochenansichtMitarbeiter.SelectedItem;
foreach (var wochentag in x.VertretungsWoche)
{
if (wochentag.Key.Equals(_Mitarbeitervertretungswocheninfo))
{
_Mitarbeitervertretungswocheninfo = string.Empty;
foreach (var item in wochentag.Value)
{
if (item.Value.Vertreter != null)
{
var sgf = ServiceFacade.DoEmployeeServiceSync(s => s.GetActiveCompactEmployeeWithOid(item.Value.Vertreter.EmployeeOid));
var selectedEmployee = sgf;
VMFactory.CreateEmployeeVMAsync(selectedEmployee.EmployeeOid,
cb => this.Dispatch(
() =>
BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, BeWoView>(cb, null,
() => this.Dispatch(
delegate
{
var updatedEmployee = new CompactEmployeeDC();
ServiceFacade.DoEmployeeServiceSync(
s =>
updatedEmployee =
s.GetActiveCompactEmployeeWithOid(selectedEmployee.EmployeeOid));
selectedEmployee = new CompactEmployeeDC();
selectedEmployee = updatedEmployee;
// UpdateControls();
// customerText.Text = updatedCustomer.ToString();
BeWoUtils.UpdateAllViews(selectedEmployee);
}))
));
}
else
{
MessageBox.Show("Es wurde der Vertretung kein Mitarbeiter zugeteilt");
}
}
}
}
}
private void DeletVertretungForWochenanzeige_OnClick(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("Möchten Sie die Vertretung wirklich löschen?", "Vertretung löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
_Wochenvertretung.DeletVertretendenMitarbeiter((WochenansichtVM) GridDataControlWochenansichtMitarbeiter.SelectedItem, _DeleteSubstitutionWeek);
var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear());
LadeWochenansicht(x,x.AddDays(5));
}
}
private void DeleteMitarbeiterKrankmeldung_OnClick(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("Möchten Sie die Abwesenheit wirklich löschen?", "Abwesenheit löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
@@ -1066,28 +712,25 @@ namespace BeWo.SchulbegleitenderDienst
}
}
private void DeletePerson_OnClick(object sender, RoutedEventArgs e)
{
if (MessageBox.Show("Möchten Sie die Vertretung wirklich löschen?", "Vertretung löschen", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
_Tagesvertretung.DeleteVertretung((TagesansichtVM)GridDataControlTagesansichtMitarbeiter.SelectedItem);
LadeTagesansicht(Datepicker.DateTime.Date);
}
}
private void KrankmeldungsZeitraumBearbeitungsView(object sender, RoutedEventArgs e)
{
_Tagesvertretung.KrankMeldeZeitraumBearbeiten((TagesansichtVM)GridDataControlTagesansichtMitarbeiter.SelectedItem);
LadeTagesansicht(Datepicker.DateTime.Date);
LadeTagesansicht(Datepicker.DateTime);
}
private void GridViewBase_OnRowUpdated(object sender, RowEventArgs e)
private void AbsentCustomersDayViewGridControl_OnCellValueChanged(object sender, RowEventArgs e)
{
_Tagesvertretung.UpdateRowData((TagesansichtVM) GridDataControlTagesansichtKlient.SelectedItem);
LadeTagesansicht(Datepicker.DateTime);
}
private void AbsentEmployeesDayViewGridControl_OnCellValueChanged(object sender, RowEventArgs e)
{
_Tagesvertretung.UpdateRowData((TagesansichtVM) GridDataControlTagesansichtMitarbeiter.SelectedItem);
LadeTagesansicht(Datepicker.DateTime.Date);
LadeTagesansicht(Datepicker.DateTime);
}
private void ButtonWorkWeekView_Click(object sender, RoutedEventArgs e)
@@ -1264,14 +907,18 @@ namespace BeWo.SchulbegleitenderDienst
}
}
private void SetAbwesenheiten()
private void SetAbsenceReasons()
{
var abwesenheiten = ServiceFacade.DoCustomerServiceSync(s => s.GetAllAbsenceReasons());
ServiceFacade.DoCustomerServiceAsync(s => s.GetAllAbsenceReasons(), absenceReasons =>
{
this.Dispatch(() =>
{
ComboBoxKlientVertretung.ItemsSource = absenceReasons;
ComboBoxMitarbeiterVertretung.ItemsSource = absenceReasons;
ComboBoxKlientVertretung.ItemsSource = abwesenheiten;
ComboBoxMitarbeiterVertretung.ItemsSource = abwesenheiten;
AbwesenheitsKategorieComboBox.ItemsSource = abwesenheiten;
AbwesenheitsKategorieComboBox.ItemsSource = absenceReasons;
});
});
}
private void SetDefaultDatePicker(DateTime dt)
@@ -1365,9 +1012,52 @@ namespace BeWo.SchulbegleitenderDienst
}
}
private static void ReloadAfterEdit()
private void ReloadAfterEdit()
{
// TODO: Wird aufgerufen, wenn man einen Klienten oder Mitarbeiter bearbeitet hat und der EmployeeView oder CustomerView geschlossen wird. Das entsprechende Objekt muss neugeladen werden.
if (IsInTagesansicht)
{
LadeTagesansicht(Datepicker.DateTime);
}
else
{
var selectedDate = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear());
LadeWochenansicht(selectedDate, selectedDate.AddDays(5));
}
}
private void GridControlTagesansichtNoSubstitutionWanted_OnShowGridMenu(object sender, GridMenuEventArgs e)
{
var barButtonItem = new BarButtonItem {Content = "Abwesenheit löschen", Tag = e.Source.DataControl.SelectedItem};
barButtonItem.ItemClick += DeleteCustomerAbsenceTime_OnClick;
e.Customizations.Add(barButtonItem);
}
private void DeleteCustomerAbsenceTime_OnClick(object sender, RoutedEventArgs e)
{
var barButtonItem = (BarButtonItem) sender;
var selectedTagesansichtVM = (TagesansichtVM) barButtonItem.Tag;
_Tagesvertretung.DeleteKrankmeldung(selectedTagesansichtVM);
LadeTagesansicht(Datepicker.DateTime);
}
private void GridControlSubUnwanted_OnCellValueChanged(object sender, CellValueChangedEventArgs e)
{
_Tagesvertretung.UpdateRowData((TagesansichtVM) SubstitutionUnwantedDayViewGridControl.SelectedItem);
LadeTagesansicht(Datepicker.DateTime);
}
private void AbsentEmployeesWeekViewDataGrid_OnCellValueChanged(object sender, CellValueChangedEventArgs e)
{
var selectedWeekView = (WochenansichtVM) GridDataControlWochenansichtMitarbeiter.SelectedItem;
//_Tagesvertretung.UpdateRows(selectedWeekView.GetTagesansichtViewModels());
var x = Datepicker.DateTime.FirstDateOfWeek(Datepicker.DateTime.GetIso8601WeekOfYear());
LadeWochenansicht(x, x.AddDays(5));
}
}
}

View File

@@ -0,0 +1,194 @@
using System.Collections.Generic;
using BeWo.ViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWo.SchulbegleitenderDienst.ViewModel
{
public class VertretungsansichtBaseVM : AbstractBaseVM
{
public CompactEmployeeDC Employee { get;set; }
public CompactCustomerDC Customer { get; set; }
public string EmployeeName => Employee?.ToString();
public string CustomerName => Customer?.ToString();
public string Dringlichkeit { get; set; }
public string DringlichkeitColor { get; set; }
public string Teamleitung { get; set; }
public string Geschlecht { get; set; }
public string Pflege { get; set; }
public string Toilettengang { get; set; }
public string Aggressiv { get; set; }
private string _Notice;
public string Bemerkung
{
get => _Notice;
set
{
if (!Equals(_Notice, value))
{
_Notice = value;
FirePropertyChanged(nameof(Bemerkung));
}
}
}
public List<ContactDC> CustomerContactInformation { get; set; }
public string CustomerContactInformationString
{
get
{
if (CustomerContactInformation == null || CustomerContactInformation.Count == 0)
{
return null;
}
return GetContactInformationString(CustomerContactInformation);
}
}
public List<ContactDC> EmployeeContactInformation { get; set; }
public string EmployeeContactInformationString
{
get
{
if (EmployeeContactInformation == null || EmployeeContactInformation.Count == 0)
{
return null;
}
return GetContactInformationString(EmployeeContactInformation);
}
}
private static string GetContactInformationString(IReadOnlyCollection<ContactDC> contactList)
{
if (contactList == null || contactList.Count == 0)
{
return null;
}
var result = string.Empty;
foreach (var item in contactList)
{
if (result.Length > 0)
{
result += "\n";
}
var typeAsString = string.Empty;
switch (item.ContactType)
{
case ContactType.business_Mail:
typeAsString = "E-Mail: ";
break;
case ContactType.business_Fax:
typeAsString = "Fax: ";
break;
case ContactType.business_Phone:
typeAsString = "Tel.: ";
break;
case ContactType.business_MobilePhone:
typeAsString = "Handynr.: ";
break;
}
result += typeAsString + item.ContactValue;
}
return result;
}
public string SchoolString
{
get
{
if (Schools == null || Schools.Count == 0)
{
return null;
}
var result = string.Empty;
foreach (var item in Schools)
{
if (result.Length > 0)
{
result += ", ";
}
result += item.Organisation.Name;
}
return result;
}
}
public List<VertretungDC> LastSubstitutions { get; set; }
public string LastSubstitutionsString
{
get
{
if (LastSubstitutions == null || LastSubstitutions.Count == 0)
{
return null;
}
var result = string.Empty;
foreach (var item in LastSubstitutions)
{
if (result.Length > 0)
{
result += "\n";
}
var start = item.VertretungsZeitraumVon.Minute == 0 && item.VertretungsZeitraumVon.Hour == 0 ? item.VertretungsZeitraumVon.ToString("dd.MM.yyyy") : item.VertretungsZeitraumVon.ToString("dd.MM.yyyy HH:mm");
var end = item.VertretungsZeitraumBis.Minute == 0 && item.VertretungsZeitraumBis.Hour == 0 ? item.VertretungsZeitraumBis.ToString("dd.MM.yyyy") : item.VertretungsZeitraumBis.ToString("dd.MM.yyyy HH:mm");
result += $"{start} - {end}";
}
return result;
}
}
public string SchulbegleitenderDienstString;
public List<CustomerOrganisationRelationDC> Schools { get; set; }
public string CustomerPflege { get; set; }
public string EmployeePflege { get; set; }
public string CustomerToilettengang { get; set; }
public string EmployeeToilettengang { get; set; }
public string CustomerAggressivitaet { get; set; }
public string EmployeeAggressivitaet { get; set; }
public string CustomerHygienebelehrung { get; set; }
public string EmployeeHygienebelehrung { get; set; }
public string CustomerSchutzstufe { get; set; }
public string EmployeeSchutzstufe { get; set; }
}
}

View File

@@ -1,47 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using BeWo.ServiceProxy;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
using BS.Shared.Extensions;
using DevExpress.Xpf.Grid;
namespace BeWo.SchulbegleitenderDienst
{
class WochenVertretung
internal class WochenVertretung
{
public List<WochenansichtVM> GetWochenAnsichtFromItems(DateTime time, List<TagesansichtVM> _items)
{
List<WochenansichtVM> _itemsWochen = new List<WochenansichtVM>();
var _itemsWochen = new List<WochenansichtVM>();
DateTime startdt = time.FirstDateOfWeek(time.GetIso8601WeekOfYear());
var startdt = time.FirstDateOfWeek(time.GetIso8601WeekOfYear());
Dictionary<String, WochenansichtVM> key2WochenAnsicht = new Dictionary<string, WochenansichtVM>();
var key2WochenAnsicht = new Dictionary<string, WochenansichtVM>();
foreach (var item in _items)
{
String key = String.Format("{0}_{1}_{2}", item.Absencetime.AbsenceTimeOid,
item.Customer != null ? item.Customer.CustomerOid : 0,
item.Employee != null ? item.Employee.EmployeeOid : 0);
var key = $"{item.Absencetime.AbsenceTimeOid}_{item.Customer?.CustomerOid ?? 0}_{item.Employee?.EmployeeOid ?? 0}";
WochenansichtVM wochenansicht = null;
WochenansichtVM wochenansicht;
if (!key2WochenAnsicht.ContainsKey(key))
{
wochenansicht = new WochenansichtVM();
wochenansicht.VertretungsWoche = new Dictionary<string, Dictionary<DateTime, TagesansichtVM>>();
wochenansicht.KlientvertretungsWoche =
new Dictionary<string, Dictionary<DateTime, TagesansichtVM>>();
wochenansicht.WochenBeschreibung = item.WochenansichtBemerkung;
wochenansicht = new WochenansichtVM
{
VertretungsWoche = new Dictionary<string, Dictionary<DateTime, TagesansichtVM>>(),
KlientvertretungsWoche = new Dictionary<string, Dictionary<DateTime, TagesansichtVM>>(),
WochenBeschreibung = item.WochenansichtBemerkung,
Customer = item.Customer,
Employee = item.Employee
};
wochenansicht.Customer = item.Customer;
wochenansicht.Employee = item.Employee;
if (String.IsNullOrEmpty(wochenansicht.Dringlichkeit))
if (string.IsNullOrEmpty(wochenansicht.Dringlichkeit))
{
wochenansicht.Dringlichkeit = item.Dringlichkeit;
wochenansicht.DringlichkeitColor = item.DringlichkeitColor;
@@ -56,22 +49,18 @@ namespace BeWo.SchulbegleitenderDienst
key2WochenAnsicht.Add(key, wochenansicht);
_itemsWochen.Add(wochenansicht);
}
else
{
wochenansicht = key2WochenAnsicht[key];
}
DateTime montagDt = startdt.Date;
DateTime dienstagDt = startdt.Date.AddDays(1);
DateTime mittwochDt = startdt.Date.AddDays(2);
DateTime donnerstagDt = startdt.Date.AddDays(3);
DateTime freitagDt = startdt.Date.AddDays(4);
DateTime samstagDt = startdt.Date.AddDays(5);
var montagDt = startdt.Date;
var dienstagDt = startdt.Date.AddDays(1);
var mittwochDt = startdt.Date.AddDays(2);
var donnerstagDt = startdt.Date.AddDays(3);
var freitagDt = startdt.Date.AddDays(4);
var samstagDt = startdt.Date.AddDays(5);
// Montag | 0
WochentagVerarbeitung(montagDt, item, wochenansicht);
@@ -96,9 +85,8 @@ namespace BeWo.SchulbegleitenderDienst
return _itemsWochen;
}
private void WochentagVerarbeitung(DateTime wochentagDt, TagesansichtVM item, WochenansichtVM wwk)
private static void WochentagVerarbeitung(DateTime wochentagDt, TagesansichtVM item, WochenansichtVM wwk)
{
if (wochentagDt == item.Datum)
{
switch (wochentagDt.DayOfWeek)
@@ -121,13 +109,8 @@ namespace BeWo.SchulbegleitenderDienst
case DayOfWeek.Saturday:
wwk.ItemSa = item;
break;
}
}
}
private string AddWeekView(DateTime dayOfWeekDateTime, Dictionary<AppointmentDayOfWeek, string> wochentagsarbeitszeit)
@@ -143,7 +126,7 @@ namespace BeWo.SchulbegleitenderDienst
}
}
return "";
return string.Empty;
}
public void AddeNeueVertretungforWochenAnsicht(WochenansichtVM wochenVm, string tag)
@@ -176,7 +159,7 @@ namespace BeWo.SchulbegleitenderDienst
}
if (tagesVm != null)
{
{
var view = new VertretungsSearchView(tagesVm.Datum, tagesVm.Customer, tagesVm, wochenVm, wochenVm.Employee);
view.RaiseCustomEvent += KlientenWochen_RaiseCustomEvent;
@@ -187,7 +170,6 @@ namespace BeWo.SchulbegleitenderDienst
public void KlientenWochen_RaiseCustomEvent(object sender, VertretungSelectedEventArgs e)
{
UpdateMitarbeiterToVertretungKlientenWochenansicht(e.Employee, e.VertretungVon, e.VertretungBis, e.TagesItem, e.WochenItem);
}
private static void UpdateMitarbeiterToVertretungKlientenWochenansicht(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate, TagesansichtVM tagesItem, WochenansichtVM wochenItem)

View File

@@ -1,33 +1,11 @@
using System;
using System.Collections.Generic;
using BS.Shared.DataContracts.Compact;
using BeWo.SchulbegleitenderDienst.ViewModel;
namespace BeWo.SchulbegleitenderDienst
{
public class WochenansichtVM
public class WochenansichtVM : VertretungsansichtBaseVM
{
public CompactEmployeeDC Employee { get; set; }
public CompactCustomerDC Customer { get; set; }
public string EmployeeName => Employee?.ToString();
public string CustomerName => Customer?.ToString();
public string Dringlichkeit { get; set; }
public string DringlichkeitColor { get; set; }
public string Teamleitung { get; set; }
public string Geschlecht { get; set; }
public string Pflege { get; set; }
public string Toilettengang { get; set; }
public string Aggressiv { get; set; }
public TagesansichtVM ItemMo { get; set; }
public TagesansichtVM ItemDi { get; set; }
public TagesansichtVM ItemMi { get; set; }
@@ -35,55 +13,10 @@ namespace BeWo.SchulbegleitenderDienst
public TagesansichtVM ItemFr { get; set; }
public TagesansichtVM ItemSa { get; set; }
//public CompactEmployeeDC VertreterDi { get; set; }
//public CompactEmployeeDC VertreterMi { get; set; }
//public CompactEmployeeDC VertreterDo { get; set; }
//public CompactEmployeeDC VertreterFr { get; set; }
//public CompactEmployeeDC VertreterSa { get; set; }
//public CompactEmployeeDC VertreterMo { get; set; }
//public CompactEmployeeDC VertreterDi { get; set; }
//public CompactEmployeeDC VertreterMi { get; set; }
//public CompactEmployeeDC VertreterDo { get; set; }
//public CompactEmployeeDC VertreterFr { get; set; }
//public CompactEmployeeDC VertreterSa { get; set; }
public string Bemerkung { get; set; }
public string WochenBeschreibung { get; set; }
//public String VertretungStatusColorMo { get; set; }
//public String VertretungStatusColorDi { get; set; }
//public String VertretungStatusColorMi { get; set; }
//public String VertretungStatusColorDo { get; set; }
//public String VertretungStatusColorFr { get; set; }
//public String VertretungStatusColorSa { get; set; }
//public string Mo { get; set; }
//public string Di { get; set; }
//public string Mi { get; set; }
//public string Do { get; set; }
//public string Fr { get; set; }
//public string Sa { get; set; }
//public string So { get; set; }
//KlientenView
public Dictionary<string, Dictionary<DateTime, TagesansichtVM>> VertretungsWoche { get; set; }
////Fürs WPF Employee Wochenanzeige
//public string EingesetztBeiMo { get; set; }
//public string EingesetztBeiDi { get; set; }
//public string EingesetztBeiMi { get; set; }
//public string EingesetztBeiDo { get; set; }
//public string EingesetztBeiFr { get; set; }
//public string EingesetztBeiSa { get; set; }
//MitarbeiterView
public Dictionary<string, Dictionary<DateTime, TagesansichtVM>> KlientvertretungsWoche { get; set; }
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -290,7 +290,7 @@
</dxg:GridColumn>
<dxg:GridColumn FieldName="OrganisationString" Header="Organisation" Width="150" AllowEditing="False" />
<dxg:GridColumn FieldName="PersonString" Header="Ansprechpartner" Width="150" AllowEditing="False" />
<dxg:GridColumn x:Name="gridcolumn_evironmentroleorganisation" FieldName="Role" Header="Rolle" Width="150" />
<dxg:GridColumn x:Name="gridcolumn_evironmentroleorganisation" FieldName="Role" Header="Rolle" Width="150" ReadOnly="True" />
<dxg:GridColumn FieldName="AddressSummaryInfo" Header="Adresse" Width="150" />
<dxg:GridColumn FieldName="ContactSummaryInfo" Header="Kontaktdaten" Width="150" />
<dxg:GridColumn FieldName="Info1" Header="Info" Width="200" />

View File

@@ -1,20 +1,16 @@
<UserControl x:Class="BeWo.View.WaitLayer2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:BeWo="clr-namespace:BeWo"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Foreground="{DynamicResource BSOrangeBrush}">
<UserControl.Resources>
<UserControl.Resources>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="{Binding Path=Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" />
<Setter Property="Width" Value="12" />
<Setter Property="Height" Value="40" />
</Style>
<Storyboard x:Key="OnLoaded1" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00.1" Storyboard.TargetName="bSLogoControl" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" >
<LinearDoubleKeyFrame KeyTime="0:0:0" Value="45" />
@@ -41,30 +37,27 @@
<LinearDoubleKeyFrame KeyTime="0:0:0" Value="360" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
</UserControl.Resources>
<UserControl.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource OnLoaded1}" />
</EventTrigger>
</UserControl.Triggers>
<Grid>
<Grid Background="White" Opacity="0.01" />
<Border CornerRadius="5,5,5,5" Opacity="0.92" BorderThickness="1,1,1,1" Padding="5,5,5,5" BorderBrush="#FF606060" VerticalAlignment="Center" Width="250" Height="100" Background="#FFFFFFFF">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#F3FFFFFF" Offset="0.027" />
<GradientStop Color="#D7FFFFFF" Offset="1" />
</LinearGradientBrush>
</Border.OpacityMask>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="2*" />
</Grid.RowDefinitions>
<Label Content="Daten werden übertragen. Bitte warten..." Foreground="#FF000000" FontSize="12" FontFamily="Microsoft Sans Serif" FontWeight="Normal" HorizontalAlignment="Center" VerticalAlignment="Center" />
<Grid>
<Grid Background="White" Opacity="0.01" />
<Border CornerRadius="5,5,5,5" Opacity="0.92" BorderThickness="1,1,1,1" Padding="5,5,5,5" BorderBrush="#FF606060" VerticalAlignment="Center" Width="250" Height="100" Background="#FFFFFFFF">
<Border.OpacityMask>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#F3FFFFFF" Offset="0.027" />
<GradientStop Color="#D7FFFFFF" Offset="1" />
</LinearGradientBrush>
</Border.OpacityMask>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="2*" />
</Grid.RowDefinitions>
<Label Content="Daten werden übertragen. Bitte warten..." Foreground="#FF000000" FontSize="12" FontFamily="Microsoft Sans Serif" FontWeight="Normal" HorizontalAlignment="Center" VerticalAlignment="Center" />
<Grid Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Width="40" Height="40" x:Name="bSLogoControl" RenderTransformOrigin="0.5,0.5" Background="#00000000" >
<Grid.RenderTransform>
<TransformGroup>
@@ -74,7 +67,9 @@
<TranslateTransform X="0" Y="0" />
</TransformGroup>
</Grid.RenderTransform>
<Viewbox StretchDirection="Both" Stretch="Fill" MaxWidth="{Binding Path=Width, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" MaxHeight="{Binding Path=Height, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
<Viewbox StretchDirection="Both" Stretch="Fill"
MaxWidth="{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
MaxHeight="{Binding Path=ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}">
<Canvas Width="100" Height="100">
<Canvas Width="100" Height="100" Canvas.Left="0" Canvas.Top="0">
<Rectangle Canvas.Left="44" Canvas.Top="0" RadiusX="6" RadiusY="6"/>
@@ -160,7 +155,7 @@
</Canvas>
</Viewbox>
</Grid>
</Grid>
</Border>
</Grid>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@@ -1,4 +1,5 @@
using System.Windows.Controls;
using System.Windows;
using System.Windows.Controls;
namespace BeWo.View
{

View File

@@ -2977,7 +2977,34 @@ namespace BeWo.Data.Access
return c.List<SchedulerAppointment>();
}
public bool CheckForOverlappingSubstitutions(long? employeeOid, long? customerOid, DateTime startDate, DateTime endDate)
public bool CheckForOverlappingSubstitutions(long? employeeOid, long? customerOid, DateTime startDate, DateTime endDate, long? substitutionOid)
{
var c = CreateCriteria<Vertretung>();
var employeeRestriction = Restrictions.Eq(nameof(Vertretung.EmployeeOid), employeeOid);
var customerRestriction = Restrictions.Eq(nameof(Vertretung.CustomerOid), customerOid);
var notCurrentSubstitution = Restrictions.Not(Restrictions.Eq(nameof(BeWoEntityBase.Oid), substitutionOid));
var peopleRestriction = Restrictions.Or(employeeRestriction, customerRestriction);
var timeRestriction = CreateBetweenDateTimesCriterion(startDate, endDate, nameof(Vertretung.VertretungsZeitraumVon), nameof(Vertretung.VertretungsZeitraumBis));
c.Add(peopleRestriction).Add(timeRestriction).Add(notCurrentSubstitution);
return c.List<Vertretung>().Any();
}
private static AbstractCriterion CreateBetweenDateTimesCriterion(DateTime start, DateTime end, string propertyNameStart, string propertyNameEnd)
{
var inBetween1 = Restrictions.And(Restrictions.Ge(propertyNameStart, start), Restrictions.Le(propertyNameStart, end));
var inBetween2 = Restrictions.And(Restrictions.Le(propertyNameStart, start), Restrictions.Ge(propertyNameEnd, end));
var inBetween3 = Restrictions.And(Restrictions.Le(propertyNameStart, start), Restrictions.Ge(propertyNameEnd, start));
var inBetween4 = Restrictions.And(Restrictions.Ge(propertyNameStart, start), Restrictions.Le(propertyNameEnd, end));
return Restrictions.Or(Restrictions.Or(inBetween1, inBetween2), Restrictions.Or(inBetween3, inBetween4));
}
public bool CheckForOverlappingAbsenceTimes(DateTime startDate, DateTime endDate, long? employeeOid, long? customerOid)
{
var c = CreateCriteria<AbsenceTime>();
@@ -2992,14 +3019,17 @@ namespace BeWo.Data.Access
return c.List<AbsenceTime>().Any();
}
private static AbstractCriterion CreateBetweenDateTimesCriterion(DateTime start, DateTime end, string propertyNameStart, string propertyNameEnd)
public IList<Vertretung> GetLastSubstitutionItems(long employeeOid, int count)
{
var inBetween1 = Restrictions.And(Restrictions.Ge(propertyNameStart, start), Restrictions.Le(propertyNameStart, end));
var inBetween2 = Restrictions.And(Restrictions.Le(propertyNameStart, start), Restrictions.Ge(propertyNameEnd, end));
var inBetween3 = Restrictions.And(Restrictions.Le(propertyNameStart, start), Restrictions.Ge(propertyNameEnd, start));
var inBetween4 = Restrictions.And(Restrictions.Ge(propertyNameStart, start), Restrictions.Le(propertyNameEnd, end));
var criteria = CreateCriteria<Vertretung>();
return Restrictions.Or(Restrictions.Or(inBetween1, inBetween2), Restrictions.Or(inBetween3, inBetween4));
criteria.Add(Restrictions.Eq(nameof(Vertretung.EmployeeOid), employeeOid));
criteria.AddOrder(Order.Desc(nameof(Vertretung.VertretungsZeitraumBis)));
criteria.SetMaxResults(count);
return criteria.List<Vertretung>();
}
}
}

View File

@@ -9,53 +9,53 @@ namespace BeWo.Data.Entities
{
public class Customer : BeWoEntityBase
{
public static string PropertyName_AbsenceTimes = "AbsenceTimes";
public static string PropertyName_Ansprechpartner = "Ansprechpartner";
public static string PropertyName_AssessmentSheetCategoryList = "AssessmentSheetCategoryList";
public static string PropertyName_Childs = "Childs";
public static string PropertyName_Customer2CostBearerList = "Customer2CostBearerList";
public static string PropertyName_Customer2PersonList = "Customer2PersonList";
public static string PropertyName_Customer2OrganisationList = "Customer2OrganisationList";
public static string PropertyName_DebitorNumber = "DebitorNumber";
public static string PropertyName_CostCenter = "CostCenter";
public static string PropertyName_Diagnosis = "Diagnosis";
public static string PropertyName_Diagnosis2CustomerList = "Diagnosis2CustomerList";
public static string PropertyName_Employee2CustomerList = "Employee2CustomerList";
public static string PropertyName_FamilyData = "FamilyData";
public static string PropertyName_Team2CustomerList = "Team2CustomerList";
public static string PropertyName_EquityContribution = "EquityContribution";
public static string PropertyName_ICD10Diagnosis = "ICD10Diagnosis";
public static string PropertyName_IsAdvisedOrAttended = "IsAdvisedOrAttended";
public static string PropertyName_Medication = "Medication";
public static string PropertyName_Jugendamt = "Jugendamt";
public static string PropertyName_Person = "Person";
public static string PropertyName_PlacementList = "PlacementList";
public static string PropertyName_ReferenceNumber = "ReferenceNumber";
public static string PropertyName_ServiceRecordList = "ServiceRecordList";
public static string PropertyName_SupportConcepts = "SupportConcepts";
public static string PropertyName_TerminationDate = "TerminationDate";
public static string PropertyName_TerminationReason = "TerminationReason";
public static string PropertyName_ValueList = "ValueList";
public static string PropertyName_VarFieldValueList = "VarFieldValueList";
public static string PropertyName_Medikamentenverordnungslisten = "Medikamentenverordnungslisten";
public static string PropertyName_AssistanceBegin = "AssistanceBegin";
public static string PropertyName_AusstVersAmt = "AusstVersAmt";
public static string PropertyName_AusweisGueltigVon = "AusweisGueltigVon";
public static string PropertyName_AusweisGueltigBis = "AusweisGueltigBis";
public static string PropertyName_AusweisUnbefristetGueltig = "AusweisUnbefristetGueltig";
public static string PropertyName_BeiblattGueltigBis = "BeiblattGueltigBis";
public static string PropertyName_GradDerBehinderung = "GradDerBehinderung";
public static string PropertyName_MerkzeichenListe = "MerkzeichenListe";
public static string PropertyName_BehinderungsartenListe = "BehinderungsartenListe";
public static string PropertyName_CustomerAlias = "CustomerAlias";
public static string PropertyName_Pflegegrad = "Pflegegrad";
public static string PropertyName_IsMigrant = "IsMigrant";
public static string PropertyName_Nationalitaet = "Nationalitaet";
public static string PropertyName_AufenthaltsStatus = "AufenthaltsStatus";
public static string PropertyName_VertretungGewuenscht = "VertretungGewuenscht";
public static string PropertyName_AbWelchemKrankheitsTag = "AbWelchemKrankheitsTag ";
public static string PropertyName_AbsenceTimes = "AbsenceTimes";
public static string PropertyName_Ansprechpartner = "Ansprechpartner";
public static string PropertyName_AssessmentSheetCategoryList = "AssessmentSheetCategoryList";
public static string PropertyName_Childs = "Childs";
public static string PropertyName_Customer2CostBearerList = "Customer2CostBearerList";
public static string PropertyName_Customer2PersonList = "Customer2PersonList";
public static string PropertyName_Customer2OrganisationList = "Customer2OrganisationList";
public static string PropertyName_DebitorNumber = "DebitorNumber";
public static string PropertyName_CostCenter = "CostCenter";
public static string PropertyName_Diagnosis = "Diagnosis";
public static string PropertyName_Diagnosis2CustomerList = "Diagnosis2CustomerList";
public static string PropertyName_Employee2CustomerList = "Employee2CustomerList";
public static string PropertyName_FamilyData = "FamilyData";
public static string PropertyName_Team2CustomerList = "Team2CustomerList";
public static string PropertyName_EquityContribution = "EquityContribution";
public static string PropertyName_ICD10Diagnosis = "ICD10Diagnosis";
public static string PropertyName_IsAdvisedOrAttended = "IsAdvisedOrAttended";
public static string PropertyName_Medication = "Medication";
public static string PropertyName_Jugendamt = "Jugendamt";
public static string PropertyName_Person = "Person";
public static string PropertyName_PlacementList = "PlacementList";
public static string PropertyName_ReferenceNumber = "ReferenceNumber";
public static string PropertyName_ServiceRecordList = "ServiceRecordList";
public static string PropertyName_SupportConcepts = "SupportConcepts";
public static string PropertyName_TerminationDate = "TerminationDate";
public static string PropertyName_TerminationReason = "TerminationReason";
public static string PropertyName_ValueList = "ValueList";
public static string PropertyName_VarFieldValueList = "VarFieldValueList";
public static string PropertyName_Medikamentenverordnungslisten = "Medikamentenverordnungslisten";
public static string PropertyName_AssistanceBegin = "AssistanceBegin";
public static string PropertyName_AusstVersAmt = "AusstVersAmt";
public static string PropertyName_AusweisGueltigVon = "AusweisGueltigVon";
public static string PropertyName_AusweisGueltigBis = "AusweisGueltigBis";
public static string PropertyName_AusweisUnbefristetGueltig = "AusweisUnbefristetGueltig";
public static string PropertyName_BeiblattGueltigBis = "BeiblattGueltigBis";
public static string PropertyName_GradDerBehinderung = "GradDerBehinderung";
public static string PropertyName_MerkzeichenListe = "MerkzeichenListe";
public static string PropertyName_BehinderungsartenListe = "BehinderungsartenListe";
public static string PropertyName_CustomerAlias = "CustomerAlias";
public static string PropertyName_Pflegegrad = "Pflegegrad";
public static string PropertyName_IsMigrant = "IsMigrant";
public static string PropertyName_Nationalitaet = "Nationalitaet";
public static string PropertyName_AufenthaltsStatus = "AufenthaltsStatus";
public static string PropertyName_VertretungGewuenscht = "VertretungGewuenscht";
public static string PropertyName_AbWelchemKrankheitsTag = "AbWelchemKrankheitsTag ";
public static string PropertyName_VertretungDringendErforderlich = "VertretungGewuenscht";
public static string PropertyName_Arbeitszeit = "Arbeitszeit";
public static string PropertyName_Arbeitszeit = "Arbeitszeit";
private Auszahlungsintervall _Auszahlungsintervall;
private IList<AbsenceTime> _AbsenceTimes;
@@ -289,8 +289,6 @@ namespace BeWo.Data.Entities
}
}
public virtual IList<Team2Customer> Team2CustomerList
{
get { return _Team2CustomerList ?? (_Team2CustomerList = new List<Team2Customer>()); }

View File

@@ -16,7 +16,7 @@
</property>
<property name="connection.connection_string">
Server=localhost;Password=root;User ID=root; Initial Catalog=alpha
Server=localhost;Password=root;User ID=root; Initial Catalog=bewodemo
</property>
<property name="dialect">

View File

@@ -132,6 +132,9 @@ namespace Host
case ReportTypes.NotizenKategorie:
report = CreateNotizenReport();
break;
case ReportTypes.SBDCharacteristics:
report = CreateSBDCharacteristicsReport();
break;
default:
report = CreateQueryReport();
break;
@@ -526,6 +529,13 @@ namespace Host
return reportCreator.CreateNotizenReport(kategorieOid, start, end);
}
private XtraReport CreateSBDCharacteristicsReport()
{
var customerOid = long.Parse(Request.Params["customerOid"]);
return reportCreator.CreateSBDCharacteristicsReport(customerOid);
}
private AbstractReportCreator GetReportCreator()
{
String t = slicedToken["tenant"].ToString();

View File

@@ -66,6 +66,8 @@ namespace BeWo.Report
public abstract XtraReport CreateNotizenReport(long kategorieOid, DateTime start, DateTime end);
public abstract XtraReport CreateSBDCharacteristicsReport(long customerOid);
public abstract XtraReport CreateSbdLeistungsnachweisForAllCustomers(int month, int year, long orgaOid, long empOid, long serviceCategoryOid, int startDay, int endDay);
public abstract XtraReport CreateSbdLeistungsnachweisForSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long serviceCategoryOid, int startDay, int endDay);

View File

@@ -615,5 +615,13 @@ namespace BeWo.Report
}
return report as XtraReport;
}
public override XtraReport CreateSBDCharacteristicsReport(long customerOid)
{
var report = FindReportImp<SBDCharacteristicsRO>();
report.SetReportDataSource(SBDCharacteristicsRO.Create(MapperFactory.CustomerDC_Customer.MapToNewDC(DAOFactory.GenericDAO.LoadByID<Customer>(customerOid))));
return report as XtraReport;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using DevExpress.XtraReports.UI;
using BeWo.Report.ReportObjects;
namespace BeWo.Report.DefaultReports
{
public partial class SBDCharacteristicsReport : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<SBDCharacteristicsRO>
{
public SBDCharacteristicsReport()
{
InitializeComponent();
}
public void SetReportDataSource(SBDCharacteristicsRO pRO)
{
this.bindingSource1.DataSource = pRO;
}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -75,12 +75,14 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Charts.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.DataAccess.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Pdf.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.RichEdit.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Xpo.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraCharts.v17.1.Wizard, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
</Reference>
@@ -88,6 +90,7 @@
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DevExpress.XtraEditors.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraGauges.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.PivotGrid.v17.1.Core, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPivotGrid.v17.1, Version=17.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
@@ -149,6 +152,12 @@
<Compile Include="DefaultReports\AdditionalServiceBookingReport.Designer.cs">
<DependentUpon>AdditionalServiceBookingReport.cs</DependentUpon>
</Compile>
<Compile Include="DefaultReports\SBDCharacteristicsReport.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="DefaultReports\SBDCharacteristicsReport.Designer.cs">
<DependentUpon>SBDCharacteristicsReport.cs</DependentUpon>
</Compile>
<Compile Include="DefaultReports\EmployeeDataReport.cs">
<SubType>Component</SubType>
</Compile>
@@ -362,6 +371,7 @@
<Compile Include="ReportObjects\MitarbeiterstundenkontoBerechnung.cs" />
<Compile Include="ReportObjects\MitarbeiterstundenkontoMonateRO.cs" />
<Compile Include="ReportObjects\MitarbeiterstundenkontoRO.cs" />
<Compile Include="ReportObjects\SBDCharacteristicsRO.cs" />
<Compile Include="ReportObjects\SbdStundenaufstellungRO.cs" />
<Compile Include="ReportObjects\Settlement2RO.cs" />
<Compile Include="ReportObjects\ServiceInvoiceRO.cs" />
@@ -379,6 +389,10 @@
<EmbeddedResource Include="DefaultReports\AdditionalServiceBookingReport.resx">
<DependentUpon>AdditionalServiceBookingReport.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DefaultReports\SBDCharacteristicsReport.resx">
<DependentUpon>SBDCharacteristicsReport.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="DefaultReports\EmployeeDataReport.resx">
<DependentUpon>EmployeeDataReport.cs</DependentUpon>
<SubType>Designer</SubType>

View File

@@ -0,0 +1,231 @@
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.ICD10;
using BS.Shared;
using BS.Shared.DataContracts;
namespace BeWo.Report.ReportObjects
{
public class SBDCharacteristicsRO : AbstractBeWoReportObject<SBDCharacteristicsRO>
{
public long CustomerOid { get; set; }
public List<CustomerCostBearerRelationDC> CostBearers { get; set; }
public string DateOfBirth { get; set; }
public string Disabilities { get; set; }
public List<CustomerPersonRelationDC> EnvironmentPersons { get; set; }
public List<CustomerOrganisationRelationDC> EnvironmentOrganisations { get; set; }
public List<AbsenceTimeDC> Abwesenheiten { get; set; }
public string FamilyStatus { get; set; }
public string Fax { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Mail { get; set; }
public string Mobile { get; set; }
public string Name => FirstName + " " + LastName;
public string Notice { get; set; }
public string Occupation { get; set; }
public string Phone { get; set; }
public string PostCode { get; set; }
public string ReferenceNumber { get; set; }
public List<CustomerEmployeeRelationDC> RelatedEmployees { get; set; }
public string Sex { get; set; }
public string Street { get; set; }
public string Town { get; set; }
public object VarField1 { get; set; }
public object VarField2 { get; set; }
public object VarField3 { get; set; }
public object VarField4 { get; set; }
public object VarField5 { get; set; }
public object VarField6 { get; set; }
public object VarField7 { get; set; }
public object VarField8 { get; set; }
public object VarField9 { get; set; }
public object VarField10 { get; set; }
public List<ICD10Row> ICD10Diagnosen { get; set; }
public CustomerDC Customer { get; set; }
public static SBDCharacteristicsRO Create(CustomerDC pDC)
{
var result = new SBDCharacteristicsRO {Customer = pDC};
if (pDC.AbsenceTimes != null)
{
result.Abwesenheiten = pDC.AbsenceTimes.OrderBy(a => a.Start).ToList();
}
result.CustomerOid = pDC.CustomerOid.Value;
result.FirstName = pDC.FirstName;
result.LastName = pDC.LastName;
result.ReferenceNumber = pDC.ReferenceNumber;
if (pDC.DateOfBirth.HasValue)
{
result.DateOfBirth = pDC.DateOfBirth.Value.ToShortDateString();
}
result.ICD10Diagnosen = new List<ICD10Row>();
foreach (var idc10 in pDC.ICD10DiagnosisCodes)
{
result.ICD10Diagnosen.Add(new ICD10Row(idc10, ICD10DAO.GetDiagnosisForCode(idc10)));
}
result.Sex = pDC.Sex == BS.Shared.Sex.Female ? "weiblich" : "männlich";
result.Occupation = pDC.Profession;
if (pDC.FamilyStatus.HasValue)
{
switch (pDC.FamilyStatus.Value)
{
case BS.Shared.FamilyStatus.Divorced:
result.FamilyStatus = "geschieden";
break;
case BS.Shared.FamilyStatus.Married:
result.FamilyStatus = "verheiratet";
break;
case BS.Shared.FamilyStatus.Single:
result.FamilyStatus = "ledig";
break;
case BS.Shared.FamilyStatus.Widowed:
result.FamilyStatus = "verwitwet";
break;
case BS.Shared.FamilyStatus.Partner:
result.FamilyStatus = "in Partnerschaft";
break;
case BS.Shared.FamilyStatus.PartnerDivorced:
result.FamilyStatus = "getrennt lebend";
break;
case BS.Shared.FamilyStatus.PartnerDead:
result.FamilyStatus = "partnerhinterblieben";
break;
case BS.Shared.FamilyStatus.PartnerMarried:
result.FamilyStatus = "verpartnert";
break;
case BS.Shared.FamilyStatus.Entpartnert:
result.FamilyStatus = "entpartnert";
break;
}
}
result.Street = pDC.Street;
result.Town = pDC.Town;
result.PostCode = pDC.PostalCode;
foreach (var iContact in pDC.ContactInformations)
{
switch (iContact.ContactType)
{
case ContactType.business_Phone:
result.Phone = iContact.ContactValue;
break;
case ContactType.business_MobilePhone:
result.Mobile = iContact.ContactValue;
break;
case ContactType.business_Mail:
result.Mail = iContact.ContactValue;
break;
case ContactType.business_Fax:
result.Fax = iContact.ContactValue;
break;
}
}
result.Notice = pDC.Notice;
result.Disabilities = string.Join(", ", pDC.Disabilities.Select(d => d.TypeDescription).ToArray());
result.CostBearers = pDC.CostBearers;
result.RelatedEmployees = pDC.RelatedEmployees;
result.EnvironmentPersons = pDC.EnvironmentPersons;
result.EnvironmentOrganisations = pDC.EnvironmentOrganisations;
if (pDC.CustomerVarFields != null)
{
if (pDC.CustomerVarFields.Count > 0)
{
result.VarField1 = pDC.CustomerVarFields[0].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 1)
{
result.VarField2 = pDC.CustomerVarFields[1].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 2)
{
result.VarField3 = pDC.CustomerVarFields[2].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 3)
{
result.VarField4 = pDC.CustomerVarFields[3].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 4)
{
result.VarField5 = pDC.CustomerVarFields[4].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 5)
{
result.VarField6 = pDC.CustomerVarFields[5].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 6)
{
result.VarField7 = pDC.CustomerVarFields[6].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 7)
{
result.VarField8 = pDC.CustomerVarFields[7].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 8)
{
result.VarField9 = pDC.CustomerVarFields[8].VarFieldValue;
}
if (pDC.CustomerVarFields.Count > 9)
{
result.VarField10 = pDC.CustomerVarFields[9].VarFieldValue;
}
}
return result;
}
}
}

View File

@@ -16,6 +16,22 @@ namespace BeWo.Service.SBD
{
internal class VertretungsManager
{
private static List<ContactDC> LoadContactInformationForEntity<T>(long entityOid) where T : BeWoEntityBase
{
Person entity;
if(typeof(T) == typeof(Employee))
{
entity = DAOFactory.GenericDAO.LoadByID<Employee>(entityOid).Person;
}
else
{
entity = DAOFactory.GenericDAO.LoadByID<Customer>(entityOid).Person;
}
return MapperFactory.ContactDC_Contact.MapToNewDCs(entity.Contacts);
}
public List<VertretungsItemDC> CreateVertretungsListe(DateTime start, DateTime end)
{
var result = new List<VertretungsItemDC>();
@@ -24,6 +40,22 @@ namespace BeWo.Service.SBD
var vertretungen = DAOFactory.SearchDAO.FindVertretungen(start, end).ToList();
var absenceTimes = DAOFactory.SearchDAO.FindAbsenceTimes(start, end).ToList();
var customerOids = vertretungen.Where(w => w.CustomerOid.HasValue).Select(s => s.CustomerOid.Value).ToList();
customerOids.AddRangeIfElementsNotIn(absenceTimes.Where(w => w.CustomerOid.HasValue).Select(s => s.CustomerOid.Value).ToList());
var customers = DAOFactory.GenericDAO.LoadByIDs<Customer>(customerOids);
var customerContactInformation = new Dictionary<long, List<ContactDC>>();
foreach (var customer in customers)
{
var contacts = MapperFactory.ContactDC_Contact.MapToNewDCs(customer.Person.Contacts);
if(customer.Oid != null)
{
customerContactInformation.AddOrUpdateValueInDictionary(customer.Oid.Value, contacts);
}
}
foreach (var absenceTime in absenceTimes)
{
if (absenceTime.EmployeeOid.HasValue) //Abwesenheit Mitarbeiter
@@ -41,7 +73,7 @@ namespace BeWo.Service.SBD
{
if (valueListEntry2Object.Entry.Type == ValueListEntryType.StaffRoleType && !valueListEntry2Object.Entry.Value.Equals("ehemalige Betreuung")) // Nur Hauptbetreuer?
{
var items = ErstelleVertretungsItemsForAbsenceEmployee(absenceTime, employee, employee2Customer.Customer, vertretungen, start, end);
var items = ErstelleVertretungsItemsForAbsenceEmployee(absenceTime, employee, employee2Customer.Customer, vertretungen, start, end, LoadContactInformationForEntity<Customer>(employee2Customer.Customer.Oid.Value), MapperFactory.ContactDC_Contact.MapToNewDCs(employee.Person.Contacts), MapperFactory.CustomerOrganisationRelationDC_Customer2Organisation.MapToNewDCs(employee2Customer.Customer.Customer2OrganisationList));
if (items != null)
{
result.AddRange(items);
@@ -59,13 +91,15 @@ namespace BeWo.Service.SBD
}
var addEmpty = true;
foreach (var employee2Customer in customer.Employee2CustomerList.Where(e2c => e2c.Employee.IsActive == ActivationTypeId.Active))
{
foreach (var valueListEntry2Object in employee2Customer.ValueList)
{
if (valueListEntry2Object.Entry.Type == ValueListEntryType.StaffRoleType) // Nur Hauptbetreuer?
{
var items = ErstelleVertretungsItemsForAbsenceEmployee(absenceTime, employee2Customer.Employee, customer, null, start, end);
var substitutions = vertretungen.Where(vertretung => vertretung.CustomerOid.HasValue && vertretung.CustomerOid == customer.Oid).ToList();
var items = ErstelleVertretungsItemsForAbsenceEmployee(absenceTime, employee2Customer.Employee, customer, substitutions, start, end, customerContactInformation[customer.Oid.Value], MapperFactory.ContactDC_Contact.MapToNewDCs(employee2Customer.Employee.Person.Contacts), MapperFactory.CustomerOrganisationRelationDC_Customer2Organisation.MapToNewDCs(customer.Customer2OrganisationList));
if (items != null)
{
addEmpty = false;
@@ -77,7 +111,7 @@ namespace BeWo.Service.SBD
if (addEmpty)
{
var items = ErstelleVertretungsItemsForAbsenceEmployee(absenceTime, null, customer, null, start, end)?.ToList();
var items = ErstelleVertretungsItemsForAbsenceEmployee(absenceTime, null, customer, null, start, end, customerContactInformation[customer.Oid.Value], null, MapperFactory.CustomerOrganisationRelationDC_Customer2Organisation.MapToNewDCs(customer.Customer2OrganisationList))?.ToList();
if (items != null)
{
result.AddRange(items);
@@ -102,10 +136,7 @@ namespace BeWo.Service.SBD
}
}
}
}
foreach (var item in result)
{
if (item.MitarbeiterEinsatzBei == "???" && item.Employee != null)
{
item.MitarbeiterEinsatzBei = "";
@@ -122,7 +153,7 @@ namespace BeWo.Service.SBD
return result;
}
private static IEnumerable<VertretungsItemDC> ErstelleVertretungsItemsForAbsenceEmployee(AbsenceTime absenceTime, Employee employee, Customer customer, List<Vertretung> vertretungen, DateTime start, DateTime end)
private static IEnumerable<VertretungsItemDC> ErstelleVertretungsItemsForAbsenceEmployee(AbsenceTime absenceTime, Employee employee, Customer customer, List<Vertretung> vertretungen, DateTime start, DateTime end, List<ContactDC> customerContactInformation, List<ContactDC> employeeContactInformation, List<CustomerOrganisationRelationDC> schools)
{
var vertretungsItems = new List<VertretungsItemDC>();
@@ -137,17 +168,25 @@ namespace BeWo.Service.SBD
{
newVertretungsItem.Employee = MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(employee);
var lastSubstitutions = DAOFactory.SearchDAO.GetLastSubstitutionItems(employee.Oid.Value, 3);
var lastSubstitutionDCs = MapperFactory.VertretungDC_Vertretung.MapToNewDCs(lastSubstitutions);
newVertretungsItem.LastSubstitutions = lastSubstitutionDCs;
AddArbeitszeitToVertretungsItem(newVertretungsItem, employee, dateTime);
}
newVertretungsItem.Customer = MapperFactory.CompactCustomerDC_Customer.MapToNewDC(customer);
SetzeSchule(newVertretungsItem, customer);
newVertretungsItem.CustomerContactInformation = customerContactInformation;
newVertretungsItem.EmployeeContactInformation = employeeContactInformation;
newVertretungsItem.Schools = schools;
if(customer != null && customer.Arbeitszeiten.Any())
{
// TODO: Betreuungszeit (Arbeitszeit) hinzufügen
var betreuungszeiten =
MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(customer.Arbeitszeiten);
var betreuungszeiten = MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(customer.Arbeitszeiten);
var time = dateTime;
var interval = betreuungszeiten.Where(w => w.GueltigVon.HasValue && w.GueltigBis.HasValue && time.InBetween(w.GueltigVon.Value, w.GueltigBis.Value, true)).ToList();
@@ -231,12 +270,23 @@ namespace BeWo.Service.SBD
break;
}
if (absenceTime.EmployeeOid.HasValue) // MA krank
newVertretungsItem.CustomerPflege = customer.Pflege ? "Ja" : "Nein";
newVertretungsItem.CustomerToilettengang = customer.Toilettengang ? "Ja" : "Nein";
newVertretungsItem.CustomerAggressivitaet = customer.Aggressiv ? "Ja" : "Nein";
newVertretungsItem.CustomerHygienebelehrung = customer.Hygienebelehrung ? "Ja" : "Nein";
newVertretungsItem.CustomerSchutzstufe = customer.Schutzstufe;
newVertretungsItem.EmployeePflege = employee == null ? "Nein" : employee.Pflege ? "Ja" : "Nein";
newVertretungsItem.EmployeeToilettengang = employee == null ? "Nein" : employee.Toilettengang ? "Ja" : "Nein";
newVertretungsItem.EmployeeAggressivitaet = employee == null ? "Nein" : employee.Aggressiv ? "Ja" : "Nein";
newVertretungsItem.EmployeeHygienebelehrung = employee == null ? "Nein" : employee.Hygienebelehrung ? "Ja" : "Nein";
newVertretungsItem.EmployeeSchutzstufe = employee?.Schutzstufe;
if (absenceTime.EmployeeOid.HasValue) // Mitarbeiter krank
{
newVertretungsItem.Pflege = customer.Pflege ? "Ja" : "Nein";
newVertretungsItem.Toilettengang = customer.Toilettengang ? "Ja" : "Nein";
newVertretungsItem.Aggressiv = customer.Aggressiv ? "Ja" : "Nein";
if (customer.Person.Sex.HasValue)
{

View File

@@ -708,5 +708,9 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<CompactSupportConceptDC> LoadCompactSupportConceptsById(IEnumerable<long> pOids);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<ContactDC> LoadContactInformationForCustomer(long customerOid);
}
}

View File

@@ -830,10 +830,14 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof(BeWoFault))]
[OperationContract]
bool CheckForOverlappingSubstitutionEntries(DateTime startDate, DateTime endDate, long? employeeOid, long? customerOid);
bool CheckForOverlappingSubstitutionEntries(DateTime startDate, DateTime endDate, long? employeeOid, long? customerOid, long? substitutionOid);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
IList<HomeViewPanelDC> GetHomeViewPanels();
[FaultContract(typeof(BeWoFault))]
[OperationContract]
bool CheckForOverlappingAbsenceTimes(DateTime startDate, DateTime endDate, long? employeeOid, long? customerOid);
}
}

View File

@@ -4037,6 +4037,20 @@ namespace BeWo.Service.ServiceImplementations
DAOFactory.GenericDAO.Insert(addressHistoryEntry);
}
public List<ContactDC> LoadContactInformationForCustomer(long customerOid)
{
try
{
var customer = DAOFactory.GenericDAO.LoadByID<Customer>(customerOid);
return MapperFactory.ContactDC_Contact.MapToNewDCs(customer.Person.Contacts);
}
catch(Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
}
internal struct WohnheimbuchungsIntervallStruct

File diff suppressed because it is too large Load Diff

View File

@@ -24,6 +24,7 @@
Jahresbericht,
Employee,
Contract,
NotizenKategorie
NotizenKategorie,
SBDCharacteristics
}
}

View File

@@ -76,5 +76,49 @@ namespace BS.Shared.DataContracts
[DataMember]
public VertretungDC Vertretung { get; set; }
[DataMember]
public List<ContactDC> CustomerContactInformation { get; set; }
[DataMember]
public List<ContactDC> EmployeeContactInformation { get; set; }
[DataMember]
public List<CustomerOrganisationRelationDC> Schools { get; set; }
[DataMember]
public List<VertretungDC> LastSubstitutions { get; set; }
[DataMember]
public string CustomerPflege { get; set; }
[DataMember]
public string EmployeePflege { get; set; }
[DataMember]
public string CustomerToilettengang { get; set; }
[DataMember]
public string EmployeeToilettengang { get; set; }
[DataMember]
public string CustomerAggressivitaet { get; set; }
[DataMember]
public string EmployeeAggressivitaet { get; set; }
[DataMember]
public string CustomerHygienebelehrung { get; set; }
[DataMember]
public string EmployeeHygienebelehrung { get; set; }
[DataMember]
public string CustomerSchutzstufe { get; set; }
[DataMember]
public string EmployeeSchutzstufe { get; set; }
}
}

View File

@@ -29,7 +29,7 @@ namespace BS.Shared.Extensions
}
else
{
pDictionary[pKey].Add(pValue);
pDictionary[pKey].AddIfNotIn(pValue);
}
return pDictionary;