komm mit und master / Schulbegleitender Dienst Update

This commit is contained in:
Waldi
2017-11-15 08:08:12 +01:00
parent 0148e60c91
commit 1743066531
18 changed files with 2758 additions and 2682 deletions

View File

@@ -209,7 +209,7 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="SchulbegleitenderDienst\NewSchulbegleitenderDienstView.xaml">
<Page Include="SchulbegleitenderDienst\SchulbegleitenderVertretungsDienstMainView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
@@ -582,9 +582,13 @@
<Compile Include="SchulbegleitenderDienst\SchulbegleitenderDienstBearbeitungsView.xaml.cs">
<DependentUpon>SchulbegleitenderDienstBearbeitungsView.xaml</DependentUpon>
</Compile>
<Compile Include="SchulbegleitenderDienst\NewSchulbegleitenderDienstView.xaml.cs">
<DependentUpon>NewSchulbegleitenderDienstView.xaml</DependentUpon>
<Compile Include="SchulbegleitenderDienst\SchulbegleitenderVertretungsDienstMainView.xaml.cs">
<DependentUpon>SchulbegleitenderVertretungsDienstMainView.xaml</DependentUpon>
</Compile>
<Compile Include="SchulbegleitenderDienst\TagesAnsicht.cs" />
<Compile Include="SchulbegleitenderDienst\TagesVertretung.cs" />
<Compile Include="SchulbegleitenderDienst\WochenAnsicht.cs" />
<Compile Include="SchulbegleitenderDienst\WochenVertretung.cs" />
<Compile Include="UploadDialog.xaml.cs">
<DependentUpon>UploadDialog.xaml</DependentUpon>
</Compile>
@@ -1358,7 +1362,7 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\SchulbegleitenderDienst.xaml">
<Page Include="SchulbegleitenderDienst\SchulbegleitenderDienstView.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -1773,8 +1777,8 @@
<Compile Include="View\PercentageDisplay.xaml.cs">
<DependentUpon>PercentageDisplay.xaml</DependentUpon>
</Compile>
<Compile Include="View\SchulbegleitenderDienst.xaml.cs">
<DependentUpon>SchulbegleitenderDienst.xaml</DependentUpon>
<Compile Include="SchulbegleitenderDienst\SchulbegleitenderDienstView.xaml.cs">
<DependentUpon>SchulbegleitenderDienstView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Report\AnnualReport\AnnualReportChartControl.xaml.cs">
<DependentUpon>AnnualReportChartControl.xaml</DependentUpon>
@@ -1982,7 +1986,7 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Chat\ChatController\ChatController.csproj">
<ProjectReference Include="..\..\Chat\ChatController\ChatController.csproj">
<Project>{8a83c4dc-a0b1-4a51-ae1d-366d7a05b298}</Project>
<Name>ChatController</Name>
</ProjectReference>

View File

