EmployeeRoleGrid.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Windows;
  6. using System.Windows.Media.Imaging;
  7. using Comal.Classes;
  8. using InABox.Clients;
  9. using InABox.Core;
  10. using InABox.DynamicGrid;
  11. namespace PRSDesktop
  12. {
  13. internal class EmployeeRoleGrid : DynamicDataGrid<EmployeeRole>
  14. {
  15. public EmployeeRoleGrid()
  16. {
  17. ColumnsTag = "EmployeeRoles";
  18. }
  19. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  20. {
  21. base.DoReconfigure(options);
  22. options.BeginUpdate()
  23. .Clear()
  24. .Add(DynamicGridOption.SelectColumns)
  25. .Add(DynamicGridOption.AddRows)
  26. .Add(DynamicGridOption.DeleteRows)
  27. .Add(DynamicGridOption.MultiSelect)
  28. .EndUpdate();
  29. }
  30. public Guid EmployeeID { get; set; }
  31. protected override void Reload(Filters<EmployeeRole> criteria, Columns<EmployeeRole> columns, ref SortOrder<EmployeeRole>? sort, Action<CoreTable?, Exception?> action)
  32. {
  33. if (EmployeeID == Guid.Empty)
  34. criteria.Add(new Filter<EmployeeRole>().None());
  35. else
  36. criteria.Add(new Filter<EmployeeRole>(x => x.EmployeeLink).LinkValid(EmployeeID));
  37. base.Reload(criteria, columns, ref sort, action);
  38. }
  39. protected override bool CanCreateItems()
  40. {
  41. return EmployeeID != Guid.Empty;
  42. }
  43. protected override bool CanDeleteItems(params CoreRow[] rows)
  44. {
  45. return EmployeeID != Guid.Empty;
  46. }
  47. protected override EmployeeRole CreateItem()
  48. {
  49. var result = base.CreateItem();
  50. result.EmployeeLink.ID = EmployeeID;
  51. return result;
  52. }
  53. protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
  54. {
  55. var ids = Data.ExtractValues<EmployeeRole, Guid>(c => c.RoleLink.ID).Distinct().ToArray();
  56. MultiSelectDialog<Role> dlg = new MultiSelectDialog<Role>(
  57. new Filter<Role>(x => x.ID).NotInList(ids),
  58. new Columns<Role>(x => x.ID).Add(x => x.Code).Add(x => x.Description),
  59. true);
  60. if (dlg.ShowDialog() == true)
  61. {
  62. List<EmployeeRole> updates = new List<EmployeeRole>();
  63. foreach (var newid in dlg.IDs())
  64. {
  65. EmployeeRole newrole = new EmployeeRole();
  66. newrole.EmployeeLink.ID = EmployeeID;
  67. newrole.RoleLink.ID = newid;
  68. updates.Add(newrole);
  69. }
  70. if (updates.Any())
  71. {
  72. new Client<EmployeeRole>().Save(updates, "Updated by User");
  73. Refresh(false, true);
  74. DoChanged();
  75. }
  76. }
  77. }
  78. }
  79. }