using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace PRSDesktop.Panels.Timesheets; internal class TimesheetAssignmentGrid : DynamicDataGrid, ISpecificGrid { public Guid EmployeeID { get; set; } public DateTime Date { get; set; } protected override bool CanCreateItems() { return base.CanCreateItems() && EmployeeID != Guid.Empty; } public override Assignment CreateItem() { var item = base.CreateItem(); item.EmployeeLink.ID = EmployeeID; if(Date.Date == DateTime.Today) { item.Date = DateTime.Now; } else { item.Date = Date; } return item; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { if(EmployeeID == Guid.Empty) { criteria.Add(new Filter().None()); } else { criteria.Add(new Filter(x => x.EmployeeLink.ID).IsEqualTo(EmployeeID)); criteria.Add(new Filter(x => x.Date).IsGreaterThanOrEqualTo(Date) .And(x => x.Date).IsLessThan(Date.AddDays(1))); } base.Reload(criteria, columns, ref sort, token, action); } }