//MenuItem Object Scope Validation check the entire object for validity... private byte MenuItemIsValid(NestedMenuItem item, out string errorMessage) { //validate key errorMessage = ""; if (string.IsNullOrEmpty(item.MenuItemID)) { errorMessage = "ID Is Required."; return(1); } MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.AutoID == item.AutoID); EntityStates entityState = GetMenuItemState(menuItem); if (entityState == EntityStates.Added && MenuItemExists(item.MenuItemID)) { errorMessage = "Item All Ready Exists."; return(1); } //check cached list for duplicates... int count = MenuItemList.Count(q => q.MenuItemID == item.MenuItemID); if (count > 1) { errorMessage = "Item All Ready Exists."; return(1); } //validate Description if (string.IsNullOrEmpty(item.Name)) { errorMessage = "Name Is Required."; return(1); } //a value of 2 is pending changes... //On Commit we will give it a value of 0... return(2); }
private bool Delete(NestedMenuItem item) {//deletes are done indenpendently of the repository as a delete will not commit //dirty records it will simply just delete the record... MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.AutoID == item.AutoID); _serviceAgent.DeleteFromMenuItemRepository(menuItem); //remove it from the cache repository list MenuItemList.Remove(menuItem); return(true); }
public void SaveCommand() { MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.AutoID == SelectedMenuItem.AutoID); if (GetMenuItemState(menuItem) != EntityStates.Detached) { if (Update(SelectedMenuItem, "", "")) { Commit(); } else//if and where we have a hole in our allowcommit logic... { NotifyMessage("Save Failed Check Your Work And Try Again..."); } } }
//udpate merely updates the repository a commit is required //to commit it to the db... private bool Update(NestedMenuItem item, string propertyName, object propertyValue) {//get the menuItem from the Repository List... MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.AutoID == item.AutoID); //Set the edited field when present... if (!string.IsNullOrEmpty(propertyName)) { menuItem.SetPropertyValue(propertyName, propertyValue); } //update the repository with the field change... _serviceAgent.UpdateMenuItemRepository(menuItem); Dirty = true; if (CommitIsAllowed()) { AllowCommit = true; } else { AllowCommit = false; } return(AllowCommit); }
//Object.Property Scope Validation... private bool MenuItemIsValid(NestedMenuItem item, _menuItemValidationProperties validationProperties, out string errorMessage) { errorMessage = ""; switch (validationProperties) { case _menuItemValidationProperties.MenuItemID: //validate key if (string.IsNullOrEmpty(item.MenuItemID)) { errorMessage = "ID Is Required."; return(false); } MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.AutoID == item.AutoID); EntityStates entityState = GetMenuItemState(menuItem); if (entityState == EntityStates.Added && MenuItemExists(item.MenuItemID)) { errorMessage = "Item All Ready Exists..."; return(false); } //check cached list for duplicates... int count = MenuItemList.Count(q => q.MenuItemID == item.MenuItemID); if (count > 1) { errorMessage = "Item All Ready Exists..."; return(false); } break; case _menuItemValidationProperties.Name: //validate Description if (string.IsNullOrEmpty(item.Name)) { errorMessage = "Description Is Required."; return(false); } break; } return(true); }
private void ResetTreeTempFields(NestedMenuItem parent) { foreach (NestedMenuItem child in parent.Children) { child.IsValid = 0; child.NotValidMessage = ""; //autoID is set a negative value until it is seeded from the db... if (child.AutoID < 0) { //locate the record to fetch the seeded autoid value... MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.MenuItemID == child.MenuItemID && q.CompanyID == ClientSessionSingleton.Instance.CompanyID); child.AutoID = menuItem.AutoID; } //if it is selected we need to modify SelectedMenuItem as well... if (child.IsSelected == true) { SelectedMenuItem.IsValid = 0; SelectedMenuItem.NotValidMessage = ""; } ResetTreeTempFields(child); } }
private IMasterPageMenuItem getDefaultMenuItem() { return(MenuItemList.FirstOrDefault(f => f.IsDefault)); }
private void SelectedMenuItem_PropertyChanged(object sender, PropertyChangedEventArgs e) {//these properties are not to be persisted we will igore them... if (e.PropertyName == "IsSelected" || e.PropertyName == "IsExpanded" || e.PropertyName == "IsValid" || e.PropertyName == "NotValidMessage" || e.PropertyName == "LastModifiedBy" || e.PropertyName == "LastModifiedByDate") { return; } //Key ID Logic... if (e.PropertyName == "MenuItemID") { //make sure it is has changed... if (SelectedMenuItemMirror.MenuItemID != SelectedMenuItem.MenuItemID) { //convert to the Entity MenuItem... MenuItem menuItem = MenuItemList.FirstOrDefault(q => q.AutoID == SelectedMenuItem.AutoID); EntityStates entityState = GetMenuItemState(menuItem); if (entityState == EntityStates.Unchanged || entityState == EntityStates.Modified) {//once a key is added it can not be modified... MessageBox.Show("Once A Key Is Added It Can Not Be Modified."); return; } } }//end KeyID logic... object propertyChangedValue = SelectedMenuItem.GetPropertyValue(e.PropertyName); object prevPropertyValue = SelectedMenuItemMirror.GetPropertyValue(e.PropertyName); string propertyType = SelectedMenuItem.GetPropertyType(e.PropertyName); //in some instances the value is not really changing but yet it still is tripping property change.. //This will ensure that the field has physically been modified... //As well when we revert back it constitutes a property change but they will be = and it will bypass the logic... bool objectsAreEqual; if (propertyChangedValue == null) { if (prevPropertyValue == null)//both values are null { objectsAreEqual = true; } else//only one value is null { objectsAreEqual = false; } } else { if (prevPropertyValue == null)//only one value is null { objectsAreEqual = false; } else //both values are not null use .Equals... { objectsAreEqual = propertyChangedValue.Equals(prevPropertyValue); } } if (!objectsAreEqual) { //Here we do property change validation if false is returned we will reset the value //Back to its mirrored value and return out of the property change w/o updating the repository... if (MenuItemPropertyChangeIsValid(e.PropertyName, propertyChangedValue, prevPropertyValue, propertyType)) {//pass in the propertyname and value as we will update the CRUD MenuItem and pass the //change to the repository... Update(SelectedMenuItem, e.PropertyName, propertyChangedValue); //set the mirrored objects field... SelectedMenuItemMirror.SetPropertyValue(e.PropertyName, propertyChangedValue); SelectedMenuItemMirror.IsValid = SelectedMenuItem.IsValid; SelectedMenuItemMirror.IsExpanded = SelectedMenuItem.IsExpanded; SelectedMenuItemMirror.NotValidMessage = SelectedMenuItem.NotValidMessage; } else { SelectedMenuItem.SetPropertyValue(e.PropertyName, prevPropertyValue); SelectedMenuItem.IsValid = SelectedMenuItemMirror.IsValid; SelectedMenuItem.IsExpanded = SelectedMenuItemMirror.IsExpanded; SelectedMenuItem.NotValidMessage = SelectedMenuItemMirror.NotValidMessage; } } }