using System.Collections.Generic; using System.Linq; namespace ContractService.Views.Shared.Modals { public class ModalBodyViewModel { public ModalBodyViewModel() { FormId = "form"; ModalId = "modal"; LabelLayoutDefaultClass = "col-sm-3 col-md-2"; InputLayoutDefaultClass = "col-sm-9 col-md-10"; DivClass = "form-group row"; } public ModalBodyViewModel(List 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 specials = null) { FormId = formId; ModalId = modalId; _inputs = inputs; LabelLayoutDefaultClass = labelLayoutDefaultClass; InputLayoutDefaultClass = inputLayoutDefaultClass; Specials = specials; DivClass = divClass; } public string FormId { get; set; } public string ModalId { get; set; } public string DivClass { get; set; } public string LabelLayoutDefaultClass { get; set; } public string InputLayoutDefaultClass { get; set; } public List Tabs { get; set; } public List Specials { get; set; } private List _inputs; public List Inputs => _inputs.Select(SetDefault).ToList(); public ModalBodyViewModel SetInputs(List inputs) { _inputs = inputs; return this; } public ModalBodyViewModel AddInput(Input input) { if (_inputs == null) { _inputs = new List(); } _inputs.Add(input); return this; } public ModalBodyViewModel AddInputs(List inputs) { _inputs = _inputs ?? new List(); _inputs.AddRange(inputs); return this; } public ModalBodyViewModel AddTab(string tabId, string name, string content) { if (Tabs == null) { Tabs = new List(); } Tabs.Add(new ModalTabViewModel(tabId, name, content, this)); return this; } public ModalBodyViewModel AddTab(string tabId, string name, List inputs) { if (Tabs == null) { Tabs = new List(); } Tabs.Add(new ModalTabViewModel(tabId, name, inputs, this)); return this; } public ModalBodyViewModel AddTabs(List tabs) { if (Tabs == null) { Tabs = new List(); } foreach (var tab in tabs) { tab.ModalId = ModalId; tab.DivClass = string.IsNullOrEmpty(tab.DivClass) ? DivClass : tab.DivClass; tab.LabelLayoutDefaultClass = string.IsNullOrEmpty(tab.LabelLayoutDefaultClass) ? DivClass : tab.LabelLayoutDefaultClass; tab.InputLayoutDefaultClass = string.IsNullOrEmpty(tab.InputLayoutDefaultClass) ? DivClass : tab.InputLayoutDefaultClass; tab.Parent = this; Tabs.Add(tab); } return this; } public ModalBodyViewModel SetId(string formId, string modalId) { FormId = formId; ModalId = modalId; return this; } public ModalBodyViewModel SetDivClass(string divClass) { DivClass = divClass; return this; } public ModalBodyViewModel SetLayoutClass(string labelLayoutDefaultClass, string inputLayoutDefaultClass) { LabelLayoutDefaultClass = labelLayoutDefaultClass; InputLayoutDefaultClass = inputLayoutDefaultClass; return this; } public ModalBodyViewModel SetSpecials(List specials) { Specials = specials; return this; } public Input SetDefault(Input input) { if (input.LayoutClassDefault) { if (string.IsNullOrEmpty(input.LabelLayoutClass)) { input.LabelLayoutClass = LabelLayoutDefaultClass; } if (string.IsNullOrEmpty(input.InputLayoutClass)) { input.InputLayoutClass = InputLayoutDefaultClass; } } if (input.DivClassDefault && string.IsNullOrEmpty(input.DivClass)) { input.DivClass = DivClass; } input.DefaultTarget = $"#{ModalId}"; return input; } } }