Files
BeWoPlaner/BeWo/Converter/CellColorConverter.cs

76 lines
2.5 KiB
C#
Raw Normal View History

2016-06-27 01:45:38 +02:00
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
using System.Windows.Markup;
using System.Windows.Media;
2020-02-06 18:56:40 +01:00
using BeWo.View.Detail;
2016-06-27 01:45:38 +02:00
using BeWo.ViewModel;
2020-02-06 18:56:40 +01:00
using BS.Shared.DataContracts;
2016-06-27 01:45:38 +02:00
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);
2020-02-06 18:56:40 +01:00
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))
{
2020-09-15 13:23:34 +02:00
return Brushes.LightGray;
2020-02-06 18:56:40 +01:00
}
}
}
2016-06-27 01:45:38 +02:00
return viewTag.Any(v => v.Date.Day.Equals(date)) ? Brushes.White : b;
}
2020-02-06 18:56:40 +01:00
private bool IsAbsence(DateTime dt, List<AbsenceTimeDC> absenceTimes)
{
2021-06-20 23:11:01 +02:00
if (absenceTimes == null)
{
return false;
}
2020-02-06 18:56:40 +01:00
foreach (var at in absenceTimes)
{
if ((!at.Start.HasValue || at.Start.Value <= dt) && (!at.End.HasValue || at.End.Value >= dt))
{
return true;
}
}
return false;
}
2016-06-27 01:45:38 +02:00
public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); }
public override object ProvideValue(IServiceProvider serviceProvider) { return this; }
}
}