QAFormGrid.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Controls;
  5. using System.Windows.Media.Imaging;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using InABox.DynamicGrid;
  9. using InABox.Reports;
  10. using InABox.Reports.Common;
  11. using InABox.WPF;
  12. namespace PRSDesktop.Configuration
  13. {
  14. public class QAFormGrid : DynamicDataGrid<DigitalForm>
  15. {
  16. private bool _showall;
  17. public QAFormGrid()
  18. {
  19. AddButton("Show All", null, ShowAllClick);
  20. // TODO: Add back in
  21. //ActionColumns.Add(new DynamicActionColumn(ReportImage, ReportClick));
  22. AddButton("Groups", null, EditGroupsClick);
  23. }
  24. private bool EditGroupsClick(Button arg1, CoreRow[] arg2)
  25. {
  26. new MasterList(typeof(DigitalFormGroup)).ShowDialog();
  27. return false;
  28. }
  29. private BitmapImage ReportImage(CoreRow arg)
  30. {
  31. return arg != null ? PRSDesktop.Resources.printer.AsBitmapImage() : null;
  32. }
  33. /*private bool ReportClick(CoreRow arg)
  34. {
  35. if (arg == null)
  36. return false;
  37. var typename = arg.Get<DigitalForm, string>(c => c.AppliesTo);
  38. var formid = arg.Get<DigitalForm, Guid>(c => c.ID);
  39. // Get Applies To
  40. /*Type type = CoreUtils.GetEntity("Comal.Classes."+typename);
  41. CoreTable entity = new CoreTable();
  42. entity.LoadColumns(type);
  43. // Get Form Details
  44. CoreTable form = new CoreTable();
  45. form.Columns.Add(new CoreColumn() { ColumnName = "ID", DataType = typeof(Guid) });
  46. form.Columns.Add(new CoreColumn() { ColumnName = "Parent.ID", DataType = typeof(Guid) });
  47. form.Columns.Add(new CoreColumn() { ColumnName = CoreUtils.GetFullPropertyName<IDigitalFormInstance, String>(x => x.Form.Description, "."), DataType = typeof(String) });
  48. form.Columns.Add(new CoreColumn() { ColumnName = CoreUtils.GetFullPropertyName<IDigitalFormInstance, String>(x => x.FormCompletedBy.UserID, "."), DataType = typeof(String) });
  49. form.Columns.Add(new CoreColumn() { ColumnName = CoreUtils.GetFullPropertyName<IDigitalFormInstance, DateTime>(x => x.FormCompleted, "."), DataType = typeof(String) });
  50. form.Columns.Add(new CoreColumn() { ColumnName = CoreUtils.GetFullPropertyName<IDigitalFormInstance, String>(x => x.Location.Address, "."), DataType = typeof(String) });
  51. form.Columns.Add(new CoreColumn() { ColumnName = CoreUtils.GetFullPropertyName<IDigitalFormInstance, double>(x => x.Location.Latitude, "."), DataType = typeof(String) });
  52. form.Columns.Add(new CoreColumn() { ColumnName = CoreUtils.GetFullPropertyName<IDigitalFormInstance, double>(x => x.Location.Longitude, "."), DataType = typeof(String) });
  53. var variables = new Client<DigitalFormVariable>().Query(new Filter<DigitalFormVariable>(x => x.Form.ID).IsEqualTo(formid));
  54. foreach (var row in variables.Rows)
  55. {
  56. form.Columns.Add(
  57. new CoreColumn()
  58. {
  59. ColumnName = row.Get<DigitalFormVariable, String>(c => c.Code),
  60. DataType = DigitalFormVariable.DataType(row.Get<DigitalFormVariable, DigitalFormVariableType>(c => c.VariableType))
  61. }
  62. );
  63. }*
  64. // Create DataModel
  65. //DigitalFormReportDataModel model = new DigitalFormReportDataModel(form,entity,typename);
  66. AutoDataModel<DigitalForm> model = new AutoDataModel<DigitalForm>(new Filter<DigitalForm>(x => x.ID).IsEqualTo(formid));
  67. // Load Template
  68. var template = new Client<ReportTemplate>()
  69. .Load(new Filter<ReportTemplate>(x => x.Section).IsEqualTo("DigitalForms").And(x => x.Name).IsEqualTo(formid.ToString()))
  70. .FirstOrDefault();
  71. if (template == null)
  72. {
  73. template = new ReportTemplate
  74. {
  75. Section = "DigitalForms",
  76. Name = formid.ToString(),
  77. Visible = false
  78. };
  79. new Client<ReportTemplate>().Save(template, "");
  80. }
  81. ReportUtils.DesignReport(template, model);
  82. // Preview Report
  83. return false;
  84. }*/
  85. private bool ShowAllClick(Button arg1, CoreRow[] arg2)
  86. {
  87. _showall = !_showall;
  88. UpdateButton(arg1, null, _showall ? "Hide Inactive" : "Show All");
  89. return true;
  90. }
  91. protected override void Reload(Filters<DigitalForm> criteria, Columns<DigitalForm> columns, ref SortOrder<DigitalForm> sort,
  92. Action<CoreTable, Exception> action)
  93. {
  94. if (!_showall)
  95. criteria.Add(new Filter<DigitalForm>(x => x.Active).IsEqualTo(true));
  96. base.Reload(criteria, columns, ref sort, action);
  97. }
  98. public override bool EditItems(DigitalForm[] items, Func<Type, CoreTable> PageDataHandler = null, bool PreloadPages = false)
  99. {
  100. // Need to do this to make sure that the variables are available to the layouts (and vice versa?)
  101. return base.EditItems(items, PageDataHandler, true);
  102. }
  103. protected override void DoValidate(DigitalForm[] items, List<string> errors)
  104. {
  105. base.DoValidate(items, errors);
  106. if (items.Any(x => string.IsNullOrWhiteSpace(x.AppliesTo)))
  107. errors.Add("[Applies To] must not be blank!");
  108. }
  109. }
  110. }