MH: Dienstplanungmanager Dinge überschreibbar gemacht
This commit is contained in:
@@ -21,12 +21,12 @@ namespace BeWo.Service.Dienstplanung
|
||||
{
|
||||
public class DienstplanungsManager
|
||||
{
|
||||
public static DienstplanerRootDC BuildDienstplanerRootObject(DateTime date, long wohnheimOid)
|
||||
public virtual DienstplanerRootDC BuildDienstplanerRootObject(DateTime date, long wohnheimOid)
|
||||
{
|
||||
var anzahlZeilen = AppSettings.CreateSettings().DienstplanungStandardZeilenAnzahl;
|
||||
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wohnheimOid);
|
||||
|
||||
|
||||
|
||||
|
||||
DienstplanerRootDC root = new DienstplanerRootDC();
|
||||
OperationsServiceImp os = new OperationsServiceImp();
|
||||
@@ -79,6 +79,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
{
|
||||
if (!root.AlleDienstEintraege.Any(e => e.Zeile == vertretung.Zeile && e.EmployeeOid == vertretung.EmployeeOid && e.WohnheimOid == vertretung.WohnheimOid))
|
||||
{
|
||||
|
||||
var eintrag = new DienstEintrag()
|
||||
{
|
||||
Datum = vertretung.Datum,
|
||||
@@ -114,6 +115,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
|
||||
foreach (var e in root.AlleDienstEintraege)
|
||||
{
|
||||
|
||||
if (String.IsNullOrEmpty(e.Startzeit) || String.IsNullOrEmpty(e.Endzeit))
|
||||
{
|
||||
var d = root.AlleDienste.FirstOrDefault(a => a.Oid == e.DienstOid);
|
||||
@@ -132,9 +134,12 @@ namespace BeWo.Service.Dienstplanung
|
||||
}
|
||||
}
|
||||
root.AlleDienstvertretungen = GetAllDienstvertretungenAsList(wohnheimOid, date.Year, date.Month);
|
||||
//var eintraegeAndrianarivo = root.AlleDienstEintraege.Where(dv => dv.EmployeeOid == 36).ToList(); // debug
|
||||
//var vertretungenAndrianarivo = root.AlleDienstvertretungen.Where(dv => dv.EmployeeOid == 36).ToList(); // debug
|
||||
|
||||
root.DienstDCListe = GetDienstEintraege(wohnheimOid, date.Year, date.Month); //BP
|
||||
var dienstvertretungen = GetDienstvertretungen(wohnheimOid, date.Year, date.Month); // Hier muss dringend eingebaut werden, dass bereits enthaltene Mitarbeiter ignoriert oder verrechnet werden
|
||||
//var dienstvertretungenAndrianarivo = dienstvertretungen.Where(dv => dv.Employee.EmployeeOid == 36).ToList(); // debug
|
||||
|
||||
foreach (var dv in dienstvertretungen)
|
||||
{
|
||||
@@ -200,7 +205,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
var days = DateTime.DaysInMonth(date.Year, date.Month);
|
||||
for (int i = 1; i <= days; i++)
|
||||
{
|
||||
root.DienstZeilenListe[0].StatusListe[i - 1].DauerhaftBesetztStatus = RefreshStatusForDay(root.AlleDienstEintraege,
|
||||
root.DienstZeilenListe[0].StatusListe[i - 1].DauerhaftBesetztStatus = RefreshStatusForDay(root.AlleDienstEintraege,
|
||||
root.AlleDienstvertretungen, i, root.ZeitraumFuerPflichtbesetzungStart, root.ZeitraumFuerPflichtbesetzungEnde);
|
||||
}
|
||||
}
|
||||
@@ -210,7 +215,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
|
||||
|
||||
List<long> empOids = new List<long>();
|
||||
#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)
|
||||
//{
|
||||
@@ -231,8 +236,8 @@ namespace BeWo.Service.Dienstplanung
|
||||
if (!root.AllEmployee.Contains(block.Employee))
|
||||
root.AllEmployee.Add(block.Employee);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
var vs = PluginLoader.FindClass<VacationService>();
|
||||
var feiertageDaten = vs.GetFeiertage(date.Year);
|
||||
root.Feiertage = new List<FeiertagDC>();
|
||||
@@ -240,7 +245,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
root.Feiertage.Add(vs.GetFeiertag(datum));
|
||||
|
||||
root.MonatsZusammenfassung = BerechneSollSaldoUndIst(root, date, empOids);
|
||||
|
||||
|
||||
// Am Ende zu viele Einträge drin
|
||||
return root;
|
||||
}
|
||||
@@ -343,7 +348,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
var dienstEintraegeDC = MapperFactory.DienstEintragDC_DienstEintrag.MapToNewDCs(dienstEintraege);
|
||||
|
||||
|
||||
|
||||
|
||||
List<DienstEintragDC> dopplungen = new List<DienstEintragDC>();
|
||||
List<DienstEintragDC> schonGehabt = new List<DienstEintragDC>();
|
||||
|
||||
@@ -381,11 +386,15 @@ namespace BeWo.Service.Dienstplanung
|
||||
public static List<DienstvertretungDC> GetAllDienstvertretungenAsList(long wOid, int year, int month)
|
||||
{
|
||||
var res = new List<DienstvertretungDC>();
|
||||
var wh = MapperFactory.WohnheimDC_Wohnheim.MapToNewDC(DAOFactory.GenericDAO.GetByID<Wohnheim>(wOid));
|
||||
|
||||
var dienstvertretungen = DAOFactory.GenericDAO.GetAllActive<Dienstvertretung>().Where(x =>
|
||||
x.WohnheimOid == wOid &&
|
||||
x.Datum.Month == month &&
|
||||
x.Datum.Year == year);
|
||||
x.Datum.Year == year)
|
||||
.ToList();
|
||||
|
||||
|
||||
|
||||
var dienstvertretungenDC = MapperFactory.DienstvertretungDC_Dienstvertretung.MapToNewDCs(dienstvertretungen);
|
||||
|
||||
@@ -522,6 +531,8 @@ namespace BeWo.Service.Dienstplanung
|
||||
public static List<DienstBlockDC> GetDienstvertretungen(long wOid, int year, int month)
|
||||
{ //BP
|
||||
var res = new List<DienstBlockDC>();
|
||||
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wOid);
|
||||
var whDC = MapperFactory.CompactWohnheimDC_Wohnheim.MapToNewDC(wh);
|
||||
|
||||
var date = new DateTime(year, month, 1);
|
||||
var date2 = date.AddMonths(1).AddTicks(-1);
|
||||
@@ -529,12 +540,25 @@ namespace BeWo.Service.Dienstplanung
|
||||
var dienstvertretung = DAOFactory.GenericDAO.GetAllActive<Dienstvertretung>().Where(x =>
|
||||
x.WohnheimOid == wOid &&
|
||||
x.Datum.Month == month &&
|
||||
x.Datum.Year == year);
|
||||
x.Datum.Year == year)
|
||||
.ToList();
|
||||
|
||||
// WENN ES KRACHT DIESE FOR-SCHLEIFE AUSKOMMENTIEREN
|
||||
// Mitarbeitende, die sowieso im Wohnheim arbeiten, sollen nicht noch zusätzlich als Vertretung dargestellt werden
|
||||
for (int i = dienstvertretung.Count - 1; i >= 0; i--)
|
||||
{
|
||||
if (wh.Employee2WohnheimList.Any(e => e.Employee.Oid == dienstvertretung[i].EmployeeOid))
|
||||
{
|
||||
dienstvertretung.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
var dienstvertretungenDC = MapperFactory.DienstvertretungDC_Dienstvertretung.MapToNewDCs(dienstvertretung);
|
||||
|
||||
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wOid);
|
||||
var whDC = MapperFactory.CompactWohnheimDC_Wohnheim.MapToNewDC(wh);
|
||||
//var vertretungenAndrianarivo = dienstvertretungenDC.Where(dv => dv.EmployeeOid == 36).ToList(); // debug
|
||||
|
||||
|
||||
|
||||
|
||||
List<long> empOids = new List<long>();
|
||||
foreach (var vertretung in dienstvertretungenDC)
|
||||
@@ -563,6 +587,8 @@ namespace BeWo.Service.Dienstplanung
|
||||
|
||||
foreach (var emp in empsDC)
|
||||
{
|
||||
|
||||
|
||||
var contracts = emp.Contracts.Where(x => (!x.EntryDate.HasValue || x.EntryDate.Value <= date2) &&
|
||||
(!x.ContractEndDate.HasValue || x.ContractEndDate.Value >= date))
|
||||
.OrderBy(x => x.EntryDate)
|
||||
@@ -590,6 +616,10 @@ namespace BeWo.Service.Dienstplanung
|
||||
.Where(g => g.Count() > 1) // Nur welche, die es mehr als einmal gibt
|
||||
.SelectMany(g => g.Skip(1)) // Lässt das erste Element weg, damit beim Löschen der Doppelten einer übrig bleibt
|
||||
.ToList();
|
||||
//if (emp.EmployeeOid == 36)
|
||||
//{
|
||||
|
||||
//}
|
||||
if (doppelteEintraege != null && doppelteEintraege.Count > 0)
|
||||
{
|
||||
for (int x = empDienste.Count - 1; x > 0; x--)
|
||||
@@ -646,7 +676,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
x.EmployeeOid == empId &&
|
||||
x.WohnheimOid == wohnId &&
|
||||
x.Zeile == zeile &&
|
||||
x.Datum == date &&
|
||||
x.Datum == date &&
|
||||
x.IsActive == ActivationTypeId.Active);
|
||||
|
||||
//if (toDel != null)
|
||||
@@ -657,7 +687,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
DAOFactory.GenericDAO.Deactivate(toDel);
|
||||
}
|
||||
}
|
||||
public static bool DeleteDienstEintrag2(long empId, long wohnId, int zeile, DateTime date, DienstEintragDC dienstEintrag, List<DienstEintragDC> alleDiensteintraege,
|
||||
public static bool DeleteDienstEintrag2(long empId, long wohnId, int zeile, DateTime date, DienstEintragDC dienstEintrag, List<DienstEintragDC> alleDiensteintraege,
|
||||
List<DienstvertretungDC> alleDienstvertretungen, int day, DateTime pflichtStart, DateTime pflichtEnde)
|
||||
{
|
||||
var toDel = DAOFactory.GenericDAO.GetAll<DienstEintrag>()
|
||||
@@ -683,7 +713,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
if (index != null)
|
||||
alleDiensteintraege.RemoveAt(index.Value);
|
||||
}
|
||||
|
||||
|
||||
return RefreshStatusForDay(alleDiensteintraege, alleDienstvertretungen, day, pflichtStart, pflichtEnde);
|
||||
}
|
||||
public static void DeleteDienstvertretung(long empId, long wohnId, int zeile, DateTime date)
|
||||
@@ -843,17 +873,13 @@ namespace BeWo.Service.Dienstplanung
|
||||
var konto = MitarbeiterstundenkontoRO.Create(null, null, date, date.AddMonths(1), empOids);
|
||||
DienstplanungsManager manager = PluginLoader.FindClass<DienstplanungsManager>();
|
||||
|
||||
var berechnung = PluginLoader.FindClass<MitarbeiterstundenkontoBerechnung>();
|
||||
var berechnung = PluginLoader.FindClass<MitarbeiterstundenkontoBerechnung>();
|
||||
berechnung.CreateReport(konto);
|
||||
List<DienstplanerMonthlySummaryDC> monatsZusammenfassung = new List<DienstplanerMonthlySummaryDC>();
|
||||
root.StundenBeiAbwesenheit = new Dictionary<long?, decimal>();
|
||||
|
||||
|
||||
foreach (var item in konto.EmployeeDetailList)
|
||||
{
|
||||
if (item.Employee.Oid == 19)
|
||||
{
|
||||
|
||||
}
|
||||
root.StundenBeiAbwesenheit.Add(item.Employee.Oid, item.SollProTag);
|
||||
var employee = MapperFactory.EmployeeDC_Employee.MapToNewDC(item.Employee);
|
||||
|
||||
@@ -1012,7 +1038,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
|
||||
return monatsZusammenfassung;
|
||||
}
|
||||
|
||||
|
||||
public virtual decimal ZieheWochenendenAb(AbsenceTimeDC abs)
|
||||
{
|
||||
decimal wochenendAbzug = 0;
|
||||
@@ -1047,7 +1073,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
|
||||
foreach (var item in konto.EmployeeDetailList)
|
||||
{
|
||||
stundenBeiAbwesenheitValue = item.SollProTag;
|
||||
stundenBeiAbwesenheitValue = item.SollProTag;
|
||||
|
||||
dc = new DienstplanerMonthlySummaryDC
|
||||
{
|
||||
@@ -1151,7 +1177,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static List<string> SetSortierMethoden()
|
||||
{
|
||||
@@ -1160,7 +1186,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
{
|
||||
auswahl.Add(e.ToString());
|
||||
}
|
||||
|
||||
|
||||
return auswahl;
|
||||
}
|
||||
|
||||
@@ -1189,7 +1215,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
}
|
||||
|
||||
private static List<DienstBlockDC> NachMengeDerDiensteSortieren(List<DienstBlockDC> bloecke, bool aufsteigend)
|
||||
{
|
||||
{
|
||||
Dictionary<long?, int> anzahlDiensteProMitarbeiter = new Dictionary<long?, int>();
|
||||
|
||||
foreach (var block in bloecke)
|
||||
@@ -1199,7 +1225,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
if (!anzahlDiensteProMitarbeiter.ContainsKey(block.Employee.EmployeeOid))
|
||||
anzahlDiensteProMitarbeiter.Add(block.Employee.EmployeeOid, dict.Count);
|
||||
else
|
||||
anzahlDiensteProMitarbeiter[block.Employee.EmployeeOid] += dict.Count;
|
||||
anzahlDiensteProMitarbeiter[block.Employee.EmployeeOid] += dict.Count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1217,7 +1243,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
nextEmployee = anz.Key;
|
||||
max = anz.Value;
|
||||
}
|
||||
else if(anz.Value == 0)
|
||||
else if (anz.Value == 0)
|
||||
{
|
||||
nextEmployee = anz.Key;
|
||||
}
|
||||
@@ -1351,8 +1377,8 @@ namespace BeWo.Service.Dienstplanung
|
||||
return zeileDC;
|
||||
}
|
||||
|
||||
public static List<DienstEintragDC> AddRegelmaessigeDiensteToDienstplaner(RegelmaessigerDienstDC dc, List<DienstEintragDC> alleDienstEintraege,
|
||||
List<DienstvertretungDC> alleDienstvertretungen, List<AbsenceTimeDC> absenceTimes, List<FeiertagDC> feiertage, bool enableDiensteAnFeiertagen,
|
||||
public static List<DienstEintragDC> AddRegelmaessigeDiensteToDienstplaner(RegelmaessigerDienstDC dc, List<DienstEintragDC> alleDienstEintraege,
|
||||
List<DienstvertretungDC> alleDienstvertretungen, List<AbsenceTimeDC> absenceTimes, List<FeiertagDC> feiertage, bool enableDiensteAnFeiertagen,
|
||||
List<DienstZeileDC> dienstZeilenListe, DateTime pflichtStart, DateTime pflichtEnde, bool enableStatusZeile, DateTime datum)
|
||||
{
|
||||
DayOfWeek weekday = DayOfWeek.Monday;
|
||||
@@ -1510,7 +1536,7 @@ namespace BeWo.Service.Dienstplanung
|
||||
return dienstEintraegeToAdd;
|
||||
}
|
||||
|
||||
public static bool RefreshStatusForDay(List<DienstEintragDC> alleDienstEintraege, List<DienstvertretungDC> alleDienstvertretungen, int day,
|
||||
public static bool RefreshStatusForDay(List<DienstEintragDC> alleDienstEintraege, List<DienstvertretungDC> alleDienstvertretungen, int day,
|
||||
DateTime pflichtStart, DateTime pflichtEnde)
|
||||
{
|
||||
List<DienstEintragDC> eintraegeUndVertretungen = new List<DienstEintragDC>();
|
||||
@@ -1552,9 +1578,9 @@ namespace BeWo.Service.Dienstplanung
|
||||
|
||||
public virtual bool SetEnableDiensteAnFeiertagen()
|
||||
{
|
||||
//#if DEBUG
|
||||
// return false;
|
||||
//#endif
|
||||
//#if DEBUG
|
||||
// return false;
|
||||
//#endif
|
||||
return true;
|
||||
}
|
||||
public virtual bool SetEnableAbwesenheitenAnWochenenden()
|
||||
|
||||
@@ -7985,11 +7985,12 @@ namespace BeWo.Service.ServiceImplementations
|
||||
}
|
||||
}
|
||||
|
||||
public DienstplanerRootDC BuildDienstplanerRootObject(DateTime date, long wohnheimOid)
|
||||
public virtual DienstplanerRootDC BuildDienstplanerRootObject(DateTime date, long wohnheimOid)
|
||||
{
|
||||
try
|
||||
{
|
||||
DienstplanerRootDC root = DienstplanungsManager.BuildDienstplanerRootObject(date, wohnheimOid);
|
||||
var manager = PluginLoader.FindClass<DienstplanungsManager>();
|
||||
DienstplanerRootDC root = manager.BuildDienstplanerRootObject(date, wohnheimOid);
|
||||
//root.Feiertage = GetDefaultFeiertageForYear(date.Year);
|
||||
|
||||
return root;
|
||||
|
||||
Reference in New Issue
Block a user