@@ -20,13 +20,17 @@ namespace BeWo.SchulbegleitenderDienst
{
public event EventHandler<KrankheitsEventArgs> RaiseCustomEvent;
public KrankheitsZeitraumView( DateTime start,DateTime ende)
private TagesAnsicht tagesAansicht;
public KrankheitsZeitraumView( DateTime start,DateTime ende, TagesAnsicht tansicht)
{
InitializeComponent();
DateVon.EditValue = start;
DateBis.EditValue = ende;
tagesAansicht = tansicht;
CloseWindow();
@@ -63,7 +67,7 @@ namespace BeWo.SchulbegleitenderDienst
var b = DateBis.DateTime;
RaiseCustomEvent(this, new KrankheitsEventArgs(a,b));
RaiseCustomEvent(this, new KrankheitsEventArgs(a,b,tagesAansicht));
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
@@ -74,14 +78,16 @@ namespace BeWo.SchulbegleitenderDienst
public class KrankheitsEventArgs : EventArgs
{
public KrankheitsEventArgs(DateTime s, DateTime e)
public KrankheitsEventArgs(DateTime s, DateTime e, TagesAnsicht t)
{
_start = s;
_end = e;
_tagesAnsicht = t;
}
private DateTime _start;
private DateTime _end;
private TagesAnsicht _tagesAnsicht;
public DateTime Start
{
@@ -91,5 +97,10 @@ namespace BeWo.SchulbegleitenderDienst
{
get { return _end; }
}
public TagesAnsicht TagesItem
{
get { return _tagesAnsicht; }
}
}
}

View File

@@ -16,6 +16,11 @@ namespace BeWo.SchulbegleitenderDienst
{
public partial class SchulbegleitenderDienstBearbeitungsView
{
#region Variablen
public event EventHandler<CustomEventArgs> RaiseCustomEvent;
private DateTime? _startDate;
@@ -38,8 +43,14 @@ namespace BeWo.SchulbegleitenderDienst
Dictionary<string, SearchViewDaten> letzteVertretungsListBox = new Dictionary<string, SearchViewDaten>();
private TagesAnsicht tagesAnsicht;
public SchulbegleitenderDienstBearbeitungsView(int y, DateTime? startdate, DateTime? enddate, DateTime currentDate, long? klientOid)
private WochenAnsicht wochenAnsicht;
private string wochentag;
#endregion
public SchulbegleitenderDienstBearbeitungsView(int y, DateTime? startdate, DateTime? enddate, DateTime currentDate, long? klientOid,TagesAnsicht tsa,WochenAnsicht wsa,string tag)
{
InitializeComponent();
@@ -102,7 +113,12 @@ namespace BeWo.SchulbegleitenderDienst
//setze itemsource von allen Letzten Vertretern
SetzeLetzteVertreter();
tagesAnsicht = tsa;
wochenAnsicht = wsa;
wochentag = tag;
}
private void RootGroupBox_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
@@ -248,7 +264,7 @@ namespace BeWo.SchulbegleitenderDienst
{
if (_startDate.HasValue && _endDate.HasValue && KVCheckBox.IsChecked.Value)
{
RaiseCustomEvent(this, new CustomEventArgs(x, _startDate, _endDate));
RaiseCustomEvent(this, new CustomEventArgs(x, _startDate, _endDate,tagesAnsicht,wochenAnsicht,wochentag));
Close();
}
@@ -282,7 +298,7 @@ namespace BeWo.SchulbegleitenderDienst
DateTime? xBis = new DateTime(_endDate.Value.Year, _endDate.Value.Month, _endDate.Value.Day, dateBis.Hour, dateBis.Minute, dateBis.Second);
RaiseCustomEvent(this, new CustomEventArgs(x, xVon, xBis));
RaiseCustomEvent(this, new CustomEventArgs(x, xVon, xBis,tagesAnsicht,wochenAnsicht,wochentag));
Close();
}
@@ -972,12 +988,18 @@ namespace BeWo.SchulbegleitenderDienst
private CompactEmployeeDC dc;
private DateTime? startdt;
private DateTime? enddt;
private TagesAnsicht tagesItem;
private WochenAnsicht wochenItem;
private string wochentag;
public CustomEventArgs(CompactEmployeeDC s, DateTime? start, DateTime? ende)
public CustomEventArgs(CompactEmployeeDC s, DateTime? start, DateTime? ende,TagesAnsicht item,WochenAnsicht wItem,string wtag)
{
dc = s;
startdt = start;
enddt = ende;
tagesItem = item;
wochenItem = wItem;
wochentag = wtag;
}
public CompactEmployeeDC Message
@@ -995,6 +1017,21 @@ namespace BeWo.SchulbegleitenderDienst
get { return enddt; }
}
public TagesAnsicht TagesItem
{
get { return tagesItem; }
}
public WochenAnsicht WochenItem
{
get { return wochenItem; }
}
public string WochenTag
{
get { return wochentag; }
}
}
public class SearchViewDaten

View File

@@ -1,4 +1,4 @@
<localView:BeWoView x:Class="BeWo.View.SchulbegleitenderDienst"
<localView:BeWoView x:Class="BeWo.SchulbegleitenderDienst.SchulbegleitenderDienstView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"

View File

@@ -29,9 +29,9 @@ using CheckBox = System.Windows.Controls.CheckBox;
using KeyEventArgs = System.Windows.Input.KeyEventArgs;
using MessageBox = System.Windows.MessageBox;
namespace BeWo.View
namespace BeWo.SchulbegleitenderDienst
{
public partial class SchulbegleitenderDienst
public partial class SchulbegleitenderDienstView
{
//private CustomerVM _ViewModel;
@@ -48,7 +48,7 @@ namespace BeWo.View
Dictionary<string, CompactTokenDC> verfuegbarerAusschlussToken = new Dictionary<string, CompactTokenDC>();
public SchulbegleitenderDienst(TableID pObjectTid, long? oid,SchulbegleitenderZugehoerigkeitsTyp typ)
public SchulbegleitenderDienstView(TableID pObjectTid, long? oid,SchulbegleitenderZugehoerigkeitsTyp typ)
{
InitializeComponent();

View File

@@ -1,4 +1,4 @@
<localView:BeWoView x:Class="BeWo.SchulbegleitenderDienst.NewSchulbegleitenderDienstView"
<localView:BeWoView x:Class="BeWo.SchulbegleitenderDienst.SchulbegleitenderVertretungsDienstMainView"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localSchConv="clr-namespace:BeWo.Scheduler.Converter"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BS.Shared;
using BS.Shared.DataContracts;
namespace BeWo.SchulbegleitenderDienst
{
public class TagesAnsicht //---> muss Verbessert werden
{
public VertretungDC VertretungsDC { get; set; } // ---> Sicherheitsrisiko ??
//----------------------------------------------------------------
public AbsenceTimeDC AbsenceTimeDC { get; set; } // --> muss das sein ?
public DateTime StartD { get; set; }
public DateTime EndD { get; set; }
public Dictionary<AppointmentDayOfWeek, string> Wochentagsarbeitszeit { get; set; }
// KAnnn das nicht weg
public long Mitarbeiteroid { get; set; }
public long Klientoid { get; set; }
public long Vertreteroid { get; set; } // --> Nein muss nicht.
//----------------------------------------------------------------
public string Vertretung { get; set; }
public string Kunde { get; set; }
public string KrankerMitarbeiter { get; set; }
public AbsenceReasonDC AbwesenheitsKategorie { get; set; }
public DateTime KrankheitsMeldung { get; set; }
//public string MaFehlzeit { get; set; }
//public string KindFehlzeit { get; set; }
public string KrankheitsZeitraum { get; set; }
public string VertretungsZeitraum { get; set; }
public string Beschreibung { get; set; }
//public int ParentId { get; set; }
//public int Oid { get; set; }
//Farbe der Jeweiligen Zeile
public int IsKunde { get; set; }
public int IsMitarbeiter { get; set; }
//Villeicht mal schauen mal sehen
public string AbwesenheitsKategorieToString
{
get { return AbwesenheitsKategorie.Description; }
}
public string Arbeitszeit { get; set; }
public bool IsMitarbeiterKrank { get; set; }
public bool IsCustomerKrank { get; set; }
public string WochenansichtBemerkung { get; set; }
}
}

View File

@@ -0,0 +1,412 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using BeWo.Core;
using BeWo.ServiceProxy;
using BeWo.View;
using BeWo.ViewModel;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWo.SchulbegleitenderDienst
{
class TagesVertretung
{
#region variablen
private SchulbegleitenderDienstBearbeitungsView _view;
private KrankheitsZeitraumView _krankView;
private List<TagesAnsicht> _items;
#endregion
#region Lade Tages Ansicht
public List<TagesAnsicht> VerarbeiteItemZuTagesAnsicht(VertretungsListeItemsDC item)
{
_items = new List<TagesAnsicht>();
int i = 0, y = 0;
if (!item.VertretenderMitarbeiter.Equals(""))
{
i = 1;
}
if (!item.EmployeeName.Equals(""))
{
y = 1;
}
if (item.Customer.Count != 0)
{
#region add Foreach Customers
foreach (var customer in item.Customer)
{
TagesAnsicht xyc = CreateSchulbegleitenderDienst(item, y);
if (item.Vertretung != null)
{
if (item.Vertretung.CustomerOid == customer.Key)
{
xyc = Vertretungsgedoense(xyc, item, i);
xyc.Vertreteroid = item.VertetenderMit;
}
else
{
xyc.Vertretung = "";
}
if (item.Vertretung.VertretenderMitarbeiterOid == 0)
{
xyc.IsKunde = 0;
}
}
else
{
xyc.IsKunde = 0;
xyc.Vertretung = "";
}
xyc.AbsenceTimeDC = item.Absencetime;
xyc.Mitarbeiteroid = item.EmployeeOid;
xyc.Klientoid = customer.Key;
xyc.Kunde = customer.Value;
xyc.WochenansichtBemerkung = item.WochenansichtBemerkung;
//xyc.Beschreibung = item.Bemerkung;//nur anzeigen wenn gewollt das man die Message Von der Krankmeldung sieht
if (item.EmployeeName.Equals(""))
{
i = 2;
xyc.IsKunde = i;
}
//neu
if (item.isMitarbeiterKrank)
{
xyc.IsMitarbeiterKrank = true;
xyc.IsKunde = 2;
// hier den Tag merken um auch für WOCHEN bereich die spalte orange zu machen
}
if (item.isCustomerKrank)
{
xyc.IsCustomerKrank = true;
xyc.IsKunde = 2;
}
//hier bereich zu abfrage Vertretung Gewünscht / nicht gewünscht
//################## Besser auf Server auslagern ?? #############################################
List<long> custOid = new List<long>();
custOid.Add(customer.Key);
var cus = ServiceFacade.DoCustomerServiceSync(r => r.GetCustomersById(custOid));
foreach (var c in cus)
{
// 1 für Grün | 0 für Rot
if (c.VertretungDringendErforderlich == false && c.VertretungGewuenscht == false)
{
//anzeige Grün machen
xyc.IsKunde = 1;
}
//else if (c.VertretungDringendErforderlich == false && c.VertretungGewuenscht == true)
//{
// // anzeige noral halten
// xyc.IsKunde = 2;
//}
//else if (c.VertretungDringendErforderlich == true && c.VertretungGewuenscht == true)
//{
// //anzeige normal halten
// xyc.IsKunde = 2;
//}
}
//############################
_items.Add(xyc);
}
#endregion
}
else
{
#region add without customer
TagesAnsicht xyc = CreateSchulbegleitenderDienst(item, y);
if (item.Vertretung != null)
{
xyc = Vertretungsgedoense(xyc, item, i);
// Vertretung zwar vorhanden aber ohne einem Vertreter
if (item.Vertretung.VertretenderMitarbeiterOid == 0)
{
xyc.IsKunde = 0;
}
}
else
{
xyc.IsKunde = 0;
xyc.Vertretung = "";
}
xyc.AbsenceTimeDC = item.Absencetime;
xyc.Vertreteroid = item.VertetenderMit;
xyc.Mitarbeiteroid = item.EmployeeOid;
xyc.WochenansichtBemerkung = item.WochenansichtBemerkung;
//xyc.Beschreibung = item.Bemerkung; //nur anzeigen wenn gewollt das man die Message Von der Krankmeldung sieht
xyc.Kunde = "";
xyc.Klientoid = 0;
if (item.EmployeeName.Equals(""))
{
i = 2;
xyc.IsKunde = i;
}
_items.Add(xyc);
#endregion
}
return _items;
}
private TagesAnsicht Vertretungsgedoense(TagesAnsicht xyc, VertretungsListeItemsDC item, int i)
{
if (item.Vertretung.VertretungsZeitraumVon.Date != item.Vertretung.VertretungsZeitraumBis.Date)
{
if (item.Vertretung.VertretungsZeitraumVon.Hour == 0 && item.Vertretung.VertretungsZeitraumVon.Minute == 0 &&
item.Vertretung.VertretungsZeitraumBis.Hour == 0 && item.Vertretung.VertretungsZeitraumBis.Minute == 0)
{
xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy") + " - " +
item.Vertretung.VertretungsZeitraumBis.Date.ToString("dd.MM.yyyy");
}
else
{
xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy HH:mm") + " - " +
item.Vertretung.VertretungsZeitraumBis.Date.ToString("dd.MM.yyyy HH:mm");
}
}
else
{
if (item.Vertretung.VertretungsZeitraumVon.Hour == 0 && item.Vertretung.VertretungsZeitraumVon.Minute == 0 &&
item.Vertretung.VertretungsZeitraumBis.Hour == 0 && item.Vertretung.VertretungsZeitraumBis.Minute == 0)
{
xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy");
}
else
{
xyc.VertretungsZeitraum = item.Vertretung.VertretungsZeitraumVon.Date.ToString("dd.MM.yyyy HH:mm") + " - " + item.Vertretung.VertretungsZeitraumBis.Date.ToString("HH:mm");
}
}
xyc.VertretungsDC = item.Vertretung;
xyc.Vertretung = item.VertretenderMitarbeiter;
xyc.IsKunde = i;
xyc.Beschreibung = item.Vertretung.Notice;
return xyc;
}
private TagesAnsicht CreateSchulbegleitenderDienst(VertretungsListeItemsDC item, int y)
{
TagesAnsicht xyc = new TagesAnsicht()
{
KrankheitsZeitraum = item.Krankheitszeitraum,
KrankerMitarbeiter = item.EmployeeName,
KrankheitsMeldung = item.Krankheitsmeldung,
IsMitarbeiter = y,
Arbeitszeit = item.Worktime,
Wochentagsarbeitszeit = item.Wochentagsarbeitszeit
};
if (item.Abwesenheitskategorie != null)
xyc.AbwesenheitsKategorie = item.Abwesenheitskategorie;
if (item.Absencetime.End != null && item.Absencetime.Start != null)
{
xyc.EndD = item.Absencetime.End.Value;
xyc.StartD = item.Absencetime.Start.Value;
}
return xyc;
}
#endregion
#region Adde Der Tagesansicht Eine Vertretung
public void AddeNeueTagesVertretung(TagesAnsicht a , DateTime dateTime)
{
if (a.Mitarbeiteroid != 0)
{
_view = new SchulbegleitenderDienstBearbeitungsView(1, a.StartD, a.EndD, dateTime, a.Klientoid,a,null,"");
_view.RaiseCustomEvent += new EventHandler<CustomEventArgs>(Tagesansicht_RaiseCustomEvent);
_view.ShowDialog();
}
else
{
MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.");
}
}
private void Tagesansicht_RaiseCustomEvent(object sender, CustomEventArgs e)
{
UpdateMitarbeiterToVertretung(e.Message, e.StartDate, e.EndDate, e.TagesItem);
_view.Close();
}
private void UpdateMitarbeiterToVertretung(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate, TagesAnsicht a)
{
VertretungDC vert = new VertretungDC()
{
CustomerOid = a.Klientoid,
EmployeeOid = a.Mitarbeiteroid,
VertretungsZeitraumVon = startDate.Value,
VertretungsZeitraumBis = endDate.Value,
AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid,
VertretenderMitarbeiterOid = employee.EmployeeOid,
Notice = a.Beschreibung
};
if (a.VertretungsDC != null)
{
vert.VertretungOid = a.VertretungsDC.VertretungOid;
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert));
}
else
{
ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert));
}
}
#endregion
#region Delete KrankMeldung / Vertretung
public void DeleteKrankmeldung(TagesAnsicht a)
{
Dictionary<long, long> ahh = new Dictionary<long, long>();
ahh.Add(a.AbsenceTimeDC.AbsenceTimeOid.Value, a.AbsenceTimeDC.AbsenceTimeVersion.Value);
ServiceFacade.DoOperationsServiceSync(s => s.DeactivateAbsenceTime(ahh));
VertretungDC vert = new VertretungDC();
if (a.VertretungsDC != null)
{
vert = a.VertretungsDC;
ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert.VertretungOid.Value));
}
}
public void DeleteVertretung(TagesAnsicht a)
{
VertretungDC vert = new VertretungDC();
if (a.VertretungsDC != null)
{
vert = a.VertretungsDC;
ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(vert.VertretungOid.Value));
}
}
#endregion
#region KrankheitsZeitraum Bearbeiten
public void KrankMeldeZeitraumBearbeiten(TagesAnsicht a)
{
_krankView = new KrankheitsZeitraumView(a.StartD, a.EndD,a);
_krankView.RaiseCustomEvent += new EventHandler<KrankheitsEventArgs>(newWindowKrankzeitraum_RaiseCustomEvent);
_krankView.ShowDialog();
}
private void newWindowKrankzeitraum_RaiseCustomEvent(object sender, KrankheitsEventArgs e)
{
UpdateKrankheitsZeitraum(e.Start, e.Ende,e.TagesItem);
_krankView.Close();
}
private void UpdateKrankheitsZeitraum(DateTime startZeit, DateTime endZeit, TagesAnsicht ab)
{
ab.AbsenceTimeDC.Start = startZeit;
ab.AbsenceTimeDC.End = endZeit;
List<AbsenceTimeDC> a = new List<AbsenceTimeDC>();
a.Add(ab.AbsenceTimeDC);
ServiceFacade.DoCustomerServiceSync(s => s.UpdateAbsenceTimes(a));
}
#endregion
#region Update das Bearbeitete Item (Row)
public void UpdateRowData(TagesAnsicht a)
{
AbsenceTimeDC abstime = new AbsenceTimeDC()
{
AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid,
Start = a.StartD,
End = a.EndD,
Reason = a.AbwesenheitsKategorie,
KrankheitsMeldung = a.KrankheitsMeldung
};
VertretungDC vert = new VertretungDC()
{
CustomerOid = a.Klientoid,
EmployeeOid = a.Mitarbeiteroid,
AbsenceTimeOid = a.AbsenceTimeDC.AbsenceTimeOid,
VertretenderMitarbeiterOid = a.Vertreteroid,
Notice = a.Beschreibung
};
vert.VertretungsZeitraumVon = a.StartD;
vert.VertretungsZeitraumBis = a.EndD;
if (a.VertretungsDC != null)
{
vert.VertretungOid = a.VertretungsDC.VertretungOid;
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretungAndAbsenceTime(vert, abstime));
}
else
{
ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert));
ServiceFacade.DoOperationsServiceSync(s => s.UpdateAbsenceTime(abstime));
}
}
#endregion
}
}

