FormUtils.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. using Comal.Classes;
  2. using InABox.Clients;
  3. using InABox.Core;
  4. using Org.BouncyCastle.Asn1.X509;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace PRSDesktop;
  11. public static class FormUtils
  12. {
  13. public static void Register()
  14. {
  15. DFUtils.AddFormUtils<AssignmentForm, Assignment, AssignmentLink>(CanEditAssignmentForm, requiredColumnsFunc: RequiredAssignmentColumns);
  16. DFUtils.AddFormUtils<EmployeeForm, Employee, EmployeeLink>(CanEditEmployeeForm);
  17. DFUtils.AddFormUtils<JobForm, Job, JobLink>(CanEditJobForm);
  18. DFUtils.AddFormUtils<JobITPForm, JobITP, JobITPLink>(CanEditJobITPForm);
  19. DFUtils.AddFormUtils<KanbanForm, Kanban, KanbanLink>(CanEditKanbanForm, NewKanban, KanbanOnSave, requiredColumnsFunc: RequiredKanbanColumns);
  20. DFUtils.AddFormUtils<LeaveRequestForm, LeaveRequest, LeaveRequestLink>(CanEditLeaveRequestForm, requiredColumnsFunc: RequiredLeaveRequestColumns);
  21. DFUtils.AddFormUtils<PurchaseOrderItemForm, PurchaseOrderItem, PurchaseOrderItemLink>(CanEditPurchaseOrderItemForm);
  22. DFUtils.AddFormUtils<TimeSheetForm, TimeSheet, TimeSheetLink>(CanEditTimeSheetForm, requiredColumnsFunc: RequiredTimeSheetColumns);
  23. DFUtils.AddFormUtils<JobDocumentSetMileStoneForm, JobDocumentSetMileStone, JobDocumentSetMileStoneLink>(CanEditJobDocumentSetMileStoneForm);
  24. DFUtils.AddFormUtils<StagingSetoutForm, StagingSetout, StagingSetoutLink>(CanEditStagingSetoutForm);
  25. DFUtils.AddFormUtils<SetoutForm, Setout, SetoutLink>(CanEditSetoutForm);
  26. }
  27. private static Columns<Assignment> RequiredAssignmentColumns()
  28. {
  29. return Columns.None<Assignment>().Add(x => x.Employee.ID);
  30. }
  31. public static bool CanEditAssignmentForm(AssignmentForm form, Assignment assignment)
  32. {
  33. return assignment.Employee.ID == App.EmployeeID;
  34. }
  35. public static bool CanEditEmployeeForm(EmployeeForm form, Employee employee)
  36. {
  37. return employee.ID == App.EmployeeID;
  38. }
  39. public static bool CanEditJobForm(JobForm form, Job job)
  40. {
  41. return true;
  42. }
  43. public static bool CanEditJobITPForm(JobITPForm form, JobITP jobITP)
  44. {
  45. return false;
  46. }
  47. public static bool CanEditJobDocumentSetMileStoneForm(JobDocumentSetMileStoneForm form, JobDocumentSetMileStone assignment)
  48. {
  49. return true;
  50. }
  51. public static bool CanEditKanbanForm(KanbanForm form, Kanban kanban)
  52. {
  53. return kanban.Employee.ID == App.EmployeeID;
  54. }
  55. private static Kanban NewKanban(DigitalForm form)
  56. {
  57. var kanban = new Kanban();
  58. kanban.Employee.ID = App.EmployeeID;
  59. kanban.DueDate = DateTime.Today;
  60. kanban.Title = $"Form - {form.Description}";
  61. kanban.Notes = new[] { "Created by desktop forms" };
  62. kanban.Status = KanbanStatus.InProgress;
  63. return kanban;
  64. }
  65. private static void KanbanOnSave(KanbanForm form, Kanban entity)
  66. {
  67. var subscriber = new KanbanSubscriber
  68. {
  69. Assignee = true
  70. };
  71. subscriber.Kanban.ID = entity.ID;
  72. subscriber.Employee.ID = entity.Employee.ID;
  73. new Client<KanbanSubscriber>().Save(subscriber, "");
  74. }
  75. private static Columns<Kanban> RequiredKanbanColumns()
  76. {
  77. return Columns.None<Kanban>().Add(x => x.Employee.ID);
  78. }
  79. public static bool CanEditLeaveRequestForm(LeaveRequestForm form, LeaveRequest leaveRequest)
  80. {
  81. return leaveRequest.Employee.ID == App.EmployeeID;
  82. }
  83. private static Columns<LeaveRequest> RequiredLeaveRequestColumns()
  84. {
  85. return Columns.None<LeaveRequest>().Add(x => x.Employee.ID);
  86. }
  87. public static bool CanEditPurchaseOrderItemForm(PurchaseOrderItemForm form, PurchaseOrderItem purchaseOrderItem)
  88. {
  89. return false;
  90. }
  91. public static bool CanEditTimeSheetForm(TimeSheetForm form, TimeSheet timeSheet)
  92. {
  93. return timeSheet.Employee.ID == App.EmployeeID;
  94. }
  95. private static Columns<TimeSheet> RequiredTimeSheetColumns()
  96. {
  97. return Columns.None<TimeSheet>().Add(x => x.Employee.ID);
  98. }
  99. private static bool CanEditSetoutForm(SetoutForm form, Setout entity)
  100. {
  101. return true;
  102. }
  103. private static bool CanEditStagingSetoutForm(StagingSetoutForm form, StagingSetout entity)
  104. {
  105. return true;
  106. }
  107. }