QAQuestion.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace InABox.Core
  5. {
  6. [Caption("QA Checks")]
  7. [UserTracking(typeof(DigitalForm))]
  8. [Obsolete]
  9. public class QAQuestion : Entity, IRemotable, IPersistent, ISequenceable, IOneToMany<DigitalForm>, ILicense<DigitalFormsLicense>
  10. {
  11. public QAQuestion()
  12. {
  13. Answer = QAAnswer.Comment;
  14. }
  15. [NullEditor]
  16. [Obsolete("Replaced with Form")]
  17. [ObsoleteProperty(nameof(Form))]
  18. public QAFormLink QAForm => InitializeField(ref _qAForm, nameof(QAForm));
  19. private QAFormLink? _qAForm;
  20. public DigitalFormLink Form => InitializeField(ref _form, nameof(Form));
  21. private DigitalFormLink? _form;
  22. [NullEditor]
  23. public string Section { get; set; }
  24. [TextBoxEditor]
  25. public string Code { get; set; }
  26. [TextBoxEditor]
  27. public string Question { get; set; }
  28. [MemoEditor]
  29. public string Description { get; set; }
  30. [EnumLookupEditor(typeof(QAAnswer))]
  31. public QAAnswer Answer { get; set; }
  32. [MemoEditor]
  33. public string Parameters { get; set; }
  34. [NullEditor]
  35. public bool Converted { get; set; }
  36. //[NullEditor]
  37. //public String Value { get; set; }
  38. //[MemoEditor]
  39. //public String Notes { get; set; }
  40. [NullEditor]
  41. public long Sequence { get; set; }
  42. protected override void DoPropertyChanged(string name, object? before, object? after)
  43. {
  44. base.DoPropertyChanged(name, before, after);
  45. if (name.Equals("Answer"))
  46. {
  47. var answer = (QAAnswer)after;
  48. if (answer == QAAnswer.Choice)
  49. Parameters =
  50. "Options: Value 1, Value 2, Value 3\n" +
  51. "Colors: Green, Yellow, Red\n" +
  52. "Default: Value 1\n";
  53. else if (answer == QAAnswer.Number)
  54. Parameters =
  55. "Minimum: 0.0\n" +
  56. "Maximum: 100.0\n" +
  57. "Default: 0.0\n";
  58. else if (answer == QAAnswer.Text)
  59. Parameters =
  60. "Default: \n";
  61. else if (answer == QAAnswer.Combo)
  62. Parameters =
  63. "Options: Value 1, Value 2, Value 3\n" +
  64. "Default: Value 1\n";
  65. else
  66. Parameters = "";
  67. }
  68. }
  69. public Dictionary<string, string> ParseParameters()
  70. {
  71. var result = new Dictionary<string, string>();
  72. var lines = Parameters == null ? new string[] { } : Parameters.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
  73. foreach (var line in lines)
  74. {
  75. var comps = line.Split(':');
  76. if (comps.Length > 1)
  77. result[comps[0]] = string.Join(":", comps.Skip(1));
  78. else if (comps.Length == 1)
  79. result[comps[0]] = "";
  80. }
  81. if (Answer == QAAnswer.Choice)
  82. CheckParams(result, "Options", "Colors", "Default");
  83. else if (Answer == QAAnswer.Number)
  84. CheckParams(result, "Minimum", "Maximum", "Default");
  85. else if (Answer == QAAnswer.Text)
  86. CheckParams(result, "Default");
  87. if (Answer == QAAnswer.Combo)
  88. CheckParams(result, "Options", "Default");
  89. return result;
  90. }
  91. private void CheckParams(Dictionary<string, string> result, params string[] keys)
  92. {
  93. foreach (var key in keys)
  94. if (!result.ContainsKey(key))
  95. result[key] = "";
  96. }
  97. }
  98. }