/// <summary> /// Resolves the dependencies by means of persisting all models that this model is referencing. /// </summary> protected override void ResolveGeneratedDependency() { base.ResolveGeneratedDependency(); if (_screenObject != null) { _screenObject.Save(); this.ModifiedData.ObjId = _screenObject.Id; } }
/// <summary> /// Updates the page configuration. /// </summary> public void Update(String url, ArrayList controls) { foreach (Dictionary <String, Object> control in controls) { // Get the screen object for the control LocalScreenObjectModel screenObject = this.Provider.UserInterface.ScreenObject.FetchAll().FirstOrDefault(obj => String.Equals(obj.Url, url, StringComparison.OrdinalIgnoreCase) && String.Equals(obj.Control, control["ControlId"].ConvertTo <String>(), StringComparison.OrdinalIgnoreCase)); if (control.ContainsKey("DeleteMe") && control["DeleteMe"].ToString() == "1") { if (screenObject != null) { screenObject.Delete(); } } else { if (screenObject == null) { screenObject = this.Provider.UserInterface.ScreenObject.Create(); } // Apply the configuration Dictionary <String, Dictionary <String, Object> > configuration = (control["Configuration"] as Dictionary <String, Object>).ToDictionary(pair => pair.Key, pair => pair.Value as Dictionary <String, Object>); if (configuration.ContainsKey("Icon")) { screenObject.Icon = configuration["Icon"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("Title")) { screenObject.Title = configuration["Title"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("DefaultValue")) { screenObject.Default = configuration["DefaultValue"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("Requirement")) { screenObject.Requirement = configuration["Requirement"]["ConfiguredValue"].ConvertTo <ScreenObjectRequirement>(); } if (configuration.ContainsKey("OnText")) { screenObject.OnText = configuration["OnText"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("OnColour")) { screenObject.OnColour = configuration["OnColour"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("OffText")) { screenObject.OffText = configuration["OffText"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("OffColour")) { screenObject.OffColour = configuration["OffColour"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("ValidatorCritical")) { screenObject.ValidatorCritical = configuration["ValidatorCritical"]["ConfiguredValue"].ConvertTo <Boolean>(); } if (configuration.ContainsKey("ValidatorMessage")) { screenObject.ValidatorMessage = configuration["ValidatorMessage"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("ValidatorExpression")) { screenObject.ValidatorExpression = configuration["ValidatorExpression"]["ConfiguredValue"].ConvertTo <String>().TrimOrNullify(); } if (configuration.ContainsKey("MaximumLength")) { screenObject.MaximumLength = configuration["MaximumLength"]["ConfiguredValue"].ConvertTo <Int32>(); } if (configuration.ContainsKey("IsHidden") && configuration["IsHidden"]["ConfiguredValue"].ConvertTo <Boolean>()) { screenObject.Visibility = ScreenObjectVisibility.Hidden; } else if (configuration.ContainsKey("IsReadOnly") && configuration["IsReadOnly"]["ConfiguredValue"].ConvertTo <Boolean>()) { screenObject.Visibility = ScreenObjectVisibility.ReadOnly; } else { screenObject.Visibility = ScreenObjectVisibility.Visible; } // Apply the n-1 configuration items if (configuration.ContainsKey("Columns")) { this.UpdateColumns(screenObject, control, "Columns"); } if (configuration.ContainsKey("Items")) { this.UpdateItems(screenObject, control, "Items"); } if (configuration.ContainsKey("Security")) { this.UpdateSecurity(screenObject, control, "Security"); } // When creating a new screen object record, ensure that the page url and control ID are set if (!screenObject.IsPersisted && (screenObject.IsModified || screenObject.Entries.Any(ent => ent.IsModified) || screenObject.DisplayRules.Any(rule => rule.IsModified) || screenObject.Columns.Any(rule => rule.IsModified))) { screenObject.Control = control["ControlId"].ConvertTo <String>(); screenObject.Url = url; } screenObject.Save(); } } }