using System.Collections.Generic; using System.Linq; namespace ContractService.Views.Shared.Modals { public class ModalTabViewModel { public ModalTabViewModel() { } public ModalTabViewModel(string tabId, string tabName) : this() { TabId = tabId; TabName = tabName; } public ModalTabViewModel(string tabId, string tabName, string tabContent) : this(tabId, tabName) { TabContent = tabContent; } public ModalTabViewModel(string tabId, string tabName, List inputs) : this(tabId, tabName) { _inputs = inputs; } public ModalTabViewModel(string tabId, string tabName, string tabContent, ModalBodyViewModel parent) : this(tabId, tabName, tabContent) { Parent = parent; ModalId = parent.ModalId; } public ModalTabViewModel(string tabId, string tabName, List inputs, ModalBodyViewModel parent) : this(tabId, tabName, inputs) { Parent = parent; ModalId = parent.ModalId; } public ModalTabViewModel(string tabId, string tabName, string labelLayoutDefaultClass, string inputLayoutDefaultClass, string divClass) : this(tabId, tabName) { DivClass = divClass; LabelLayoutDefaultClass = labelLayoutDefaultClass; InputLayoutDefaultClass = inputLayoutDefaultClass; } public ModalBodyViewModel Parent { get; set; } public string TabId { get; set; } public string TabName { get; set; } public string TabContent { get; set; } private List _inputs; public List Inputs => Parent != null ? _inputs?.Select(Parent.SetDefault).ToList() : _inputs?.Select(SetDefault).ToList(); public string ModalId { get; set; } public string DivClass { get; set; } public string LabelLayoutDefaultClass { get; set; } public string InputLayoutDefaultClass { get; set; } public ModalTabViewModel SetInputs(List inputs) { _inputs = inputs; return this; } public ModalTabViewModel AddInput(Input input) { if (_inputs == null) { _inputs = new List(); } _inputs.Add(input); return this; } public ModalTabViewModel AddInputs(List inputs) { _inputs = _inputs ?? new List(); _inputs.AddRange(inputs); return this; } public ModalTabViewModel SetModalId(string modalId) { ModalId = modalId; return this; } public ModalTabViewModel SetDivClass(string divClass) { DivClass = divClass; return this; } public ModalTabViewModel SetLayoutClass(string labelLayoutDefaultClass, string inputLayoutDefaultClass) { LabelLayoutDefaultClass = labelLayoutDefaultClass; InputLayoutDefaultClass = inputLayoutDefaultClass; 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; } } }