|
|
@@ -309,59 +309,67 @@ public partial class DynamicFormEditWindow : Window, IDynamicFormWindow
|
|
|
string? error = null;
|
|
|
string? errorDetails = null;
|
|
|
|
|
|
- Progress.ShowModal("Loading Form", (progress) =>
|
|
|
+ try
|
|
|
{
|
|
|
- var formid = formInstance.Form.ID;
|
|
|
+ Progress.ShowModal("Loading Form", (progress) =>
|
|
|
+ {
|
|
|
+ var formid = formInstance.Form.ID;
|
|
|
|
|
|
- values = DigitalForm.DeserializeFormData(formInstance);
|
|
|
+ values = DigitalForm.DeserializeFormData(formInstance);
|
|
|
|
|
|
- var results = Client.QueryMultiple(
|
|
|
- new KeyedQueryDef<DigitalFormVariable>(Filter<DigitalFormVariable>.Where(x => x.Form.ID).IsEqualTo(formid)),
|
|
|
- new KeyedQueryDef<DigitalFormLayout>(
|
|
|
- Filter<DigitalFormLayout>.Where(x => x.Form.ID).IsEqualTo(formid)
|
|
|
- .And(x => x.Active).IsEqualTo(true)
|
|
|
- .And(x => x.Layout).IsNotEqualTo("")));
|
|
|
+ var results = Client.QueryMultiple(
|
|
|
+ new KeyedQueryDef<DigitalFormVariable>(Filter<DigitalFormVariable>.Where(x => x.Form.ID).IsEqualTo(formid)),
|
|
|
+ new KeyedQueryDef<DigitalFormLayout>(
|
|
|
+ Filter<DigitalFormLayout>.Where(x => x.Form.ID).IsEqualTo(formid)
|
|
|
+ .And(x => x.Active).IsEqualTo(true)
|
|
|
+ .And(x => x.Layout).IsNotEqualTo("")));
|
|
|
|
|
|
- variables = results[nameof(DigitalFormVariable)].Rows.Select(x => x.ToObject<DigitalFormVariable>()).ToArray();
|
|
|
+ variables = results[nameof(DigitalFormVariable)].Rows.Select(x => x.ToObject<DigitalFormVariable>()).ToArray();
|
|
|
|
|
|
- var desktopLayout = results[nameof(DigitalFormLayout)]
|
|
|
- .Rows.FirstOrDefault(x => x.Get<DigitalFormLayout, DFLayoutType>(x => x.Type) == DFLayoutType.Desktop)
|
|
|
- ?.ToObject<DigitalFormLayout>();
|
|
|
+ var desktopLayout = results[nameof(DigitalFormLayout)]
|
|
|
+ .Rows.FirstOrDefault(x => x.Get<DigitalFormLayout, DFLayoutType>(x => x.Type) == DFLayoutType.Desktop)
|
|
|
+ ?.ToObject<DigitalFormLayout>();
|
|
|
|
|
|
- layout = desktopLayout ?? results[nameof(DigitalFormLayout)].ToObjects<DigitalFormLayout>().FirstOrDefault();
|
|
|
- if (layout != null)
|
|
|
- {
|
|
|
- if (parent is null)
|
|
|
+ layout = desktopLayout ?? results[nameof(DigitalFormLayout)].ToObjects<DigitalFormLayout>().FirstOrDefault();
|
|
|
+ if (layout != null)
|
|
|
{
|
|
|
- var parentlink = CoreUtils.HasProperty(formInstance.GetType(), "Parent")
|
|
|
- ? CoreUtils.GetPropertyValue(formInstance, "Parent") as IEntityLink
|
|
|
- : null;
|
|
|
- var parenttype = parentlink?.GetType().BaseType?.GetGenericArguments().FirstOrDefault();
|
|
|
-
|
|
|
- if (parenttype != null && parentlink != null)
|
|
|
+ if (parent is null)
|
|
|
{
|
|
|
- var parentid = parentlink.ID;
|
|
|
- var filter = Filter.Create(parenttype);
|
|
|
- filter.Property = "ID";
|
|
|
- filter.Operator = Operator.IsEqualTo;
|
|
|
- filter.Value = parentid;
|
|
|
-
|
|
|
- parent = Client.Create(parenttype)
|
|
|
- .Query(filter, DFUtils.RequiredEntityColumns(formInstance.GetType(), parenttype, variables), null).ToObjects(parenttype).FirstOrDefault() as Entity;
|
|
|
- }
|
|
|
-
|
|
|
- if (parent == null)
|
|
|
- {
|
|
|
- error = "An error occurred while loading the form: Form Entity is null";
|
|
|
- errorDetails = $"Form parent is null; Form Type: {formInstance.GetType()}; Parent Type: {parenttype}; Form ID: {formInstance.ID}";
|
|
|
+ var parentlink = CoreUtils.HasProperty(formInstance.GetType(), "Parent")
|
|
|
+ ? CoreUtils.GetPropertyValue(formInstance, "Parent") as IEntityLink
|
|
|
+ : null;
|
|
|
+ var parenttype = parentlink?.GetType().BaseType?.GetGenericArguments().FirstOrDefault();
|
|
|
+
|
|
|
+ if (parenttype != null && parentlink != null)
|
|
|
+ {
|
|
|
+ var parentid = parentlink.ID;
|
|
|
+ var filter = Filter.Create(parenttype);
|
|
|
+ filter.Property = "ID";
|
|
|
+ filter.Operator = Operator.IsEqualTo;
|
|
|
+ filter.Value = parentid;
|
|
|
+
|
|
|
+ parent = Client.Create(parenttype)
|
|
|
+ .Query(filter, DFUtils.RequiredEntityColumns(formInstance.GetType(), parenttype, variables), null).ToObjects(parenttype).FirstOrDefault() as Entity;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (parent == null)
|
|
|
+ {
|
|
|
+ error = "An error occurred while loading the form: Form Entity is null";
|
|
|
+ errorDetails = $"Form parent is null; Form Type: {formInstance.GetType()}; Parent Type: {parenttype}; Form ID: {formInstance.ID}";
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = "No layout found for form!";
|
|
|
- }
|
|
|
- });
|
|
|
+ else
|
|
|
+ {
|
|
|
+ error = "No layout found for form!";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ catch(Exception e)
|
|
|
+ {
|
|
|
+ MessageWindow.ShowError("Error occurred loading form", e);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
if (!error.IsNullOrWhiteSpace())
|
|
|
{
|
|
|
@@ -430,7 +438,7 @@ public partial class DynamicFormEditWindow : Window, IDynamicFormWindow
|
|
|
: "";*/
|
|
|
}
|
|
|
|
|
|
- DigitalForm.SerializeFormData(formInstance, variables, form.SaveValues());
|
|
|
+ DigitalForm.SerializeFormData(formInstance, form.SaveValues());
|
|
|
}
|
|
|
|
|
|
return form.Result == FormResult.Save || form.Result == FormResult.Complete;
|