View File

@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.SchulbegleitenderDienst
{
public class WochenAnsicht
{
//public long? VertretungsOid { get; set; }
public string MaFrei { get; set; }
public string MaKrank { get; set; }
public string Kind { get; set; }
public bool IsMitarbeiterKrank { get; set; }
public bool isCustomerKrank { get; set; }
public string Bemerkung { get; set; }
public string WochenBeschreibung { get; set; }
//Fürs WPF Klient Wochenanzeige
public string VertretungMo { get; set; }
public string VertretungDi { get; set; }
public string VertretungMi { get; set; }
public string VertretungDo { get; set; }
public string VertretungFr { get; set; }
public string VertretungSa { 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, TagesAnsicht>> 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, TagesAnsicht>> KlientvertretungsWoche { get; set; }
}
}

View File

@@ -0,0 +1,580 @@
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
{
#region variablen
private SchulbegleitenderDienstBearbeitungsView _view;
private Dictionary<string, Dictionary<DateTime, TagesAnsicht>> a;
private Dictionary<String, Dictionary<DateTime, TagesAnsicht>> klientb;
#endregion
#region Lade Wochen Ansicht
public Dictionary<string, List<WochenAnsicht>> GetWochenAnsichtFromItems(DateTime time,List<TagesAnsicht> _items)
{
List<WochenAnsicht> _itemsWochen = new List<WochenAnsicht>();
List<WochenAnsicht> _itemsWochenKrankerMitarbeiter = new List<WochenAnsicht>();
DateTime dt = time;
DateTime startdt = dt.FirstDateOfWeek(dt.GetIso8601WeekOfYear());
foreach (var item in _items)
{
a = new Dictionary<string, Dictionary<DateTime, TagesAnsicht>>();
klientb = new Dictionary<string, Dictionary<DateTime, TagesAnsicht>>();
DateTime anfangDt;
DateTime endeDt;
anfangDt = item.StartD;
endeDt = item.EndD;
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);
WochenAnsicht wwk = new WochenAnsicht()
{
MaKrank = item.KrankerMitarbeiter,
Kind = item.Kunde,
MaFrei = item.Vertretung,
WochenBeschreibung = item.WochenansichtBemerkung,
//Bemerkung = item.Beschreibung
};
// Montag | 0
wwk = WochentagVerarbeitung(anfangDt, endeDt, montagDt, item, "VertretungMo", "EingesetztBeiMo", wwk, 0);
//Dienstag | 1
wwk = WochentagVerarbeitung(anfangDt, endeDt, dienstagDt, item, "VertretungDi", "EingesetztBeiDi", wwk,
1);
//Mittwoch | 2
wwk = WochentagVerarbeitung(anfangDt, endeDt, mittwochDt, item, "VertretungMi", "EingesetztBeiMi", wwk,
2);
//Donnerstag | 3
wwk = WochentagVerarbeitung(anfangDt, endeDt, donnerstagDt, item, "VertretungDo", "EingesetztBeiDo", wwk,
3);
//Freitag | 4
wwk = WochentagVerarbeitung(anfangDt, endeDt, freitagDt, item, "VertretungFr", "EingesetztBeiFr", wwk, 4);
//Samstag | 5
wwk = WochentagVerarbeitung(anfangDt, endeDt, samstagDt, item, "VertretungSa", "EingesetztBeiSa", wwk, 5);
wwk.VertretungsWoche = a;
wwk.KlientvertretungsWoche = klientb;
//Abfrage für Klienten Krank
if (wwk.IsMitarbeiterKrank)
{
_itemsWochenKrankerMitarbeiter.Add(wwk);
}
else
{
_itemsWochen.Add(wwk);
}
}
Dictionary<string, List<WochenAnsicht>> dic = new Dictionary<string, List<WochenAnsicht>>();
dic.Add("_itemsWochenKrankerMitarbeiter", _itemsWochenKrankerMitarbeiter);
dic.Add("_itemsWochen", _itemsWochen);
return dic;
}
private WochenAnsicht WochentagVerarbeitung(DateTime anfangDt, DateTime endeDt, DateTime wochentagDt, TagesAnsicht item, string vertretungstag, string einsetzungstag, WochenAnsicht wwk, int i)
{
if (anfangDt.Date <= wochentagDt && wochentagDt <= endeDt.Date)
{
if (item.VertretungsDC != null)
{
if (item.VertretungsDC.VertretungsZeitraumVon.Date <= wochentagDt.Date &&
item.VertretungsDC.VertretungsZeitraumBis.Date >= wochentagDt.Date)
{
Dictionary<DateTime, TagesAnsicht> sa = new Dictionary<DateTime, TagesAnsicht>();
sa.Add(wochentagDt, item); // item.vertreteroid
a.Add(vertretungstag, sa);
klientb.Add(einsetzungstag, sa);
switch (i)
{
case 0:
if (item.IsCustomerKrank)
{
wwk.isCustomerKrank = true;
}
else
{
wwk.VertretungMo = item.Vertretung;
}
// wwk.EingesetztBeiMo = item.Kunde;
wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 1:
if (item.IsCustomerKrank)
{
wwk.isCustomerKrank = true;
}
else
{
wwk.VertretungDi = item.Vertretung;
}
// wwk.EingesetztBeiDi = item.Kunde;
wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 2:
if (item.IsCustomerKrank)
{
wwk.isCustomerKrank = true;
}
else
{
wwk.VertretungMi = item.Vertretung;
}
// wwk.EingesetztBeiMi = item.Kunde;
wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 3:
if (item.IsCustomerKrank)
{
wwk.isCustomerKrank = true;
}
else
{
wwk.VertretungDo = item.Vertretung;
}
// wwk.EingesetztBeiDo = item.Kunde;
wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 4:
if (item.IsCustomerKrank)
{
wwk.isCustomerKrank = true;
}
else
{
wwk.VertretungFr = item.Vertretung;
}
// wwk.EingesetztBeiFr = item.Kunde;
wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 5:
if (item.IsCustomerKrank)
{
wwk.isCustomerKrank = true;
}
else
{
wwk.VertretungSa = item.Vertretung;
}
// wwk.EingesetztBeiSa = item.Kunde;
wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
}
}
else
{
switch (i)
{
case 0:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungMo = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungMo = "";
}
// wwk.EingesetztBeiMo = "";
wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 1:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungDi = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungDi = "";
}
wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiDi = "";
break;
case 2:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungMi = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungMi = " ";
}
wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiMi = "";
break;
case 3:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungDo = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungDo = "";
}
wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
//wwk.EingesetztBeiDo = "";
break;
case 4:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungFr = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungFr = "";
}
wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiFr = "";
break;
case 5:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungSa = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungSa = "";
}
wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiSa = "";
break;
}
}
}
else
{
Dictionary<DateTime, TagesAnsicht> sa = new Dictionary<DateTime, TagesAnsicht>();
sa.Add(wochentagDt, item); // item.vertreteroid
a.Add(vertretungstag, sa);
klientb.Add(einsetzungstag, sa);
switch (i)
{
case 0:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungMo = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungMo = item.Vertretung;
}
// wwk.EingesetztBeiMo = item.Kunde;
wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 1:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungDi = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungDi = item.Vertretung;
}
// wwk.EingesetztBeiDi = item.Kunde;
wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 2:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungMi = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungMi = item.Vertretung;
}
// wwk.EingesetztBeiMi = item.Kunde;
wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 3:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungDo = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungDo = item.Vertretung;
}
// wwk.EingesetztBeiDo = item.Kunde;
wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 4:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungFr = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungFr = item.Vertretung;
}
// wwk.EingesetztBeiFr = item.Kunde;
wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
case 5:
if (item.IsMitarbeiterKrank)
{
wwk.VertretungSa = " ";
//wwk.isCustomerKrank = true;
wwk.IsMitarbeiterKrank = true;
}
else
{
wwk.VertretungSa = item.Vertretung;
}
// wwk.EingesetztBeiSa = item.Kunde;
wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
break;
}
}
}
else
{
switch (i)
{
case 0:
wwk.VertretungMo = " ";
wwk.Mo = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiMo = " ";
break;
case 1:
wwk.VertretungDi = " ";
wwk.Di = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiDi = " ";
break;
case 2:
wwk.VertretungMi = " ";
wwk.Mi = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiMi = " ";
break;
case 3:
wwk.VertretungDo = " ";
wwk.Do = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiDo = " ";
break;
case 4:
wwk.VertretungFr = " ";
wwk.Fr = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiFr = " ";
break;
case 5:
wwk.VertretungSa = " ";
wwk.Sa = WochenanzeigeHinzufügen(wochentagDt, item.Wochentagsarbeitszeit);
// wwk.EingesetztBeiSa = " ";
break;
}
}
return wwk;
}
private string WochenanzeigeHinzufügen(DateTime dayOfWeekDateTime, Dictionary<AppointmentDayOfWeek, string> wochentagsarbeitszeit)
{
if (wochentagsarbeitszeit.Count != 0)
{
foreach (var wa in wochentagsarbeitszeit)
{
if ((int)wa.Key + 1 == (int)dayOfWeekDateTime.DayOfWeek)
{
return wa.Value;
}
}
}
return "";
}
#endregion
#region Adde der WochenAnsicht einen Vertreter
public void AddeNeueVertretungforWochenAnsicht(WochenAnsicht a,string tag, DateTime dateTime)
{
if (!a.IsMitarbeiterKrank)
{
VertretungDC vertretung = new VertretungDC();
AbsenceTimeDC absenceTime = new AbsenceTimeDC();
foreach (var vert in a.KlientvertretungsWoche)
{
if (vert.Key.Equals(tag))
{
foreach (var val in vert.Value)
{
vertretung = val.Value.VertretungsDC;
absenceTime = val.Value.AbsenceTimeDC;
}
}
}
if (!a.MaKrank.Equals(""))
{
_view = new SchulbegleitenderDienstBearbeitungsView(1, absenceTime.Start, absenceTime.End,
dateTime, vertretung.CustomerOid, null, a,tag);
_view.RaiseCustomEvent += new EventHandler<CustomEventArgs>(KlientenWochen_RaiseCustomEvent);
_view.ShowDialog();
}
else
{
MessageBox.Show("Fehler");
}
}
else
{
MessageBox.Show("Du kannst einem kranken Klienten keine Mitarbeiter hinzufügen.", "Info");
}
}
private void KlientenWochen_RaiseCustomEvent(object sender, CustomEventArgs e)
{
UpdateMitarbeiterToVertretungKlientenWochenansicht(e.Message, e.StartDate, e.EndDate,e.WochenItem,e.WochenTag);
_view.Close();
}
private void UpdateMitarbeiterToVertretungKlientenWochenansicht(CompactEmployeeDC employee, DateTime? startDate, DateTime? endDate, WochenAnsicht a, string tag)
{
foreach (var woche in a.VertretungsWoche)
{
if (woche.Key.Equals(tag))
{
foreach (var item in woche.Value)
{
VertretungDC vert = new VertretungDC()
{
CustomerOid = item.Value.Klientoid,
AbsenceTimeOid = item.Value.AbsenceTimeDC.AbsenceTimeOid.Value,
VertretungsZeitraumVon = startDate.Value,
VertretungsZeitraumBis = endDate.Value,
VertretenderMitarbeiterOid = employee.EmployeeOid,
EmployeeOid = item.Value.Mitarbeiteroid,
Notice = item.Value.Beschreibung,
};
if (item.Value.VertretungsDC != null)
{
//hier irgendwann ermöglichen dass eine bereits vorhandener vertretungszeitraum / also ein teil davon nochmals abgesplittet werden kann.
vert.VertretungOid = item.Value.VertretungsDC.VertretungOid;
vert.VertretenderMitarbeiterOid = employee.EmployeeOid;
vert.VertretungsZeitraumVon = item.Value.VertretungsDC.VertretungsZeitraumVon;
vert.VertretungsZeitraumBis = item.Value.VertretungsDC.VertretungsZeitraumBis;
ServiceFacade.DoOperationsServiceSync(s => s.UpdateVertretung(vert));
}
else
{
//ggf. ermöglichen das nicht der ganze zeitraum gesetzt wird.
//zur zeit wird hier die Gesamte Krankheitszeit übernommen
ServiceFacade.DoOperationsServiceSync(s => s.CreateVertretung(vert));
}
}
}
}
}
#endregion
#region Delete Vertretenden Mitarbeiter
public void DeletVertretendenMitarbeiter(WochenAnsicht a, string _deletVertretungsWeek)
{
foreach (var wochentag in a.VertretungsWoche)
{
if (wochentag.Key.Equals(_deletVertretungsWeek))
{
_deletVertretungsWeek = "";
foreach (var item in wochentag.Value)
{
if (item.Key != null)
{
if (!item.Value.Vertretung.Equals(""))
{
ServiceFacade.DoOperationsServiceSync(s => s.DeleteVertretung(item.Value.VertretungsDC.VertretungOid.Value));
}
}
}
}
}
}
#endregion
}
}

