Files
BeWoPlaner/BeWo/Scheduler/Converter/CheckBoxConverter.cs
Lyndon 68925d074f Kalender: Rechteprüfung überarbeitet. Aufgaben in den Kalender integriert.
Verwaltung: Notizen bei den Maßnahmen hinzugefügt
2019-02-28 12:38:29 +01:00

122 lines
3.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWo.Scheduler.Converter
{
public class CheckBoxConverter : IMultiValueConverter
{
public List<CompactEmployeeDC> SelektierteMitarbeiter = new List<CompactEmployeeDC>();
public List<CompactCustomerDC> SelektierteKlienten = new List<CompactCustomerDC>();
public List<ResourceDC> SelektierteRessourcen = new List<ResourceDC>();
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length < 2)
{
return false;
}
var mitarbeiterKlientRessource = (long) values[0];
switch (parameter.ToString())
{
case "Mitarbeiter":
var liste = (List<CompactEmployeeDC>)values[1];
SelektierteMitarbeiter = new List<CompactEmployeeDC>(liste);
if (liste != null && liste.Count > 0)
{
return liste.Any(em => em.EmployeeOid.Equals(mitarbeiterKlientRessource));
}
break;
case "Klienten":
var liste2 = (List<CompactCustomerDC>)values[1];
SelektierteKlienten = new List<CompactCustomerDC>(liste2);
if (liste2 != null && liste2.Count > 0)
{
return liste2.Any(c => c != null && c.CustomerOid.Equals(mitarbeiterKlientRessource));
}
break;
case "Ressourcen":
var liste3 = (List<ResourceDC>)values[1];
SelektierteRessourcen = new List<ResourceDC>(liste3);
if (liste3 != null && liste3.Count > 0)
{
return liste3.Any(r => r.ResourceOid.Equals(mitarbeiterKlientRessource));
}
break;
}
return false;
}
public CompactEmployeeDC AktuellerMitarbeiter { get; set; }
public CompactCustomerDC AktuellerKlient { get; set; }
public ResourceDC AktuelleRessource { get; set; }
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
var abc = new object[2];
switch (parameter.ToString())
{
case "Mitarbeiter":
abc[0] = AktuellerMitarbeiter.EmployeeOid;
if (!(bool)value)
{
SelektierteMitarbeiter.Remove(AktuellerMitarbeiter);
}
else if (!SelektierteMitarbeiter.Contains(AktuellerMitarbeiter))
{
SelektierteMitarbeiter.Add(AktuellerMitarbeiter);
}
abc[1] = SelektierteMitarbeiter;
break;
case "Klienten":
abc[0] = AktuellerKlient.CustomerOid;
if (!(bool)value)
{
SelektierteKlienten.Remove(AktuellerKlient);
}
else if (!SelektierteKlienten.Contains(AktuellerKlient))
{
SelektierteKlienten.Add(AktuellerKlient);
}
abc[1] = SelektierteKlienten;
break;
case "Ressourcen":
abc[0] = AktuelleRessource.ResourceOid;
if (!(bool)value)
{
SelektierteRessourcen.Remove(AktuelleRessource);
}
else if (!SelektierteRessourcen.Contains(AktuelleRessource))
{
SelektierteRessourcen.Add(AktuelleRessource);
}
abc[1] = SelektierteRessourcen;
break;
}
return abc;
}
}
}