123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using System;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- namespace PRSDesktop;
- public class EmployeeRosterItemGrid : BaseEmployeeRosterItemGrid<Employee, EmployeeRosterItem>
- {
-
- private Button _select = null!;
- private Button _start = null!;
-
- public EmployeeRosterItemGrid()
- {
- _select = AddButton("Select", PRSDesktop.Resources.clock.AsBitmapImage(), SelectRoster);
- _start = AddButton("", PRSDesktop.Resources.assignments.AsBitmapImage(), SelectStart);
- UpdateButtons();
- }
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
- {
- base.DoReconfigure(options);
- options.Remove(DynamicGridOption.EditRows);
- options.Remove(DynamicGridOption.ExportData);
- options.Remove(DynamicGridOption.ImportData);
- }
- public override void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
- {
- base.Load(item, PageDataHandler);
- UpdateButtons();
- }
- public override void SaveItem(EmployeeRosterItem item)
- {
- base.SaveItem(item);
- Client.Save(item, "Updated by User");
- UpdateRoster(null);
- }
- private void UpdateRoster(EmployeeRoster? roster)
- {
- if (Item.RosterTemplate.ID != (roster?.ID ?? Guid.Empty))
- {
- Item.RosterTemplate.ID = roster?.ID ?? Guid.Empty;
- Item.RosterTemplate.Code = roster?.Code ?? "";
- Item.RosterTemplate.Description = roster?.Description ?? "";
- Client.Save(Item, "Roster Template Updated");
- UpdateButtons();
- }
- }
- protected override void DeleteItems(params CoreRow[] rows)
- {
- base.DeleteItems(rows);
- var deletes = rows.Select(x => x.ToObject<EmployeeRosterItem>()).OfType<EmployeeRosterItem>().ToArray();
- Client.Delete(deletes,"Deleted by User");
- UpdateRoster(null);
- }
-
- private bool SelectRoster(Button arg1, CoreRow[] arg2)
- {
- MultiSelectDialog<EmployeeRoster> dlg = new MultiSelectDialog<EmployeeRoster>(
- null,
- new Columns<EmployeeRoster>(x => x.ID).Add(x => x.Code).Add(x => x.Description),
- false);
- if (dlg.ShowDialog() && dlg.Items().FirstOrDefault() is EmployeeRoster roster)
- {
- var query = new MultiQuery();
- Client.Delete(Items,"");
-
- if (roster.ID != Guid.Empty)
- {
- var newroster = new Client<EmployeeRosterTemplateItem>().Query(
- new Filter<EmployeeRosterTemplateItem>(x => x.Roster.ID).IsEqualTo(roster.ID)
- ).Rows
- .Select(x => x.ToObject<EmployeeRosterTemplateItem>().ToEmployeeRosterItem(Item))
- .ToArray();
-
- Client.Save(newroster,"");
- }
-
- UpdateRoster(roster);
- DoChanged();
- return true;
- }
- return false;
- }
-
- private bool SelectStart(Button arg1, CoreRow[] arg2)
- {
- var date = Item.RosterStart.IsEmpty() ? DateTime.Today : Item.RosterStart;
- if (DateEdit.Execute("Select Start Date", ref date))
- {
- Item.RosterStart = date;
- Client.Save(Item, "Updated Roster Start Date");
- DoChanged();
- return true;
- }
- return false;
- }
- private void UpdateButtons()
- {
- _select.Visibility = (Item == null) || (Item.ID == Guid.Empty) ? Visibility.Collapsed : Visibility.Visible;
- _start.Visibility = (Item == null) || (Item.ID == Guid.Empty) ? Visibility.Collapsed : Visibility.Visible;
-
- var roster = (Item == null) || (Item.ID == Guid.Empty) || Item.RosterTemplate.ID == Guid.Empty
- ? "(Custom)"
- : Item.RosterTemplate.Code;
- UpdateButton(_select,PRSDesktop.Resources.clock.AsBitmapImage(),roster);
-
- var start = (Item == null) || (Item.ID == Guid.Empty) || Item.RosterStart.IsEmpty()
- ? "(Select Start)"
- : $"Start: {Item.RosterStart:dd MMM yy}";
- UpdateButton(_start,PRSDesktop.Resources.assignments.AsBitmapImage(),start);
- }
- }
|