View File

@@ -30,6 +30,7 @@ using DevExpress.Xpf.Grid;
using System.Windows.Media.Imaging;
using BeWo.ownChat;
using BeWo.SchulbegleitenderDienst;
using BS.Shared.Translation;
using DevExpress.XtraGrid;
using Binding = System.Windows.Data.Binding;
@@ -1053,7 +1054,7 @@ namespace BeWo.View.Detail
{
if (tabitem_schuldienst.Content == null)
{
tabitem_schuldienst.Content = new SchulbegleitenderDienst(TableID.Customer, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient);
tabitem_schuldienst.Content = new SchulbegleitenderDienstView(TableID.Customer, ViewModel.DataContract.CustomerOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Klient);
}
}

View File

@@ -13,6 +13,7 @@ using System.Windows.Media.Imaging;
using BeWo.Core;
using BeWo.Core.Service;
using BeWo.ownChat;
using BeWo.SchulbegleitenderDienst;
using BeWo.ServiceProxy;
using BeWo.Validation;
using BeWo.ViewModel;
@@ -469,7 +470,7 @@ namespace BeWo.View.Detail
{
if (tabitem_schuldienst.Content == null)
{
tabitem_schuldienst.Content = new SchulbegleitenderDienst(TableID.Customer, ViewModel.DataContract.EmployeeOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter);
tabitem_schuldienst.Content = new SchulbegleitenderDienstView(TableID.Customer, ViewModel.DataContract.EmployeeOid.Value, SchulbegleitenderZugehoerigkeitsTyp.Mitarbeiter);
}
}

