diff --git a/BeWo/View/Detail/Report/DienstplanerView.xaml b/BeWo/View/Detail/Report/DienstplanerView.xaml
index 81b477fe6..b75eddbd5 100644
--- a/BeWo/View/Detail/Report/DienstplanerView.xaml
+++ b/BeWo/View/Detail/Report/DienstplanerView.xaml
@@ -121,6 +121,7 @@
+
@@ -128,7 +129,7 @@
-
+
@@ -149,20 +150,24 @@
-
+
+
+
+
+
-
+
-
-
+
diff --git a/BeWo/View/Detail/Report/DienstplanerView.xaml.cs b/BeWo/View/Detail/Report/DienstplanerView.xaml.cs
index d010fed9e..33295a7fe 100644
--- a/BeWo/View/Detail/Report/DienstplanerView.xaml.cs
+++ b/BeWo/View/Detail/Report/DienstplanerView.xaml.cs
@@ -47,6 +47,8 @@ namespace BeWo.View.Detail.Report
private int _AuswahlTag;
private List _AlleMitarbeiter;
+ private DienstEintragDC LetzterEintrag;
+
private bool _IsControlClick;
public DienstplanerView()
@@ -130,10 +132,11 @@ namespace BeWo.View.Detail.Report
{
_DienstplanerRootObj = root;
+#if DEBUG
// Erste Zeile für den Status erstellen
- _DienstplanerRootObj.DienstZeilenListe = new List();
- _DienstplanerRootObj.DienstZeilenListe.Add(InitStatusZeile(RefreshGrid, AuswahlMonat));
-
+ //_DienstplanerRootObj.DienstZeilenListe = new List();
+ //_DienstplanerRootObj.DienstZeilenListe.Add(InitStatusZeile(RefreshGrid, AuswahlMonat));
+#endif
// Wenn es regelmäßige Dienste gibt, werden diese hinzugefügt
foreach (var rd in _DienstplanerRootObj.RegelmaessigeDienste)
AddRegelmaessigeDiensteToDienstplaner(rd);
@@ -160,11 +163,15 @@ namespace BeWo.View.Detail.Report
}
private void RefreshGrid()
{
- var days = DateTime.DaysInMonth(_AuswahlMonat.Year, _AuswahlMonat.Month);
- for (int i = 1; i <= days; i++)
+ if (_DienstplanerRootObj.EnableStatuszeile)
{
- RefreshStatusForDay(i);
+ var days = DateTime.DaysInMonth(_AuswahlMonat.Year, _AuswahlMonat.Month);
+ for (int i = 1; i <= days; i++)
+ {
+ RefreshStatusForDay(i);
+ }
}
+
_GridControl.ItemsSource = null;
_GridControl.ItemsSource = _DienstplanerRootObj.DienstZeilenListe;
}
@@ -596,6 +603,9 @@ namespace BeWo.View.Detail.Report
return;
}
popUp_mehrereDienste.IsOpen = true;
+#if DEBUG
+ mehrereDienste_wrappanel_zeile.Visibility = Visibility.Visible;
+#endif
// Boxen mit Daten füllen
combobox_mehrereDienste_mitarbeiter.ItemsSource = emps;
@@ -693,9 +703,10 @@ namespace BeWo.View.Detail.Report
numInfo.NumberGroupSeparator = ",";
}
double dauerInStunden = Convert.ToDouble(mehrereDienste_textbox_dauer.EditValue, numInfo);
-
+ int zeile = Convert.ToInt32(mehrereDienste_spinedit_zeile.Value) - 1;
+
InsertEintragOderVertretung(mehrereDienste_textbox_startzeit.Text, mehrereDienste_textbox_endzeit.Text, dauerInStunden, mitarbeiter,
- datum, dienst, 0, null);
+ datum, dienst, zeile, null);
}
popUp_mehrereDienste.IsOpen = false;
@@ -730,7 +741,8 @@ namespace BeWo.View.Detail.Report
return;
textbox_bemerkung.Text = "";
popUp_RightClick.IsOpen = false;
- RefreshStatusForDay(datum.Day);
+ if (_DienstplanerRootObj.EnableStatuszeile)
+ RefreshStatusForDay(datum.Day);
// Prüfen, ob Dienst an einem Abwesenheitstag entfernt wurde und wenn ja, Ist und Saldo nicht anpassen
if (!EintragAnGanzemAbwesenheitstag(eintrag, null))
@@ -750,7 +762,7 @@ namespace BeWo.View.Detail.Report
var culture = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
var numInfo = culture.NumberFormat;
-
+
if (textbox_dauer.Text.Contains(','))
{
numInfo.NumberDecimalSeparator = ",";
@@ -773,9 +785,10 @@ namespace BeWo.View.Detail.Report
Notice = notice,
Endzeit = ende,
Startzeit = start,
- DauerInStunden = dauerInStunden
+ DauerInStunden = dauerInStunden
};
ServiceFacade.DoOperationsServiceSync(x => x.InsertNewDienstEintrag(newEintrag));
+ LetzterEintrag = newEintrag;
if (datum.Month == _AuswahlMonat.Month)
{
_DienstplanerRootObj.AlleDienstEintraege.Add(newEintrag);
@@ -829,7 +842,8 @@ namespace BeWo.View.Detail.Report
{
textbox_bemerkung.Text = "";
popUp_RightClick.IsOpen = false;
- RefreshStatusForDay(datum.Day);
+ if (_DienstplanerRootObj.EnableStatuszeile)
+ RefreshStatusForDay(datum.Day);
// Prüfen, ob Dienst an einem Abwesenheitstag entfernt wurde und wenn ja, Ist und Saldo nicht anpassen
if (!EintragAnGanzemAbwesenheitstag(null, vertretung))
@@ -860,6 +874,18 @@ namespace BeWo.View.Detail.Report
DauerInStunden = dauerInStunden
};
ServiceFacade.DoOperationsServiceSync(x => x.InsertNewDienstvertretung(newVertretung));
+ LetzterEintrag = new DienstEintragDC()
+ {
+ Datum = newVertretung.Datum,
+ DauerInStunden = newVertretung.DauerInStunden,
+ DienstOid = newVertretung.DienstOid,
+ EmployeeOid = newVertretung.EmployeeOid,
+ Endzeit = newVertretung.Endzeit,
+ Notice = newVertretung.Notice,
+ Startzeit = newVertretung.Startzeit,
+ WohnheimOid = newVertretung.WohnheimOid,
+ Zeile = newVertretung.Zeile
+ };
if (datum.Month == _AuswahlMonat.Month)
{
_DienstplanerRootObj.AlleDienstvertretungen.Add(newVertretung);
@@ -894,7 +920,6 @@ namespace BeWo.View.Detail.Report
if (datum.Month == _AuswahlMonat.Month)
_AuswahlDienstZeileDC.AddDienst(datum.Day, dienst);
- //RefreshStatusForDay(datum.Day);
RefreshGrid();
}
@@ -1003,109 +1028,118 @@ namespace BeWo.View.Detail.Report
}
#endregion
- popUp_RightClick.IsOpen = true;
- if (!_DienstplanerRootObj.AlleDienste.Contains(DienstInfoDC.Platzhalter))
- _DienstplanerRootObj.AlleDienste.Insert(0, DienstInfoDC.Platzhalter);
-
- // Dienste in die Liste laden
- combobox_dienste.ItemsSource = _DienstplanerRootObj.AlleDienste;
-
#region Bei vorhandenem Dienst in der Zelle Zeiten und gewählten Dienst im PopUp setzen und den Header anpassen
- if (_AuswahlWohnheim.EmployeeOids.Contains(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value))
+ if (e.LeftButton == MouseButtonState.Pressed || LetzterEintrag == null)
{
- var eintrag = GetDienstEintrag(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
- _AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer);
+ popUp_RightClick.IsOpen = true;
+ if (!_DienstplanerRootObj.AlleDienste.Contains(DienstInfoDC.Platzhalter))
+ _DienstplanerRootObj.AlleDienste.Insert(0, DienstInfoDC.Platzhalter);
- if (eintrag == null)
+ // Dienste in die Liste laden
+ combobox_dienste.ItemsSource = _DienstplanerRootObj.AlleDienste;
+
+ if (_AuswahlWohnheim.EmployeeOids.Contains(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value))
{
- groupbox_popUp_RightClick.Header = "Neuen Dienst hinzufügen";
- combobox_dienste.SelectedIndex = 0;
- }
- else
- {
- groupbox_popUp_RightClick.Header = "Dienst bearbeiten";
- foreach (var info in _DienstplanerRootObj.AlleDienste)
+ var eintrag = GetDienstEintrag(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
+ _AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer);
+
+ if (eintrag == null)
{
- // Wenn ein Dienst existiert, gewählten Dienst und Zeiten in die Boxen setzen
- if (eintrag.DienstOid == info.Oid)
- {
- combobox_dienste.SelectedItem = info;
- if (TimeSpan.Parse(eintrag.Startzeit) != info.Start.TimeOfDay)
- textbox_startzeit.Foreground = foregroundColor;
- if (TimeSpan.Parse(eintrag.Endzeit) != info.Ende.TimeOfDay)
- textbox_endzeit.Foreground = foregroundColor;
-
- if (eintrag.Startzeit == "00:00" && eintrag.Endzeit == "00:00")
- textbox_dauer.IsEnabled = true;
- else
- textbox_dauer.IsEnabled = false;
-
- textbox_dauer.Text = string.Format("{0:0.00}", eintrag.DauerInStunden);
-
- break;
- }
+ groupbox_popUp_RightClick.Header = "Neuen Dienst hinzufügen";
+ combobox_dienste.SelectedIndex = 0;
}
- textbox_startzeit.Text = eintrag.Startzeit;
- textbox_endzeit.Text = eintrag.Endzeit;
- }
- textbox_bemerkung.Text = eintrag != null ? eintrag.Notice : "";
- }
- else
- {
- // Überprüfen, ob Mitarbeiter aus Wohnheim entfernt wurde, also
- if (_DienstplanerRootObj.AlleDienstEintraege.Any(ei => ei.EmployeeOid == _AuswahlDienstZeileDC.Employee.EmployeeOid))
- {
- popUp_RightClick.IsOpen = false;
-
- if (_AuswahlDienstZeileDC.Employee.Sex == BS.Shared.Sex.Male)
- MessageBox.Show("Der Mitarbeiter wurde aus dem Wohnheim entfernt und es können keine Änderungen mehr für diesen" +
- " vorgenommen werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
- else if (_AuswahlDienstZeileDC.Employee.Sex == BS.Shared.Sex.Female)
- MessageBox.Show("Die Mitarbeiterin wurde aus dem Wohnheim entfernt und es können keine Änderungen mehr für diese" +
- " vorgenommen werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
else
- MessageBox.Show("Der/Die Mitarbeiter/-in wurde aus dem Wohnheim entfernt und es können keine Änderungen mehr für diesen/diese" +
- " vorgenommen werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
- return;
- }
+ {
+ groupbox_popUp_RightClick.Header = "Dienst bearbeiten";
+ foreach (var info in _DienstplanerRootObj.AlleDienste)
+ {
+ // Wenn ein Dienst existiert, gewählten Dienst und Zeiten in die Boxen setzen
+ if (eintrag.DienstOid == info.Oid)
+ {
+ combobox_dienste.SelectedItem = info;
+ if (TimeSpan.Parse(eintrag.Startzeit) != info.Start.TimeOfDay)
+ textbox_startzeit.Foreground = foregroundColor;
+ if (TimeSpan.Parse(eintrag.Endzeit) != info.Ende.TimeOfDay)
+ textbox_endzeit.Foreground = foregroundColor;
+ if (eintrag.Startzeit == "00:00" && eintrag.Endzeit == "00:00")
+ textbox_dauer.IsEnabled = true;
+ else
+ textbox_dauer.IsEnabled = false;
- var vertretung = GetDienstvertretung(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
- _AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer);
+ textbox_dauer.Text = string.Format("{0:0.00}", eintrag.DauerInStunden);
- if (vertretung == null)
- {
- groupbox_popUp_RightClick.Header = "Neuen Vertretungsdienst hinzufügen";
- combobox_dienste.SelectedIndex = 0;
+ break;
+ }
+ }
+ textbox_startzeit.Text = eintrag.Startzeit;
+ textbox_endzeit.Text = eintrag.Endzeit;
+ }
+ textbox_bemerkung.Text = eintrag != null ? eintrag.Notice : "";
}
else
{
- groupbox_popUp_RightClick.Header = "Vertretungsdienst bearbeiten";
- foreach (var info in _DienstplanerRootObj.AlleDienste)
+ // Überprüfen, ob Mitarbeiter aus Wohnheim entfernt wurde, also
+ if (_DienstplanerRootObj.AlleDienstEintraege.Any(ei => ei.EmployeeOid == _AuswahlDienstZeileDC.Employee.EmployeeOid))
{
- // Wenn ein Dienst existiert, gewählten Dienst und Zeiten in die Boxen setzen
- if (vertretung.DienstOid == info.Oid)
- {
- combobox_dienste.SelectedItem = info;
- if (TimeSpan.Parse(vertretung.Startzeit) != info.Start.TimeOfDay)
- textbox_startzeit.Foreground = foregroundColor;
- if (TimeSpan.Parse(vertretung.Endzeit) != info.Ende.TimeOfDay)
- textbox_endzeit.Foreground = foregroundColor;
+ popUp_RightClick.IsOpen = false;
- if (vertretung.Startzeit == "00:00" && vertretung.Endzeit == "00:00")
- textbox_dauer.IsEnabled = true;
- else
- textbox_dauer.IsEnabled = false;
-
- textbox_dauer.Text = string.Format("{0:0.00}", vertretung.DauerInStunden);
-
- break;
- }
+ if (_AuswahlDienstZeileDC.Employee.Sex == BS.Shared.Sex.Male)
+ MessageBox.Show("Der Mitarbeiter wurde aus dem Wohnheim entfernt und es können keine Änderungen mehr für diesen" +
+ " vorgenommen werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
+ else if (_AuswahlDienstZeileDC.Employee.Sex == BS.Shared.Sex.Female)
+ MessageBox.Show("Die Mitarbeiterin wurde aus dem Wohnheim entfernt und es können keine Änderungen mehr für diese" +
+ " vorgenommen werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
+ else
+ MessageBox.Show("Der/Die Mitarbeiter/-in wurde aus dem Wohnheim entfernt und es können keine Änderungen mehr für diesen/diese" +
+ " vorgenommen werden.", "BeWoPlaner", MessageBoxButton.OK, MessageBoxImage.Warning);
+ return;
}
- textbox_startzeit.Text = vertretung.Startzeit;
- textbox_endzeit.Text = vertretung.Endzeit;
+
+
+ var vertretung = GetDienstvertretung(_AuswahlDienstZeileDC.Employee.EmployeeOid.Value,
+ _AuswahlWohnheim.WohnheimOid, _AuswahlDienstZeileDC.Zeile, Pointer);
+
+ if (vertretung == null)
+ {
+ groupbox_popUp_RightClick.Header = "Neuen Vertretungsdienst hinzufügen";
+ combobox_dienste.SelectedIndex = 0;
+ }
+ else
+ {
+ groupbox_popUp_RightClick.Header = "Vertretungsdienst bearbeiten";
+ foreach (var info in _DienstplanerRootObj.AlleDienste)
+ {
+ // Wenn ein Dienst existiert, gewählten Dienst und Zeiten in die Boxen setzen
+ if (vertretung.DienstOid == info.Oid)
+ {
+ combobox_dienste.SelectedItem = info;
+ if (TimeSpan.Parse(vertretung.Startzeit) != info.Start.TimeOfDay)
+ textbox_startzeit.Foreground = foregroundColor;
+ if (TimeSpan.Parse(vertretung.Endzeit) != info.Ende.TimeOfDay)
+ textbox_endzeit.Foreground = foregroundColor;
+
+ if (vertretung.Startzeit == "00:00" && vertretung.Endzeit == "00:00")
+ textbox_dauer.IsEnabled = true;
+ else
+ textbox_dauer.IsEnabled = false;
+
+ textbox_dauer.Text = string.Format("{0:0.00}", vertretung.DauerInStunden);
+
+ break;
+ }
+ }
+ textbox_startzeit.Text = vertretung.Startzeit;
+ textbox_endzeit.Text = vertretung.Endzeit;
+ }
+ textbox_bemerkung.Text = vertretung != null ? vertretung.Notice : "";
}
- textbox_bemerkung.Text = vertretung != null ? vertretung.Notice : "";
+ }
+ else if (e.RightButton == MouseButtonState.Pressed && LetzterEintrag != null)
+ {
+ // Mit Rechtsklick den zuletzt eingesetzten Dienst einsetzen
+ InsertEintragOderVertretung(LetzterEintrag.Startzeit, LetzterEintrag.Endzeit, LetzterEintrag.DauerInStunden, _AuswahlDienstZeileDC.Employee,
+ Pointer, _DienstplanerRootObj.AlleDienste.First(d => d.Oid == LetzterEintrag.DienstOid), _AuswahlDienstZeileDC.Zeile, LetzterEintrag.Notice);
}
#endregion
}
@@ -2280,7 +2314,8 @@ namespace BeWo.View.Detail.Report
}
}
// Status, Ist und Saldo updaten
- RefreshStatusForDay(i);
+ if (_DienstplanerRootObj.EnableStatuszeile)
+ RefreshStatusForDay(i);
foreach (var item in _DienstplanerRootObj.MonatsZusammenfassung)
{
if (item.Employee.EmployeeOid == dc.EmployeeOid)
@@ -2350,6 +2385,28 @@ namespace BeWo.View.Detail.Report
RefreshDienste();
}
+ private void combobox_mehrereDienste_mitarbeiter_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ var selectedEmp = combobox_mehrereDienste_mitarbeiter.SelectedItem as EmployeeDC;
+ var block = _DienstplanerRootObj.DienstDCListe.FirstOrDefault(b => b.Employee == selectedEmp);
+ if (block != null)
+ {
+ int letzteZeileMitEintraegen = 0;
+ for (int i = 0; i < block.DienstDictArray.Length; i++)
+ {
+ if (block.DienstDictArray[i].Count > 0)
+ {
+ letzteZeileMitEintraegen = i;
+ }
+ }
+
+ mehrereDienste_spinedit_zeile.MinValue = 1;
+ mehrereDienste_spinedit_zeile.MaxValue = letzteZeileMitEintraegen + 1;
+ mehrereDienste_spinedit_zeile.Value = 1;
+ mehrereDienste_spinedit_zeile.Increment = 1;
+ }
+ }
+
#region ColumnCreate
private GridColumn NewGridColumnUnbound(string header, string fieldName, string tag, GridColumnWidth width, double minWidth, DevExpress.Data.UnboundColumnType unboundColumnType, ControlTemplate displayTemplate, DevExpress.Utils.DefaultBoolean allowResize)
@@ -2463,6 +2520,8 @@ namespace BeWo.View.Detail.Report
return res;
}
+
+
#endregion
///
diff --git a/Service/Dienstplanung/DienstplanungsManager.cs b/Service/Dienstplanung/DienstplanungsManager.cs
index 9fafc9c81..fff3ec510 100644
--- a/Service/Dienstplanung/DienstplanungsManager.cs
+++ b/Service/Dienstplanung/DienstplanungsManager.cs
@@ -68,13 +68,18 @@ namespace BeWo.Service.Dienstplanung
root.DienstDCListe.AddRange(GetDienstvertretungen(wohnheimOid, date.Year, date.Month));
root.DienstDCListe = root.DienstDCListe.OrderBy(d => d.Employee.LastName).ToList();
+ root.EnableStatuszeile = SetEnableStatuszeile();
+ root.DienstZeilenListe = new List();
+ if (root.EnableStatuszeile)
+ root.DienstZeilenListe.Add(InitStatusZeile(date));
+
root.StatusColorTrue = "#FF228B22";
root.StatusColorFalse = "#FFCD5C5C";
var wh = DAOFactory.GenericDAO.GetByID(wohnheimOid);
List empOids = new List();
- #region EmployeeOids holen für Ist- und Saldoberechnung und die Liste der vorhandenen Mitarbeiter
+#region EmployeeOids holen für Ist- und Saldoberechnung und die Liste der vorhandenen Mitarbeiter
// WIEDER EINKOMMENTIEREN FALLS FEHLER AUFTRETEN
//foreach (var item in wh.Employee2WohnheimList)
//{
@@ -95,7 +100,7 @@ namespace BeWo.Service.Dienstplanung
if (!root.AllEmployee.Contains(block.Employee))
root.AllEmployee.Add(block.Employee);
}
- #endregion
+#endregion
root.MonatsZusammenfassung = BerechneSollSaldoUndIst(root, date, empOids);
@@ -758,5 +763,38 @@ namespace BeWo.Service.Dienstplanung
return bloeckeNeuSortiert;
}
}
+ public static DienstZeileDC InitStatusZeile(DateTime date)
+ {
+
+ var days = DateTime.DaysInMonth(date.Year, date.Month);
+ var zeileDC = new DienstZeileDC()
+ {
+ Contracts = null,
+ Date = date,
+ DienstDict = null,
+ Employee = null,
+ StatusListe = new List(),
+ Zeile = 0
+ };
+ for (int i = 1; i <= days; i++)
+ {
+ zeileDC.StatusListe.Add(new BesetzungsstatusDC()
+ {
+ DauerhaftBesetztStatus = false,
+ Stunden = 0,
+ Tag = i
+ });
+ }
+
+ return zeileDC;
+ }
+
+ public static bool SetEnableStatuszeile()
+ {
+#if DEBUG
+ return false;
+#endif
+ return true;
+ }
}
}
diff --git a/Shared/DataContracts/DienstplanerRootDC.cs b/Shared/DataContracts/DienstplanerRootDC.cs
index f3a232b89..0d5d22271 100644
--- a/Shared/DataContracts/DienstplanerRootDC.cs
+++ b/Shared/DataContracts/DienstplanerRootDC.cs
@@ -67,5 +67,8 @@ namespace BS.Shared.DataContracts
[DataMember]
public List SortierMethoden { get; set; }
+
+ [DataMember]
+ public bool EnableStatuszeile { get; set; }
}
}