76 lines
2.5 KiB
C#
76 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Windows.Data;
|
|
using System.Windows.Markup;
|
|
using System.Windows.Media;
|
|
using BeWo.View.Detail;
|
|
using BeWo.ViewModel;
|
|
using BS.Shared.DataContracts;
|
|
using DevExpress.Xpf.Grid;
|
|
|
|
namespace BeWo.Converter
|
|
{
|
|
public class CellColorConverter : MarkupExtension, IMultiValueConverter
|
|
{
|
|
public object Convert(object[] value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
Brush b = new SolidColorBrush(Color.FromArgb(255, 233, 233, 233));
|
|
|
|
if (value[1].ToString().Equals(string.Empty))
|
|
return b;
|
|
|
|
var cellData = value[0] as EditGridCellData;
|
|
var viewTag = cellData.View.Tag as List<AdditionalServiceBookingVM>;
|
|
var date = int.Parse(value[1].ToString().Split('.')[0], NumberStyles.Integer);
|
|
|
|
|
|
if (viewTag != null && viewTag.Count > 0 && value.Length > 2 && value[2] is Teilnehmer)
|
|
{
|
|
var booking = viewTag[0];
|
|
|
|
if (date <= DateTime.DaysInMonth(booking.Date.Year, booking.Date.Month))
|
|
{
|
|
|
|
var dt = new DateTime(booking.Date.Year, booking.Date.Month, date);
|
|
|
|
if (dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday)
|
|
{
|
|
return Brushes.CornflowerBlue;
|
|
}
|
|
|
|
var t = (Teilnehmer) value[2];
|
|
|
|
if (IsAbsence(dt, t.Customer.AbsenceTimes))
|
|
{
|
|
return Brushes.LightGray;
|
|
}
|
|
}
|
|
}
|
|
return viewTag.Any(v => v.Date.Day.Equals(date)) ? Brushes.White : b;
|
|
}
|
|
|
|
private bool IsAbsence(DateTime dt, List<AbsenceTimeDC> absenceTimes)
|
|
{
|
|
if (absenceTimes == null)
|
|
{
|
|
return false;
|
|
}
|
|
foreach (var at in absenceTimes)
|
|
{
|
|
if ((!at.Start.HasValue || at.Start.Value <= dt) && (!at.End.HasValue || at.End.Value >= dt))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); }
|
|
|
|
public override object ProvideValue(IServiceProvider serviceProvider) { return this; }
|
|
}
|
|
}
|