View File

@@ -7,7 +7,7 @@
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
<localView:BeWoView.Resources>
<ResourceDictionary>
<localSchedView:NewSchulbegleitenderDienstView x:Key="NewSchulbegleitenderDienstMain" Grid.Row="1"/>
<localSchedView:SchulbegleitenderVertretungsDienstMainView x:Key="NewSchulbegleitenderDienstMain" Grid.Row="1"/>
</ResourceDictionary>
</localView:BeWoView.Resources>
<Grid Width="Auto" Height="Auto">

View File

@@ -9,7 +9,7 @@ namespace BeWo.View.Master
{
public partial class SchulbegleitenderDienstMasterView
{
public NewSchulbegleitenderDienstView NewSchulBeleitDienstView;
public SchulbegleitenderVertretungsDienstMainView NewSchulBeleitDienstView;
public SchulbegleitenderDienstMasterView()
{
@@ -26,7 +26,7 @@ namespace BeWo.View.Master
}
//Problem NachSchauen
NewSchulBeleitDienstView = Resources["NewSchulbegleitenderDienstMain"] as NewSchulbegleitenderDienstView;
NewSchulBeleitDienstView = Resources["NewSchulbegleitenderDienstMain"] as SchulbegleitenderVertretungsDienstMainView;
if (NewSchulBeleitDienstView == null)
{

View File

@@ -63,7 +63,7 @@ namespace BeWo.View.Navigation
this.chkShowOnlyTeamSCs.Foreground = b;
}
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ViewAllSupportConcepts) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_View MyTeams))
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ViewAllSupportConcepts) && !BeWoApp.LoggedOnUser.HasRight(UserRightType.ViewAll) && BeWoApp.LoggedOnUser.HasRight(UserRightType.SupportConcept_ViewMyTeams))
{
this.chkShowOnlyMySCs.IsChecked = true;
this.chkShowOnlyMySCs.IsEnabled = false;

View File

@@ -349,7 +349,7 @@ namespace BeWo.ownChat
}
#endregion
#region pdf // auf den server auslagern und als byte[] zurück geben
#region pdf // auf den server auslagern und als byte[] zurück geben und hier verarbeiten
private void ZeigeHandoutPDF_OnClick(object sender, RoutedEventArgs e)
{
StartWaiting();