Files
BeWoPlaner/BeWo/View/AssessmentSheetRow.cs

535 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Media;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.DataContracts;
namespace BeWo.View
{
public class AssessmentSheetRow : INotifyPropertyChanged
{
private readonly AssessmentSheetCategoryDC _Category;
private readonly long _CustomerOid;
private readonly Dictionary<int, AssessmentSheetValueVM> _Day2Values = new Dictionary<int, AssessmentSheetValueVM>();
private readonly Dictionary<int, AssessmentSheetEntryVM> _Day2Entries = new Dictionary<int, AssessmentSheetEntryVM>();
private readonly AssessmentSheetEntryListVM _EntryList;
private DateTime _StartDate;
public long? CategoryOid
{
get { return _Category.AssessmentSheetCategoryOid; }
}
public AssessmentSheetRow(AssessmentSheetEntryListVM entryList, AssessmentSheetCategoryDC category, long customerOid, DateTime startDate, bool showWeek)
{
_CustomerOid = customerOid;
_StartDate = startDate;
_EntryList = entryList;
_Category = category;
PossibleValues = category.PossibleValues.Select(dc => new AssessmentSheetValueVM(dc)).ToList();
PossibleValues.Sort(AssessmentSheetValueVM.Compare);
PossibleValues.Insert(0, new AssessmentSheetValueVM(new AssessmentSheetValueDC()) { Brush = Brushes.White, Description = "keine Angabe" });
foreach (var entry in _EntryList.VMList.Where(vm => vm.CategoryOid.Equals(category.AssessmentSheetCategoryOid) && vm.Day.HasValue && vm.ValueOid.HasValue))
{
if (showWeek)
{
TimeSpan ts = entry.Day.Value.Subtract(_StartDate);
_Day2Values[(int) ts.TotalDays + 1] = PossibleValues.SingleOrDefault(vm => vm.DataContract.AssessmentSheetValueOid.Equals(entry.ValueOid));
_Day2Entries[(int)ts.TotalDays + 1] = entry;
}
else
{
_Day2Values[entry.Day.Value.Day] = PossibleValues.SingleOrDefault(vm => vm.DataContract.AssessmentSheetValueOid.Equals(entry.ValueOid));
_Day2Entries[entry.Day.Value.Day] = entry;
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public string CategoryString
{
get
{
return this._Category.Description;
}
}
public AssessmentSheetValueVM Day1
{
get
{
return this.Get(1);
}
set
{
this.Set(1, value);
}
}
public AssessmentSheetValueVM Day10
{
get
{
return this.Get(10);
}
set
{
this.Set(10, value);
}
}
public AssessmentSheetValueVM Day11
{
get
{
return this.Get(11);
}
set
{
this.Set(11, value);
}
}
public AssessmentSheetValueVM Day12
{
get
{
return this.Get(12);
}
set
{
this.Set(12, value);
}
}
public AssessmentSheetValueVM Day13
{
get
{
return this.Get(13);
}
set
{
this.Set(13, value);
}
}
public AssessmentSheetValueVM Day14
{
get
{
return this.Get(14);
}
set
{
this.Set(14, value);
}
}
public AssessmentSheetValueVM Day15
{
get
{
return this.Get(15);
}
set
{
this.Set(15, value);
}
}
public AssessmentSheetValueVM Day16
{
get
{
return this.Get(16);
}
set
{
this.Set(16, value);
}
}
public AssessmentSheetValueVM Day17
{
get
{
return this.Get(17);
}
set
{
this.Set(17, value);
}
}
public AssessmentSheetValueVM Day18
{
get
{
return this.Get(18);
}
set
{
this.Set(18, value);
}
}
public AssessmentSheetValueVM Day19
{
get
{
return this.Get(19);
}
set
{
this.Set(19, value);
}
}
public AssessmentSheetValueVM Day2
{
get
{
return this.Get(2);
}
set
{
this.Set(2, value);
}
}
public AssessmentSheetValueVM Day20
{
get
{
return this.Get(20);
}
set
{
this.Set(20, value);
}
}
public AssessmentSheetValueVM Day21
{
get
{
return this.Get(21);
}
set
{
this.Set(21, value);
}
}
public AssessmentSheetValueVM Day22
{
get
{
return this.Get(22);
}
set
{
this.Set(22, value);
}
}
public AssessmentSheetValueVM Day23
{
get
{
return this.Get(23);
}
set
{
this.Set(23, value);
}
}
public AssessmentSheetValueVM Day24
{
get
{
return this.Get(24);
}
set
{
this.Set(24, value);
}
}
public AssessmentSheetValueVM Day25
{
get
{
return this.Get(25);
}
set
{
this.Set(25, value);
}
}
public AssessmentSheetValueVM Day26
{
get
{
return this.Get(26);
}
set
{
this.Set(26, value);
}
}
public AssessmentSheetValueVM Day27
{
get
{
return this.Get(27);
}
set
{
this.Set(27, value);
}
}
public AssessmentSheetValueVM Day28
{
get
{
return this.Get(28);
}
set
{
this.Set(28, value);
}
}
public AssessmentSheetValueVM Day29
{
get
{
return this.Get(29);
}
set
{
this.Set(29, value);
}
}
public AssessmentSheetValueVM Day3
{
get
{
return this.Get(3);
}
set
{
this.Set(3, value);
}
}
public AssessmentSheetValueVM Day30
{
get
{
return this.Get(30);
}
set
{
this.Set(30, value);
}
}
public AssessmentSheetValueVM Day31
{
get
{
return this.Get(31);
}
set
{
this.Set(31, value);
}
}
public AssessmentSheetValueVM Day4
{
get
{
return this.Get(4);
}
set
{
this.Set(4, value);
}
}
public AssessmentSheetValueVM Day5
{
get
{
return this.Get(5);
}
set
{
this.Set(5, value);
}
}
public AssessmentSheetValueVM Day6
{
get
{
return this.Get(6);
}
set
{
this.Set(6, value);
}
}
public AssessmentSheetValueVM Day7
{
get
{
return this.Get(7);
}
set
{
this.Set(7, value);
}
}
public AssessmentSheetValueVM Day8
{
get
{
return this.Get(8);
}
set
{
this.Set(8, value);
}
}
public AssessmentSheetValueVM Day9
{
get
{
return this.Get(9);
}
set
{
this.Set(9, value);
}
}
public List<AssessmentSheetValueVM> PossibleValues { get; set; }
private AssessmentSheetValueVM Get(int day)
{
var v = this._Day2Values.ContainsKey(day) ? this._Day2Values[day] : null;
if (v != null && this._Day2Entries.ContainsKey(day))
{
var e = _Day2Entries[day];
v.Tooltip = string.Format("{0}, {1:dd.MM.yyyy HH:mm} von {2}", v.Description, e.DataContract.InsTs, e.DataContract.InsUser);
}
return v;
}
private void Set(int day, AssessmentSheetValueVM value)
{
DateTime date = _StartDate.AddDays(day - 1);
if (value.IsNew)
{
value = null;
this._Day2Values.Remove(day);
this._Day2Entries.Remove(day);
}
else
{
this._Day2Values[day] = value;
this._Day2Entries.Remove(day);
}
var list = this._EntryList.VMList.Where(vm => vm.CategoryOid.Equals(this._Category.AssessmentSheetCategoryOid) && vm.Day.HasValue && vm.Day.Value.Equals(date)).ToList();
AssessmentSheetEntryVM entryVM = null;
if (list.Count > 0)
entryVM = list[0];
if (list.Count > 1)
{
for (int i = 1; i < list.Count; i++)
{
this._EntryList.VMList.Remove(list[i]);
}
}
if (entryVM != null)
{
if (value != null)
{
entryVM.ValueOid = value.DataContract.AssessmentSheetValueOid;
}
else
{
this._EntryList.VMList.Remove(entryVM);
}
}
else if (value != null)
{
this._EntryList.VMList.Add(new AssessmentSheetEntryVM(new AssessmentSheetEntryDC()) { CategoryOid = this._Category.AssessmentSheetCategoryOid, CustomerOid = this._CustomerOid, Day = date, ValueOid = value.DataContract.AssessmentSheetValueOid });
}
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Day" + day));
}
}
}
}