122 lines
3.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|