ModalBodyViewModel.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. namespace ContractService.Views.Shared.Modals
  4. {
  5. public class ModalBodyViewModel
  6. {
  7. public ModalBodyViewModel()
  8. {
  9. FormId = "form";
  10. ModalId = "modal";
  11. LabelLayoutDefaultClass = "col-sm-3 col-md-2";
  12. InputLayoutDefaultClass = "col-sm-9 col-md-10";
  13. DivClass = "form-group row";
  14. }
  15. public ModalBodyViewModel(List<Input> inputs, string formId = "form", string modalId = "modal", string labelLayoutDefaultClass = "col-sm-3 col-md-2", string inputLayoutDefaultClass = "col-sm-9 col-md-10", string divClass = "form-group row", List<SpecialInputModel> specials = null)
  16. {
  17. FormId = formId;
  18. ModalId = modalId;
  19. _inputs = inputs;
  20. LabelLayoutDefaultClass = labelLayoutDefaultClass;
  21. InputLayoutDefaultClass = inputLayoutDefaultClass;
  22. Specials = specials;
  23. DivClass = divClass;
  24. }
  25. public string FormId { get; set; }
  26. public string ModalId { get; set; }
  27. public string DivClass { get; set; }
  28. public string LabelLayoutDefaultClass { get; set; }
  29. public string InputLayoutDefaultClass { get; set; }
  30. public List<ModalTabViewModel> Tabs { get; set; }
  31. public List<SpecialInputModel> Specials { get; set; }
  32. private List<Input> _inputs;
  33. public List<Input> Inputs => _inputs.Select(SetDefault).ToList();
  34. public ModalBodyViewModel SetInputs(List<Input> inputs)
  35. {
  36. _inputs = inputs;
  37. return this;
  38. }
  39. public ModalBodyViewModel AddInput(Input input)
  40. {
  41. if (_inputs == null)
  42. {
  43. _inputs = new List<Input>();
  44. }
  45. _inputs.Add(input);
  46. return this;
  47. }
  48. public ModalBodyViewModel AddInputs(List<Input> inputs)
  49. {
  50. _inputs = _inputs ?? new List<Input>();
  51. _inputs.AddRange(inputs);
  52. return this;
  53. }
  54. public ModalBodyViewModel AddTab(string tabId, string name, string content)
  55. {
  56. if (Tabs == null)
  57. {
  58. Tabs = new List<ModalTabViewModel>();
  59. }
  60. Tabs.Add(new ModalTabViewModel(tabId, name, content, this));
  61. return this;
  62. }
  63. public ModalBodyViewModel AddTab(string tabId, string name, List<Input> inputs)
  64. {
  65. if (Tabs == null)
  66. {
  67. Tabs = new List<ModalTabViewModel>();
  68. }
  69. Tabs.Add(new ModalTabViewModel(tabId, name, inputs, this));
  70. return this;
  71. }
  72. public ModalBodyViewModel AddTabs(List<ModalTabViewModel> tabs)
  73. {
  74. if (Tabs == null)
  75. {
  76. Tabs = new List<ModalTabViewModel>();
  77. }
  78. foreach (var tab in tabs)
  79. {
  80. tab.ModalId = ModalId;
  81. tab.DivClass = string.IsNullOrEmpty(tab.DivClass) ? DivClass : tab.DivClass;
  82. tab.LabelLayoutDefaultClass = string.IsNullOrEmpty(tab.LabelLayoutDefaultClass) ? DivClass : tab.LabelLayoutDefaultClass;
  83. tab.InputLayoutDefaultClass = string.IsNullOrEmpty(tab.InputLayoutDefaultClass) ? DivClass : tab.InputLayoutDefaultClass;
  84. tab.Parent = this;
  85. Tabs.Add(tab);
  86. }
  87. return this;
  88. }
  89. public ModalBodyViewModel SetId(string formId, string modalId)
  90. {
  91. FormId = formId;
  92. ModalId = modalId;
  93. return this;
  94. }
  95. public ModalBodyViewModel SetDivClass(string divClass)
  96. {
  97. DivClass = divClass;
  98. return this;
  99. }
  100. public ModalBodyViewModel SetLayoutClass(string labelLayoutDefaultClass, string inputLayoutDefaultClass)
  101. {
  102. LabelLayoutDefaultClass = labelLayoutDefaultClass;
  103. InputLayoutDefaultClass = inputLayoutDefaultClass;
  104. return this;
  105. }
  106. public ModalBodyViewModel SetSpecials(List<SpecialInputModel> specials)
  107. {
  108. Specials = specials;
  109. return this;
  110. }
  111. public Input SetDefault(Input input)
  112. {
  113. if (input.LayoutClassDefault)
  114. {
  115. if (string.IsNullOrEmpty(input.LabelLayoutClass))
  116. {
  117. input.LabelLayoutClass = LabelLayoutDefaultClass;
  118. }
  119. if (string.IsNullOrEmpty(input.InputLayoutClass))
  120. {
  121. input.InputLayoutClass = InputLayoutDefaultClass;
  122. }
  123. }
  124. if (input.DivClassDefault && string.IsNullOrEmpty(input.DivClass))
  125. {
  126. input.DivClass = DivClass;
  127. }
  128. input.DefaultTarget = $"#{ModalId}";
  129. return input;
  130. }
  131. }
  132. }