/// <summary> /// Initializes a new instance of the <see cref="WizardFormData"/> class. /// </summary> /// <param name="formKey">The form key.</param> /// <param name="fieldData">The field data.</param> /// <param name="editButton">The edit button.</param> /// TODO Edit XML Comment Template for #ctor public WizardFormData(string formKey, IEnumerable <WizardContentField> fieldData, WizardButtonData editButton = null) { var data = fieldData?.ToList(); var form = data?.FirstOrDefault(o => o.FieldType.Equals("Form", StringComparison.InvariantCultureIgnoreCase) && o.FieldKey.Equals(formKey, StringComparison.InvariantCultureIgnoreCase)); if (form == null) { return; } Initialize(form); EditButton = editButton; }
/// <summary> /// Adds the embedded form. /// </summary> /// <param name="key">The key.</param> /// <param name="content">The content.</param> /// <param name="extraFields">The extra fields.</param> /// <param name="isDisabled">if set to <c>true</c> [is disabled].</param> /// <param name="hasEditButton">if set to <c>true</c> [has edit button].</param> /// TODO Edit XML Comment Template for AddEmbeddedForm public virtual void AddEmbeddedForm(string key, IWizardContent content, IEnumerable <WizardContentField> extraFields = null, bool isDisabled = false, bool hasEditButton = false) { List <WizardContentField> embed = (List <WizardContentField>)DataRepository.GetFieldData(key); var wizard = embed?.FirstOrDefault(o => o.FieldType.Equals("Wizard", StringComparison.InvariantCultureIgnoreCase)); if (extraFields != null) { foreach (var field in extraFields) { embed?.Add(field); } } if (isDisabled) { foreach (var field in embed) { field.SetDisabledFlag(); } } var fields = embed?.Where(o => o.ParentKey.Equals(wizard?.FieldKey, StringComparison.CurrentCultureIgnoreCase)).OrderBy(o => o.Order).ToList(); var formList = fields?.Where(o => o.FieldType.Equals("Form", StringComparison.InvariantCultureIgnoreCase)).OrderBy(o => o.Order).ToList(); foreach (var form in formList) { WizardButtonData editButton = null; if (hasEditButton) { JToken data = form.GetFieldData(); editButton = new WizardButtonData(); editButton.Class = "btn btn-sm btn-outline-primary"; editButton.Label = "Edit"; editButton.Icon = "fa fa-edit"; editButton.Action = new { type = "nav", section = DataUtility.ParseInt(data["section"]), step = DataUtility.ParseInt(data["step"]) }; } ((List <WizardFormData>)(content.Forms)).Add(CreateWizardFormData(form.FieldKey, embed, editButton)); } }
/// <summary> /// Creates the wizard form data. /// </summary> /// <param name="formKey">The form key.</param> /// <param name="fieldData">The field data.</param> /// <param name="editButton">The edit button.</param> /// <returns>WizardFormData.</returns> /// TODO Edit XML Comment Template for CreateWizardFormData public virtual WizardFormData CreateWizardFormData(string formKey, IEnumerable <WizardContentField> fieldData, WizardButtonData editButton = null) { var data = fieldData?.ToList(); var form = data?.FirstOrDefault(o => o.FieldType.Equals("Form", StringComparison.InvariantCultureIgnoreCase) && o.FieldKey.Equals(formKey, StringComparison.InvariantCultureIgnoreCase)); if (form == null) { return(new WizardFormData(null, null, null)); } var returnObject = new WizardFormData(formKey, fieldData, editButton); string strInput; strInput = form.FieldData?.Trim(); if (string.IsNullOrWhiteSpace(strInput)) { return(returnObject); } var fields = data.Where(o => o.ParentKey.Equals(form.FieldKey, StringComparison.CurrentCultureIgnoreCase)).OrderBy(o => o.Order).ToList(); foreach (var o in fields) { JToken field = JToken.FromObject(o); strInput = o.FieldData?.Trim(); if (!string.IsNullOrWhiteSpace(strInput)) { if (strInput.StartsWith("{") && strInput.EndsWith("}")) { try { var dta = JToken.Parse(strInput); if ((field["FieldType"]?.ToString() ?? "").Equals("Select", StringComparison.InvariantCultureIgnoreCase)) { /* * // Example of overriding lookup data: * switch (dta["lookup"]?.ToString().ToLower()) * { * case "country": * dta["data"] = JToken.FromObject(DataRepository.GetCountryList()); * break; * } */ } field["FieldData"] = dta; } catch { // ignored } } } field["FieldData"] = field["FieldData"] ?? new JObject(); ((List <JToken>)(returnObject.Fields)).Add(field); } strInput = form.FieldData?.Trim(); if (string.IsNullOrWhiteSpace(strInput)) { return(returnObject); } if (strInput.StartsWith("{") && strInput.EndsWith("}")) { try { var jObj = JToken.Parse(strInput); returnObject.UseCardLayout = DataUtility.ParseBool(jObj["useCardLayout"]); } catch { // ignored } } return(returnObject); }