Der Vertretungsalgorithmus wurde überarbeitet und berücksichtigt jetzt die Betreuungszeiten.
"Vertretung ab dem x. Tag" beginnt jetzt bei 1 und nicht mehr bei 0. Ein DB-Skript passt alle Werte mit 0 an -> Changes_2019_12_07 AbWelchemKrankheitsTag UPDATE.txt
This commit is contained in:
@@ -36,7 +36,7 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
|
||||
itemsForunwantedSubstitutionList.AddIfNotIn(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach (var viewModel in viewModels)
|
||||
{
|
||||
if(viewModel.VertretungsStatus != VertretungsStatus.KlientKrank)
|
||||
@@ -45,7 +45,7 @@ namespace BeWo.SchulbegleitenderDienst.SBDUtils
|
||||
|
||||
if (viewModel.Customer != null)
|
||||
{
|
||||
var substitutionNeededDate = DateTime.Now.AddDays(-1 * viewModel.Customer.SubstitutionStartingDayCount);
|
||||
var substitutionNeededDate = DateTime.Now.AddDays(-1 * (viewModel.Customer.SubstitutionStartingDayCount - 1));
|
||||
|
||||
if (viewModel.Absencetime?.Start.HasValue ?? false)
|
||||
{
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
SelectedIndexChanged="SubstitutionNeedComboBox_OnSelectedIndexChanged"/>
|
||||
|
||||
<Label Content="Ab welchem Tag?" Margin="3" Grid.Row="1" Grid.Column="0" x:Name="AbWelchemTagLabel" />
|
||||
<dxe:SpinEdit x:Name="AbWelchemTagCBox" IsFloatValue="False" Increment="1" MinValue="0" Height="23" Margin="3" Grid.Row="1"
|
||||
<dxe:SpinEdit x:Name="AbWelchemTagCBox" IsFloatValue="False" Increment="1" MinValue="1" Height="23" Margin="3" Grid.Row="1"
|
||||
Grid.Column="1" AllowNullInput="True" Width="50" HorizontalAlignment="Right" VerticalContentAlignment="Center"
|
||||
EditValue="{Binding Path=AbWelchemKrankheitsTag, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource Int2DecimalConverter}}" />
|
||||
</Grid>
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
{
|
||||
public partial class SchulbegleitenderDienstCustomerView
|
||||
{
|
||||
private List<CompactTokenDC> tokenlist = new List<CompactTokenDC>();
|
||||
private List<CompactTokenDC> _TokenList = new List<CompactTokenDC>();
|
||||
|
||||
readonly Dictionary<string, CompactTokenDC> verfuegbarerWunschToken = new Dictionary<string, CompactTokenDC>();
|
||||
readonly Dictionary<string, CompactTokenDC> verfuegbarerAusschlussToken = new Dictionary<string, CompactTokenDC>();
|
||||
readonly Dictionary<string, CompactTokenDC> _VerfuegbareWunschTokenList = new Dictionary<string, CompactTokenDC>();
|
||||
readonly Dictionary<string, CompactTokenDC> _VerfuegbareAusschlussTokenList = new Dictionary<string, CompactTokenDC>();
|
||||
|
||||
private CustomerVM _ViewModel;
|
||||
|
||||
@@ -39,11 +39,11 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
private void GetAllTokenItems()
|
||||
{
|
||||
tokenlist.Clear();
|
||||
_TokenList.Clear();
|
||||
|
||||
ServiceFacade.DoOperationsServiceAsync(r => r.GetAllTokens(SchulbegleitenderZugehoerigkeitsTyp.Klient, ViewModel.DataContract.CustomerOid.Value), h => this.Dispatch(delegate
|
||||
{
|
||||
tokenlist = h;
|
||||
_TokenList = h;
|
||||
|
||||
SetAusschlussKriterien();
|
||||
|
||||
@@ -54,116 +54,127 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
private void SetAusschlussKriterien()
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
List<string> valuelist = new List<string>();
|
||||
var list = new List<string>();
|
||||
var valuelist = new List<string>();
|
||||
|
||||
if (tokenlist != null)
|
||||
if (_TokenList != null)
|
||||
{
|
||||
foreach (var token in tokenlist)
|
||||
foreach (var token in _TokenList)
|
||||
{
|
||||
if (token.TokenType == TokenTyp.AusschlussKriterium && token.MemberOid == ViewModel.DataContract.CustomerOid.Value)
|
||||
{
|
||||
valuelist.Add(token.Beschreibung);
|
||||
|
||||
if (!verfuegbarerAusschlussToken.ContainsKey(token.Beschreibung))
|
||||
verfuegbarerAusschlussToken.Add(token.Beschreibung, token);
|
||||
if (!_VerfuegbareAusschlussTokenList.ContainsKey(token.Beschreibung))
|
||||
{
|
||||
_VerfuegbareAusschlussTokenList.Add(token.Beschreibung, token);
|
||||
}
|
||||
}
|
||||
else if (token.TokenType == TokenTyp.AusschlussKriterium)
|
||||
{
|
||||
list.Add(token.Beschreibung);
|
||||
|
||||
if (!verfuegbarerAusschlussToken.ContainsKey(token.Beschreibung))
|
||||
verfuegbarerAusschlussToken.Add(token.Beschreibung, token);
|
||||
if (!_VerfuegbareAusschlussTokenList.ContainsKey(token.Beschreibung))
|
||||
{
|
||||
_VerfuegbareAusschlussTokenList.Add(token.Beschreibung, token);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if(list.Count > 0)
|
||||
ComboAusschlussAnzeige.ItemsSource = list;
|
||||
|
||||
// if (valuelist.Count > 0)
|
||||
ComboAusschlussAnzeige.EditValue = valuelist;
|
||||
ComboAusschlussAnzeige.ItemsSource = list;
|
||||
|
||||
ComboAusschlussAnzeige.EditValue = valuelist;
|
||||
}
|
||||
|
||||
private void SetWunschKriterien()
|
||||
{
|
||||
List<string> list = new List<string>();
|
||||
List<string> valuelist = new List<string>();
|
||||
var list = new List<string>();
|
||||
var valuelist = new List<string>();
|
||||
|
||||
if (tokenlist != null)
|
||||
if (_TokenList != null)
|
||||
{
|
||||
foreach (var token in tokenlist)
|
||||
foreach (var token in _TokenList)
|
||||
{
|
||||
|
||||
if (token.TokenType == TokenTyp.WunschKriterium && token.MemberOid == ViewModel.DataContract.CustomerOid.Value)
|
||||
{
|
||||
valuelist.Add(token.Beschreibung);
|
||||
|
||||
if (!verfuegbarerWunschToken.ContainsKey(token.Beschreibung))
|
||||
verfuegbarerWunschToken.Add(token.Beschreibung, token);
|
||||
if (!_VerfuegbareWunschTokenList.ContainsKey(token.Beschreibung))
|
||||
{
|
||||
_VerfuegbareWunschTokenList.Add(token.Beschreibung, token);
|
||||
}
|
||||
}
|
||||
else if (token.TokenType == TokenTyp.WunschKriterium)
|
||||
{
|
||||
list.Add(token.Beschreibung);
|
||||
|
||||
if (!verfuegbarerWunschToken.ContainsKey(token.Beschreibung))
|
||||
verfuegbarerWunschToken.Add(token.Beschreibung, token);
|
||||
if (!_VerfuegbareWunschTokenList.ContainsKey(token.Beschreibung))
|
||||
{
|
||||
_VerfuegbareWunschTokenList.Add(token.Beschreibung, token);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (list.Count > 0)
|
||||
{
|
||||
ComboWunschAnzeige.ItemsSource = list;
|
||||
}
|
||||
|
||||
if(valuelist.Count > 0)
|
||||
{
|
||||
ComboWunschAnzeige.EditValue = valuelist;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void TokenEditorWunschBehavior_OnTokensChanged(object sender, TokensChangedEventArgs e)
|
||||
{
|
||||
var x = e.AddedTokens;
|
||||
var y = e.RemovedTokens;
|
||||
var addedTokens = e.AddedTokens;
|
||||
var removedTokens = e.RemovedTokens;
|
||||
|
||||
if (x != null && x.Count > 0)
|
||||
if (addedTokens != null && addedTokens.Count > 0)
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(r=>r.DoTokenWunschOperation(1, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, verfuegbarerWunschToken,x[0].ToString()));
|
||||
ServiceFacade.DoOperationsServiceSync(r=>r.DoTokenWunschOperation(1, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, _VerfuegbareWunschTokenList,addedTokens[0].ToString()));
|
||||
}
|
||||
|
||||
if (y != null && y.Count > 0)
|
||||
if (removedTokens != null && removedTokens.Count > 0)
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(r=>r.DoTokenWunschOperation(0, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, verfuegbarerWunschToken, y[0].ToString()));
|
||||
ServiceFacade.DoOperationsServiceSync(r=>r.DoTokenWunschOperation(0, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, _VerfuegbareWunschTokenList, removedTokens[0].ToString()));
|
||||
}
|
||||
}
|
||||
|
||||
private void TokenEditorAusschlussBehavior_OnTokensChanged(object sender, TokensChangedEventArgs e)
|
||||
{
|
||||
var x = e.AddedTokens;
|
||||
var y = e.RemovedTokens;
|
||||
var addedTokens = e.AddedTokens;
|
||||
var removedTokens = e.RemovedTokens;
|
||||
|
||||
if (x != null && x.Count > 0)
|
||||
if (addedTokens != null && addedTokens.Count > 0)
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(r => r.DoTokenAusschlussOperation(1, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, verfuegbarerWunschToken, x[0].ToString()));
|
||||
ServiceFacade.DoOperationsServiceSync(r => r.DoTokenAusschlussOperation(1, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, _VerfuegbareWunschTokenList, addedTokens[0].ToString()));
|
||||
}
|
||||
|
||||
if (y != null && y.Count > 0)
|
||||
if (removedTokens != null && removedTokens.Count > 0)
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(r => r.DoTokenAusschlussOperation(0, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, verfuegbarerWunschToken, y[0].ToString()));
|
||||
ServiceFacade.DoOperationsServiceSync(r => r.DoTokenAusschlussOperation(0, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient, _VerfuegbareWunschTokenList, removedTokens[0].ToString()));
|
||||
}
|
||||
}
|
||||
|
||||
private void ComboWunschAnzeige_OnIsKeyboardFocusWithinChanged(object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (ComboWunschAnzeige.IsKeyboardFocusWithin)
|
||||
{
|
||||
ComboWunschAnzeige.IsPopupOpen = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void ComboAusschlussAnzeige_OnIsKeyboardFocusWithinChanged(object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (ComboAusschlussAnzeige.IsKeyboardFocusWithin)
|
||||
{
|
||||
ComboAusschlussAnzeige.IsPopupOpen = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void SubstitutionNeedComboBox_OnSelectedIndexChanged(object sender, RoutedEventArgs e)
|
||||
|
||||
@@ -57,7 +57,8 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
WochenansichtBemerkung = vertretungsItem.WochenansichtBemerkung,
|
||||
VertreterInfoString = vertretungsItem.VertreterInfoString,
|
||||
EmployeeAddressString = vertretungsItem.EmployeeAddressString,
|
||||
Id = vertretungsItem.Id
|
||||
Id = vertretungsItem.Id,
|
||||
AssistanceTimeEntry = vertretungsItem.AssistanceTime
|
||||
};
|
||||
|
||||
if (vertretungsItem.Arbeitszeiten != null && vertretungsItem.Arbeitszeiten.Any())
|
||||
@@ -90,7 +91,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
{
|
||||
if (viewModel.Vertretung == null)
|
||||
{
|
||||
viewModel.Vertretung = new VertretungDC();
|
||||
viewModel.Vertretung = new VertretungDC {Notice = viewModel.Bemerkung};
|
||||
}
|
||||
|
||||
viewModel.Vertretung.VertretungsZeitraumVon = startDate ?? DateTime.Today.Date;
|
||||
@@ -215,58 +216,31 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
return;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
absenceTime.CustomerOid = viewModel.Customer.CustomerOid;
|
||||
}
|
||||
|
||||
if (viewModel.Employee != null)
|
||||
{
|
||||
absenceTime.EmployeeOid = viewModel.Employee.EmployeeOid;
|
||||
}
|
||||
|
||||
if (viewModel.Absencetime != null)
|
||||
{
|
||||
absenceTime.AbsenceTimeOid = viewModel.Absencetime.AbsenceTimeOid;
|
||||
}
|
||||
|
||||
ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(absenceTime));
|
||||
|
||||
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;
|
||||
|
||||
if (viewModel.Customer != null)
|
||||
{
|
||||
viewModel.Vertretung.CustomerOid = viewModel.Customer.CustomerOid;
|
||||
}
|
||||
|
||||
if (viewModel.Employee != null)
|
||||
{
|
||||
viewModel.Vertretung.EmployeeOid = viewModel.Employee.EmployeeOid;
|
||||
}
|
||||
|
||||
if (viewModel.Vertretung.VertretungOid.HasValue)
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(viewModel.Vertretung));
|
||||
viewModel.Absencetime.Notice = viewModel.Bemerkung;
|
||||
}
|
||||
else
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(viewModel.Vertretung));
|
||||
viewModel.Vertretung.Notice = viewModel.Bemerkung;
|
||||
}
|
||||
|
||||
var absenceTime = viewModel.Absencetime;
|
||||
|
||||
ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(absenceTime));
|
||||
|
||||
if (viewModel.Vertretung != null)
|
||||
{
|
||||
viewModel.Vertretung.Notice = viewModel.Bemerkung;
|
||||
|
||||
viewModel.Vertretung.CustomerOid = viewModel.Customer?.CustomerOid;
|
||||
|
||||
viewModel.Vertretung.EmployeeOid = viewModel.Employee?.EmployeeOid;
|
||||
|
||||
if (viewModel.Vertretung.VertretungOid.HasValue)
|
||||
{
|
||||
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(viewModel.Vertretung));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
|
||||
@@ -128,20 +128,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ArbeitszeitEintragDC FirstAssistanceTimeEntry
|
||||
{
|
||||
get
|
||||
{
|
||||
if (AssistanceTimes != null && AssistanceTimes.Any())
|
||||
{
|
||||
return AssistanceTimes[0];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public new string SchulbegleitenderDienstString
|
||||
{
|
||||
get
|
||||
@@ -269,5 +256,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
public new string VertreterInfoString { get; set; }
|
||||
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public ArbeitszeitEintragDC AssistanceTimeEntry { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,6 +261,7 @@
|
||||
<RowDefinition Height="33*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Abwesende Mitarbeiter -->
|
||||
<GroupBox Header="{markup:Translate Abwesenheiten Mitarbeiter}" Style="{StaticResource ObjectEditGroupBox}" >
|
||||
<dxg:GridControl x:Name="GridDataControlTagesansichtMitarbeiter" Visibility="Visible" Margin="5" VerticalContentAlignment="Stretch" ItemsSource="{Binding Path=AbsentEmployeesDayViewList, UpdateSourceTrigger=PropertyChanged}">
|
||||
<dxg:GridControl.Columns >
|
||||
@@ -346,12 +347,7 @@
|
||||
</Style>
|
||||
</dxg:GridColumn.CellStyle>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="FirstAssistanceTimeEntry" Header="Betreuungszeiten" ReadOnly="True">
|
||||
<dxg:GridColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<dxe:ComboBoxEdit ItemsSource="{Binding RowData.Row.AssistanceTimes}" Name="PART_Editor" />
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
<dxg:GridColumn FieldName="AssistanceTimeEntry" Header="Betreuungszeiten" ReadOnly="True">
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="Teamleitung" Header="Teamleitung" ReadOnly="True" />
|
||||
<dxg:GridColumn FieldName="Absencetime.KrankheitsMeldung" Header="Meldung vom" ReadOnly="True" />
|
||||
@@ -409,6 +405,7 @@
|
||||
</dxg:GridControl>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Abwesende Klienten -->
|
||||
<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" ItemsSource="{Binding Path=AbsentCustomersDayViewList, UpdateSourceTrigger=PropertyChanged}">
|
||||
<dxg:GridControl.Columns>
|
||||
@@ -428,12 +425,7 @@
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<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 FieldName="AssistanceTimeEntry" Header="Betreuungszeiten" ReadOnly="False">
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="CustomerName" Header="Klient/in" ReadOnly="True">
|
||||
<dxg:GridColumn.CellStyle>
|
||||
@@ -543,6 +535,7 @@
|
||||
</dxg:GridControl>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Kein Vertretungsbedarf -->
|
||||
<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" ItemsSource="{Binding Path=SubstitutionUnwantedDayViewList, UpdateSourceTrigger=PropertyChanged}">
|
||||
<dxg:GridControl.Columns>
|
||||
@@ -667,6 +660,7 @@
|
||||
<RowDefinition Height="33*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Wochenansicht Abwesende Mitarbeiter -->
|
||||
<GroupBox Header="{markup:Translate Abwesenheiten Mitarbeiter}" Style="{StaticResource ObjectEditGroupBox}">
|
||||
<dxg:GridControl x:Name="GridDataControlWochenansichtMitarbeiter" AllowDrop="true" Margin="5" VerticalContentAlignment="Stretch" BorderBrush="Black" ItemsSource="{Binding AbsentEmployeesWeekViewList, UpdateSourceTrigger=PropertyChanged}">
|
||||
<dxg:GridControl.Columns>
|
||||
@@ -970,6 +964,7 @@
|
||||
</dxg:GridControl>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Wochenansicht Abwesende Klienten -->
|
||||
<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" ItemsSource="{Binding AbsentCustomersWeekViewList, UpdateSourceTrigger=PropertyChanged}">
|
||||
<dxg:GridControl.Columns >
|
||||
@@ -1166,6 +1161,7 @@
|
||||
</dxg:GridControl>
|
||||
</GroupBox>
|
||||
|
||||
<!-- Wochenansicht Kein Vertretungsbedarf -->
|
||||
<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" ItemsSource="{Binding SubstitutionUnwantedWeekViewList, UpdateSourceTrigger=PropertyChanged}">
|
||||
<dxg:GridControl.Columns>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
@@ -51,6 +52,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
InitializeComponent();
|
||||
|
||||
DataContext = this;
|
||||
this.Dispatch(() => {});
|
||||
|
||||
ScrollViewerTagesansicht.Visibility = Visibility.Visible;
|
||||
WochenansichtsContainerGrid.Visibility = Visibility.Collapsed;
|
||||
@@ -109,53 +111,17 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
});
|
||||
}
|
||||
|
||||
private void GetWochenDienstFromItems(DateTime time, IEnumerable<TagesansichtVM> tagesansichtVMs)
|
||||
private void GetWochenDienstFromItems(DateTime time, List<TagesansichtVM> tagesansichtVMs)
|
||||
{
|
||||
_ItemsWochenMitarbeiter.Clear();
|
||||
_ItemsWochenKlienten.Clear();
|
||||
_SubstitutionUnwantedWeekViewList.Clear();
|
||||
|
||||
var employeeList = new List<TagesansichtVM>();
|
||||
var customerList = new List<TagesansichtVM>();
|
||||
var unwantedList = new List<TagesansichtVM>();
|
||||
var lists = SBDUtils.SBDUtils.GetListType(tagesansichtVMs);
|
||||
|
||||
foreach(var item in tagesansichtVMs)
|
||||
{
|
||||
if(item.VertretungsStatus == VertretungsStatus.KlientKrank)
|
||||
{
|
||||
if(item.Customer.IsSubstitutionWanted)
|
||||
{
|
||||
customerList.Add(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
unwantedList.Add(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var substitutionStartingDayCountCondition = false;
|
||||
|
||||
if (item.Customer != null)
|
||||
{
|
||||
var substitutionNeededDate = DateTime.Now.AddDays(-1 * item.Customer.SubstitutionStartingDayCount);
|
||||
|
||||
if (item.Absencetime?.Start.HasValue ?? false)
|
||||
{
|
||||
substitutionStartingDayCountCondition = substitutionNeededDate < item.Absencetime.Start;
|
||||
}
|
||||
}
|
||||
|
||||
if(item.Vertretung?.VertretenderMitarbeiterOid != null || substitutionStartingDayCountCondition)
|
||||
{
|
||||
unwantedList.Add(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
employeeList.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
var employeeList = lists.AbsentEmployeesList;
|
||||
var customerList = lists.AbsentCustomersList;
|
||||
var unwantedList = lists.SubstitutionUnwantedList;
|
||||
|
||||
_ItemsWochenMitarbeiter.AddRangeIfElementsNotIn(_Wochenvertretung.GetWochenAnsichtFromItems(time, employeeList));
|
||||
_ItemsWochenKlienten.AddRangeIfElementsNotIn(_Wochenvertretung.GetWochenAnsichtFromItems(time, customerList));
|
||||
|
||||
@@ -10,6 +10,7 @@ using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using BeWo.Annotations;
|
||||
using BS.Shared;
|
||||
using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using DevExpress.Xpf.Editors;
|
||||
using DevExpress.Xpf.Grid;
|
||||
@@ -154,31 +155,26 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
private void SetzeStartEndDatum()
|
||||
{
|
||||
DateTime? start = _Tagesansicht.Datum;
|
||||
DateTime? end = _Tagesansicht.Datum;
|
||||
var start = _Tagesansicht.Datum;
|
||||
var end = _Tagesansicht.Datum;
|
||||
|
||||
var assistanceTime = _Tagesansicht.AssistanceTimeEntry;
|
||||
|
||||
if (_Tagesansicht.Absencetime?.Start != null)
|
||||
{
|
||||
start = _Tagesansicht.Absencetime.Start.Value;
|
||||
}
|
||||
var assistanceTimeDates = DateTimeUtils.GetAssistanceTimeComparisonDateTime(assistanceTime.UhrzeitVon, assistanceTime.UhrzeitBis, start);
|
||||
|
||||
if (_Tagesansicht.Absencetime?.End != null)
|
||||
{
|
||||
end = _Tagesansicht.Absencetime.End.Value;
|
||||
}
|
||||
start = assistanceTimeDates.Start;
|
||||
|
||||
end = assistanceTimeDates.End;
|
||||
|
||||
if (_Tagesansicht.Vertretung != null)
|
||||
{
|
||||
start = _Tagesansicht.Vertretung.VertretungsZeitraumVon;
|
||||
}
|
||||
if (_Tagesansicht.Vertretung != null)
|
||||
{
|
||||
end = _Tagesansicht.Vertretung.VertretungsZeitraumBis;
|
||||
}
|
||||
|
||||
SubstitutionStart = start.Value;
|
||||
SubstitutionStart = start;
|
||||
|
||||
SubstitutionEnd = end.Value;
|
||||
SubstitutionEnd = end;
|
||||
}
|
||||
|
||||
private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
@@ -238,6 +234,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
dateTime = _Tagesansicht.Datum;
|
||||
}
|
||||
|
||||
// TODO: GetAllActiveVertreterEmployeesCompact neuschreiben und AssistanceTimeEntry mitübergeben
|
||||
ServiceFacade.DoEmployeeServiceAsync(s => s.GetAllActiveVertreterEmployeesCompact(customerOid, dateTime), r => this.Dispatch(delegate
|
||||
{
|
||||
GridControlPossibleVertreter.Visibility = Visibility.Hidden;
|
||||
@@ -274,7 +271,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
}
|
||||
}
|
||||
|
||||
var sex = employee.Geschlecht == Sex.Male ? "Männlich" : "Weiblich";
|
||||
var sex = BS.Shared.Core.Utils.GetSexTranslation(employee.Geschlecht);
|
||||
|
||||
result.Add(new SearchViewDaten(employee.FirstName, employee.LastName, employee.PersonAdressPLZ, employee.PersonAdressStr, employee.PersonAdressStadt, arbeitszeitEintrag, employee, sex));
|
||||
}
|
||||
@@ -768,7 +765,6 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
public TagesansichtVM TagesItem { get; set; }
|
||||
|
||||
public WochenansichtVM WochenItem { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class SearchViewDaten
|
||||
@@ -796,7 +792,7 @@ namespace BeWo.SchulbegleitenderDienst
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return String.Format("{0} {1}", Vorname, Nachname);
|
||||
return $"{Vorname} {Nachname}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace BeWo.SchulbegleitenderDienst.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public string SchulbegleitenderDienstString;
|
||||
public string SchulbegleitenderDienstString { get; set; }
|
||||
|
||||
public List<CustomerOrganisationRelationDC> Schools { get; set; }
|
||||
|
||||
|
||||
@@ -3028,7 +3028,7 @@ namespace BeWo.Data.Access
|
||||
|
||||
criteria.SetMaxResults(count);
|
||||
|
||||
return criteria.List<Vertretung>();
|
||||
return criteria.List<Vertretung>().Where(w => w.VertretungsZeitraumVon > DateTime.MinValue && w.VertretungsZeitraumBis > DateTime.MinValue).ToList();
|
||||
}
|
||||
|
||||
public Dictionary<Customer, List<ArbeitszeitEintrag>> GetAssistanceTimesForEmployee(long employeeOid, DateTime start, DateTime end)
|
||||
|
||||
@@ -54,10 +54,10 @@ namespace BeWo.Data
|
||||
{
|
||||
#if DEBUG
|
||||
//TODO: wieder einkommentieren!
|
||||
var hierarchy = (Hierarchy)LogManager.GetRepository();
|
||||
var logger = (Logger)hierarchy.GetLogger("NHibernate.SQL");
|
||||
logger.AddAppender(new TraceAppender { Layout = new SimpleLayout() });
|
||||
hierarchy.Configured = true;
|
||||
//var hierarchy = (Hierarchy)LogManager.GetRepository();
|
||||
//var logger = (Logger)hierarchy.GetLogger("NHibernate.SQL");
|
||||
//logger.AddAppender(new TraceAppender { Layout = new SimpleLayout() });
|
||||
//hierarchy.Configured = true;
|
||||
#endif
|
||||
|
||||
var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
|
||||
|
||||
@@ -47,10 +47,10 @@ namespace BeWo.Data
|
||||
{
|
||||
#if DEBUG
|
||||
//TODO: wieder einkommentieren!
|
||||
var hierarchy = (Hierarchy)LogManager.GetRepository();
|
||||
var logger = (Logger)hierarchy.GetLogger("NHibernate.SQL");
|
||||
logger.AddAppender(new TraceAppender { Layout = new SimpleLayout() });
|
||||
hierarchy.Configured = true;
|
||||
//var hierarchy = (Hierarchy)LogManager.GetRepository();
|
||||
//var logger = (Logger)hierarchy.GetLogger("NHibernate.SQL");
|
||||
//logger.AddAppender(new TraceAppender { Layout = new SimpleLayout() });
|
||||
//hierarchy.Configured = true;
|
||||
#endif
|
||||
_SessionFactories[MultitenancyOperationContextExt.Current.Tenant] = new Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Multitenancy\" + MultitenancyOperationContextExt.Current.Tenant + ".config")).BuildSessionFactory();
|
||||
}
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
NHibernate.Driver.MySqlDataDriver
|
||||
</property>
|
||||
|
||||
<!--<property name="connection.connection_string">
|
||||
Server=localhost;Password=root;User ID=root; Initial Catalog=kette
|
||||
</property>-->
|
||||
|
||||
<property name="connection.connection_string">
|
||||
Server=localhost;Password=root;User ID=root; Initial Catalog=bewodemo
|
||||
Server=localhost;Password=root;User ID=root; Initial Catalog=1111111111
|
||||
</property>
|
||||
|
||||
<!--<property name="connection.connection_string">
|
||||
Server=localhost;Password=root;User ID=root; Initial Catalog=bewodemo
|
||||
</property>-->
|
||||
|
||||
<property name="dialect">
|
||||
NHibernate.Dialect.MySQLDialect
|
||||
</property>
|
||||
@@ -30,7 +30,7 @@
|
||||
NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle
|
||||
</property>
|
||||
<property name="hbm2ddl.keywords">none</property>
|
||||
<property name="show_sql">true</property> <!-- Bei true wird das SQL im Output Window angezeigt -->
|
||||
<property name="show_sql">false</property> <!-- Bei true wird das SQL im Output Window angezeigt -->
|
||||
<property name="format_sql">true</property>
|
||||
|
||||
<mapping assembly="BeWo.Data" />
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# War früher 0, ist jetzt 1 -> Vertretung gewünscht bzw. benötigt ab dem ersten Tag statt wie bisher am nullten Tag.
|
||||
UPDATE customer SET AbWelchemKrankheitsTag = 1 WHERE AbwelchemKrankheitsTag = 0 AND Oid > 0;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using BS.Shared.Extensions;
|
||||
using DevExpress.XtraScheduler;
|
||||
|
||||
namespace BS.Shared.Core
|
||||
@@ -168,6 +169,21 @@ namespace BS.Shared.Core
|
||||
{
|
||||
return (DayOfWeek) (((int) appointmentDayOfWeek + 1) % 7);
|
||||
}
|
||||
|
||||
public static ArbeitszeitEintragDateTimeObject GetAssistanceTimeComparisonDateTime(string uhrzeitVon, string uhrzeitBis, DateTime date)
|
||||
{
|
||||
var day = date.GetShortDateTime();
|
||||
|
||||
var isStartSuccessfullyParsed = DateTime.TryParse($"{day:dd.MM.yyyy} {uhrzeitVon}", out var start);
|
||||
var isEndSuccessfullyParsed = DateTime.TryParse($"{day:dd.MM.yyyy} {uhrzeitBis}", out var end);
|
||||
|
||||
if (isStartSuccessfullyParsed && isEndSuccessfullyParsed)
|
||||
{
|
||||
return new ArbeitszeitEintragDateTimeObject(start, end);
|
||||
}
|
||||
|
||||
return new ArbeitszeitEintragDateTimeObject(start, end);
|
||||
}
|
||||
}
|
||||
|
||||
public class AnzahlMonate
|
||||
|
||||
@@ -903,26 +903,42 @@ namespace BS.Shared.Core
|
||||
|
||||
public static readonly string TestAppointmentNotice = "k9Rx2mU4y";
|
||||
|
||||
public static ArbeitszeitEintragDateTimeObject GetAssistanceTimeComparisonDateTime(string uhrzeitVon, string uhrzeitBis, DateTime date)
|
||||
public static string GetSexAbbrevation(Sex? sex)
|
||||
{
|
||||
var day = date.GetShortDateTime();
|
||||
|
||||
var isStartSuccessfullyParsed = DateTime.TryParse($"{day:dd.MM.yyyy} {uhrzeitVon}", out var start);
|
||||
var isEndSuccessfullyParsed = DateTime.TryParse($"{day:dd.MM.yyyy} {uhrzeitBis}", out var end);
|
||||
|
||||
if (isStartSuccessfullyParsed && isEndSuccessfullyParsed)
|
||||
switch (sex)
|
||||
{
|
||||
return new ArbeitszeitEintragDateTimeObject(start, end);
|
||||
case Sex.Male:
|
||||
return "m";
|
||||
case Sex.Female:
|
||||
return "w";
|
||||
case Sex.Divers:
|
||||
return "d";
|
||||
default:
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return new ArbeitszeitEintragDateTimeObject(start, end);
|
||||
}
|
||||
|
||||
public static bool IsArbeitsZeitInInterval(DateTime intervalStart, DateTime intervalEnd, ArbeitszeitDC arbeitszeit)
|
||||
public static string GetSexTranslation(Sex? sex, bool lowerCase = false)
|
||||
{
|
||||
|
||||
string result;
|
||||
|
||||
return false;
|
||||
switch (sex)
|
||||
{
|
||||
case Sex.Male:
|
||||
result = "Männlich";
|
||||
break;
|
||||
case Sex.Female:
|
||||
result = "Weiblich";
|
||||
break;
|
||||
case Sex.Divers:
|
||||
result = "Divers";
|
||||
break;
|
||||
default:
|
||||
result = string.Empty;
|
||||
break;
|
||||
}
|
||||
|
||||
return lowerCase ? result.ToLowerInvariant() : result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@ namespace BS.Shared.DataContracts
|
||||
{
|
||||
return $"{UhrzeitVon} - {UhrzeitBis}";
|
||||
}
|
||||
|
||||
public DayOfWeek DayOfWeek => Core.DateTimeUtils.ConvertAppointmentDayOfWeekToDayOfWeek(Tag);
|
||||
|
||||
[DataMember]
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
namespace BS.Shared.DataContracts
|
||||
using System.Linq;
|
||||
using BS.Shared.Extensions;
|
||||
|
||||
namespace BS.Shared.DataContracts
|
||||
{
|
||||
public partial class VertretungsItemDC
|
||||
{
|
||||
@@ -12,10 +15,82 @@
|
||||
var areTheSameSubstitution = Vertretung?.Equals(item2.Vertretung) ?? false;
|
||||
var haveTheSameAbsenceTimes = Absencetime?.Equals(item2.Absencetime) ?? false;
|
||||
|
||||
return (areCustomersEqual || areEmployeesEqual) && areTheSameSubstitution && haveTheSameAbsenceTimes;
|
||||
return (areCustomersEqual || areEmployeesEqual) && areTheSameSubstitution && haveTheSameAbsenceTimes && Equals(Id, item2.Id);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
var assistanceTimes = string.Empty;
|
||||
|
||||
for(var i = 0; i < Arbeitszeiten.Count; i++)
|
||||
{
|
||||
var at = Arbeitszeiten[i];
|
||||
|
||||
assistanceTimes += $"\t\t{at.UhrzeitVon} - {at.UhrzeitBis}";
|
||||
|
||||
if (i < Arbeitszeiten.Count - 1)
|
||||
{
|
||||
assistanceTimes += ",\n";
|
||||
}
|
||||
}
|
||||
|
||||
var absenceTime = "";
|
||||
|
||||
if (Absencetime.Start.HasValue)
|
||||
{
|
||||
var start = Absencetime.Start.Value;
|
||||
var startStr = string.Empty;
|
||||
|
||||
if (Absencetime.End == null)
|
||||
{
|
||||
if (start.Hour == 0 && start.Minute == 0)
|
||||
{
|
||||
startStr = start.ToShortDateString();
|
||||
}
|
||||
else
|
||||
{
|
||||
startStr = start.ToLongDateString();
|
||||
}
|
||||
|
||||
absenceTime = $"Ab dem {startStr}";
|
||||
}
|
||||
else
|
||||
{
|
||||
var end = Absencetime.End.Value;
|
||||
|
||||
if (end.Date.Equals(start.Date))
|
||||
{
|
||||
if (start.Hour == 0 && start.Minute == 0 && end.Hour == 0 && end.Minute == 0)
|
||||
{
|
||||
absenceTime = $"{start:dd.MM.yyyy}";
|
||||
}
|
||||
else
|
||||
{
|
||||
absenceTime = $"{start:dd.MM.yyyy HH:mm} - {end:HH:mm}";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (end.Hour == 0 && end.Minute == 0)
|
||||
{
|
||||
absenceTime = $"{start:dd.MM.yyyy HH:mm} - {end:dd.MM.yyyy}";
|
||||
}
|
||||
else
|
||||
{
|
||||
absenceTime = $"{start:dd.MM.yyyy HH:mm} - {end:dd.MM.yyyy HH:mm}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var info =
|
||||
$"{Id} {Datum:dd.MM.yyyy}:\n\t{(VertretungsStatus == VertretungsStatus.KlientKrank ? "Klientenabwesenheit" : "Mitarbeiterabwesenheit")} " +
|
||||
$"\n\tEmployee: {Employee}\n\tCustomer: {Customer} \n\t{absenceTime} \n\t Betreuungszeiten:\n {assistanceTimes}\n\n";
|
||||
|
||||
return info;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,5 +127,8 @@ namespace BS.Shared.DataContracts
|
||||
|
||||
[DataMember]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public ArbeitszeitEintragDC AssistanceTime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -481,14 +481,17 @@ namespace BS.Shared.Extensions
|
||||
return start1 >= start2 && end1 <= end2;
|
||||
}
|
||||
|
||||
public static bool IsIntervalInAbsenceTimeInterval(this DateTime start, DateTime end, DateTime absenceTimeStart, DateTime? absenceTimeEnd)
|
||||
public static bool IsIntervalOverlappingWithAbsenceTimeInterval(this DateTime start, DateTime end, DateTime absenceTimeStart, DateTime? absenceTimeEnd)
|
||||
{
|
||||
if (absenceTimeEnd == null)
|
||||
{
|
||||
return start >= absenceTimeStart && end >= absenceTimeStart;
|
||||
}
|
||||
|
||||
return AreInBetweenDates(start, end, absenceTimeStart, absenceTimeEnd.Value);
|
||||
var start2 = absenceTimeStart;
|
||||
var end2 = absenceTimeEnd.Value;
|
||||
|
||||
return !(start >= start2 && start >= end2 || end <= start2 && end <= end2);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user