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;
}
}
}