12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using System;
- using System.Collections.Generic;
- namespace Comal.Classes
- {
- public static class EmployeeRosterExtensions
- {
- private static readonly Dictionary<string, Func<IEmployeeRosterItem, TimeSpan>> times = new Dictionary<string, Func<IEmployeeRosterItem, TimeSpan>>()
- {
- { "Start", x => x.Start },
- { "Finish", x => x.Finish },
- { "Break", x => x.Break },
- { "Start2", x => x.Start2 },
- { "Finish2", x => x.Finish2 },
- { "Break2", x => x.Break2 }
- };
- private static double GetTime(IEmployeeRosterItem item, string column, string name, TimeSpan after)
- {
- if (string.Equals(column, name))
- return after.TotalHours;
- return times[column].Invoke(item).TotalHours;
- }
- private static double RecalculateTimes(IEmployeeRosterItem item, string name, TimeSpan after)
- {
- double result = 0.0F;
- result = GetTime(item, "Finish", name, after) - (GetTime(item, "Start", name, after) + GetTime(item, "Break", name, after));
- result = result + GetTime(item, "Finish2", name, after) - (GetTime(item, "Start2", name, after) + GetTime(item, "Break2", name, after));
- return result;
- }
- public static void DoPropertyChanged(this IEmployeeRosterItem item, string name, object? before, object? after)
- {
- if (times.ContainsKey(name) && after is TimeSpan afterTime)
- item.Duration = RecalculateTimes(item, name, afterTime);
- }
- /*public static EmployeeRosterItem[] FromJSON(String? json)
- {
- return !String.IsNullOrWhiteSpace(json)
- ? Serialization.Deserialize<List<EmployeeRosterItem>>(json)?.OrderBy(x => x.Day).ToArray()
- ?? new EmployeeRosterItem[] { }
- : new EmployeeRosterItem[] { };
- }
- public static String ToJSON(EmployeeRosterItem[] items)
- {
- return Serialization.Serialize(items);
- }*/
- }
- }
|