private bool Delete(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, XElement root) { bool bIsDeleted = false; XNamespace y0 = XmlLinq.GetNamespaceForNode( root, argumentsEdits.URIToAdd.URINodeName); if (y0 != null) { bIsDeleted = XmlLinq.DeleteElementUsingURIToAdd(y0, root, argumentsEdits); //updategrams don't need the prefix/namespace argumentsEdits.URIToAdd.URINodeName = argumentsEdits.URIToAdd.URINodeName.Replace( Helpers.GeneralHelpers.NAMESPACE_DB_ABBREV_COLON, string.Empty); } else { bIsDeleted = XmlLinq.DeleteElementUsingURIToAdd(y0, root, argumentsEdits); } return(bIsDeleted); }
private bool Update(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, XElement root) { bool bIsUpdated = false; //validate the user's input (editattvalue) RuleHelpers.GeneralRules.ValidateXSDInput(argumentsEdits); //update the node, if it changed, and return result; XNamespace y0 = XmlLinq.GetNamespaceForNode( root, argumentsEdits.URIToAdd.URINodeName); if (y0 != null) { bIsUpdated = XmlLinq.UpdateElementUsingURIToAdd(y0, root, argumentsEdits); //updategrams don't need the prefix/namespace argumentsEdits.URIToAdd.URINodeName = argumentsEdits.URIToAdd.URINodeName.Replace( Helpers.GeneralHelpers.NAMESPACE_DB_ABBREV_COLON, string.Empty); } else { bIsUpdated = XmlLinq.UpdateElementUsingURIToAdd(y0, root, argumentsEdits); } return(bIsUpdated); }
public static EditHelper.ArgumentsEdits MakeArgumentEdits(ContentURI uri, IDictionary <string, string> colUpdates) { EditHelper.ArgumentsEdits oArgumentEdits = new EditHelper.ArgumentsEdits(); oArgumentEdits.ParentURIPattern = uri.URIPattern; oArgumentEdits.IsDbEdit = Helpers.GeneralHelpers.IsDbEdit(uri); oArgumentEdits.NeedsBaseIds = false; oArgumentEdits.URIToEdit = new ContentURI(uri); return(oArgumentEdits); }
public bool DeleteJoinNode(EditHelper.ArgumentsEdits argumentsEdits, XElement root) { bool bIsDeleted = false; XNamespace y0 = XmlLinq.GetNamespaceForNode( root, argumentsEdits.URIToAdd.URINodeName); bIsDeleted = XmlLinq.DeleteElementUsingURIToAdd(y0, root, argumentsEdits); return(bIsDeleted); }
public async Task <bool> MakeUpdatesAsync( ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, IDictionary <string, string> colUpdates, XElement root) { bool bHasCompleted = false; if (colUpdates != null) { string sURIPattern = string.Empty; string sAttName = string.Empty; string sDataType = string.Empty; string sSize = string.Empty; bool bNeedsUpdate = true; foreach (string sKeyName in colUpdates.Keys) { //1. sKeyName should be a 'uripattern;attname;datatype;size' delimited string string[] arrUpdateParams = sKeyName.Split(Helpers.GeneralHelpers.STRING_DELIMITERS); argumentsEdits.URIToAdd.URIPattern = string.Empty; argumentsEdits.EditAttName = string.Empty; argumentsEdits.EditAttValue = string.Empty; GetStandardEditNameParams(arrUpdateParams, out sURIPattern, out sAttName, out sDataType, out sSize); if (!string.IsNullOrEmpty(sAttName)) { //convention: URIToAdd is each node being inserted or deleted //URIToAdd is base node (node getting insertions, node holding document) argumentsEdits.URIToAdd.URIPattern = sURIPattern; Helpers.GeneralHelpers.SetURIParams(argumentsEdits.URIToAdd); argumentsEdits.EditAttName = sAttName; argumentsEdits.EditAttValue = colUpdates[sKeyName].ToString(); //optional params argumentsEdits.EditDataType = sDataType; argumentsEdits.EditSize = sSize; bNeedsUpdate = await ChangeSpecialAttributeValuesAsync( uri, argumentsEdits, root); if (bNeedsUpdate) { if (string.IsNullOrEmpty(uri.ErrorMessage)) { //update the root element Update(uri, argumentsEdits, root); } } sURIPattern = string.Empty; sAttName = string.Empty; sDataType = string.Empty; sSize = string.Empty; } } } bHasCompleted = true; return(bHasCompleted); }
public bool MakeEditsCollection(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, List <EditHelper.ArgumentsEdits> edits, IDictionary <string, string> colUpdates) { bool bIsOkToSave = false; if (colUpdates != null) { string sURIPattern = string.Empty; string sAttName = string.Empty; string sDataType = string.Empty; string sSize = string.Empty; EditHelper editHelper = new EditHelper(); //added to argEdits.SelectionsToAdd collection so that the objects needing to be updated are stateful foreach (string sKeyName in colUpdates.Keys) { //1. sKeyName should be a 'uripattern;attname;datatype;size' delimited string string[] arrUpdateParams = sKeyName.Split(Helpers.GeneralHelpers.STRING_DELIMITERS); argumentsEdits.URIToAdd.URIPattern = string.Empty; argumentsEdits.EditAttName = string.Empty; argumentsEdits.EditAttValue = string.Empty; EditHelper.GetStandardEditNameParams(arrUpdateParams, out sURIPattern, out sAttName, out sDataType, out sSize); if (!string.IsNullOrEmpty(sAttName)) { //convention: URIToAdd is each node being inserted or deleted //URIToAdd is base node (node getting insertions, node holding document) EditHelper.ArgumentsEdits newEdit = new EditHelper.ArgumentsEdits(argumentsEdits); newEdit.URIToAdd.URIPattern = sURIPattern; Helpers.GeneralHelpers.SetURIParams(newEdit.URIToAdd); newEdit.URIToAdd.URIDataManager = new ContentURI.DataManager(uri.URIDataManager); newEdit.EditAttName = sAttName; newEdit.EditAttValue = colUpdates[sKeyName].ToString(); newEdit.EditDataType = sDataType; newEdit.EditSize = sSize; //update the edits collection edits.Add(newEdit); bIsOkToSave = true; sURIPattern = string.Empty; sAttName = string.Empty; sDataType = string.Empty; sSize = string.Empty; } else { uri.ErrorMessage = DevTreks.Exceptions.DevTreksErrors.MakeStandardErrorMsg( string.Empty, "UPcDate_BADPROPERTY"); } } } return(bIsOkToSave); }
private async Task <bool> UpdateConcurrentSettingsAsync( ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits) { bool bNeedsUpdate = true; int iNewIsDefaultId = 0; bool bIsUpdated = false; switch (argumentsEdits.URIToEdit.URIDataManager.AppType) { case Helpers.GeneralHelpers.APPLICATION_TYPES.members: AppHelpers.Members oMember = new AppHelpers.Members(); iNewIsDefaultId = Helpers.GeneralHelpers.ConvertStringToInt(argumentsEdits.EditAttValue); bIsUpdated = await oMember.UpdateDefaultClubForLoggedinMemberAsync(argumentsEdits.URIToAdd, uri.URIMember.MemberId, iNewIsDefaultId); break; case Helpers.GeneralHelpers.APPLICATION_TYPES.networks: AppHelpers.Networks oNetwork = new AppHelpers.Networks(); iNewIsDefaultId = Helpers.GeneralHelpers.ConvertStringToInt(argumentsEdits.EditAttValue); bIsUpdated = await oNetwork.UpdateDefaultNetworkForLoggedinMemberAsync( argumentsEdits.URIToAdd, uri.URIId, iNewIsDefaultId); break; default: if (uri.URIDataManager.SubActionView == Helpers.GeneralHelpers.SUBACTION_VIEWS.linkedviewslist.ToString()) { iNewIsDefaultId = Helpers.GeneralHelpers.ConvertStringToInt(argumentsEdits.EditAttValue); AppHelpers.LinkedViews oLinkedView = new AppHelpers.LinkedViews(); bIsUpdated = await oLinkedView.UpdateDefaultLinkedViewAsync(uri, iNewIsDefaultId); } else if (argumentsEdits.URIToEdit.URIDataManager.AppType == Helpers.GeneralHelpers.APPLICATION_TYPES.addins || argumentsEdits.URIToEdit.URIDataManager.AppType == Helpers.GeneralHelpers.APPLICATION_TYPES.locals) { //2.0.0 made the addin and local edit pattern the same as the rest iNewIsDefaultId = Helpers.GeneralHelpers.ConvertStringToInt(argumentsEdits.EditAttValue); AppHelpers.LinkedViews oLinkedView = new AppHelpers.LinkedViews(); bIsUpdated = await oLinkedView.UpdateDefaultLinkedViewAsync(uri, iNewIsDefaultId); } break; } if (bIsUpdated) { bNeedsUpdate = false; } return(bNeedsUpdate); }
public bool MakeDeletionCollection(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, StringDictionary colDeletes) { bool bIsOkToSave = false; //a delete query is run separately for each deletion, but why? if (colDeletes != null) { string sAction = string.Empty; foreach (string sKeyName in colDeletes.Keys) { bIsOkToSave = false; //1. sKeyName is a 'searchname;delete' delimited string String[] arrDeleteParams = sKeyName.Split(Helpers.GeneralHelpers.STRING_DELIMITERS); if (arrDeleteParams.Length > 1) { sAction = string.Empty; sAction = arrDeleteParams[1]; if (sAction.ToLower().Equals(EditHelper.DELETE)) { ContentURI deleteURI = new ContentURI(); //convention: argumentsEdits.SelectionsToAdd is each node being inserted or deleted //URIToEdit is base node (node getting insertions or node holding document) deleteURI.URIPattern = string.Empty; deleteURI.URIPattern = arrDeleteParams[0]; Helpers.GeneralHelpers.SetURIParams(deleteURI); deleteURI.URIDataManager = new ContentURI.DataManager(uri.URIDataManager); if (argumentsEdits.SelectionsToAdd == null) { argumentsEdits.SelectionsToAdd = new List <ContentURI>(); } argumentsEdits.SelectionsToAdd.Add(deleteURI); } } } } if (uri.ErrorMessage == string.Empty && argumentsEdits.SelectionsToAdd != null) { if (argumentsEdits.SelectionsToAdd.Count > 0) { bIsOkToSave = true; } } return(bIsOkToSave); }
public async Task <bool> DeleteBase(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, XElement root) { bool bIsDeleted = false; //definitely delete the join record (argumentEdits.URIToAdd.URIId) //and check to see if descendent base table records must also be deleted //(they need to be deleted if their related join is the top join record) bIsDeleted = await DeleteJoinAndCheckBaseAsync(uri, argumentsEdits.URIToAdd, argumentsEdits.IsDbEdit); if (bIsDeleted) { //delete the node from the xmldoc being edited bIsDeleted = DeleteJoinNode(argumentsEdits, root); } return(bIsDeleted); }
public static void GetParentsOfRecursiveNodesIds( EditHelper.ArgumentsEdits addsArguments, Helpers.GeneralHelpers.APPLICATION_TYPES appType, out string recursiveParentKeyName, out string recursiveParentId) { recursiveParentKeyName = string.Empty; recursiveParentId = string.Empty; switch (appType) { case Helpers.GeneralHelpers.APPLICATION_TYPES.devpacks: AppHelpers.DevPacks.GetParentOfRecursiveNodesId(addsArguments, out recursiveParentKeyName, out recursiveParentId); break; default: //don't render any ui break; } }
public async Task <bool> ChangeSpecialAttributeValuesAsync( ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, XElement root) { bool bNeedsUpdate = true; //set dynamically (note that uploaded files have file names that aren't used here if (argumentsEdits.EditAttName.ToLower().Contains( IS_DEFAULT.ToLower())) { //grouped radios have a false uripattern in the name //and an id as the value if (argumentsEdits.EditAttValue.Length > 0) { //update both current IsDefault setting and new setting at one time bNeedsUpdate = await UpdateConcurrentSettingsAsync(uri, argumentsEdits); } } return(bNeedsUpdate); }
public async Task <bool> JoinIdsAreMatches(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, string baseNodeName, string baseId) { bool bJoinIdsMatch = false; string sTopJoinId = string.Empty; if (uri.URIDataManager.AppType == Helpers.GeneralHelpers.APPLICATION_TYPES.members) { AppHelpers.Members member = new AppHelpers.Members(); sTopJoinId = await member.GetTopClubToMemberJoinIdAsync(argumentsEdits.URIToAdd, argumentsEdits.URIToAdd.URIDataManager.DefaultConnection, baseNodeName, baseId, uri.URIMember.ClubInUse.PKId); } if (sTopJoinId.Equals(argumentsEdits.URIToAdd.URIId.ToString())) { bJoinIdsMatch = true; } return(bJoinIdsMatch); }
private void UpdateXmlDocField(ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, IDictionary <string, string> colUpdates, XElement root) { //see if they are updating the corresponding xmldoc as well string sStepNumber = string.Empty; string sDbKeyName = GetDbKeyNameForAddIn( argumentsEdits.URIToAdd.URIPattern, Helpers.GeneralHelpers.ROOT_PATH, RuleHelpers.GeneralRules.XML, sStepNumber); //delete calculator files string sClubDocPath = (!string.IsNullOrEmpty( argumentsEdits.URIToAdd.URIClub.ClubDocFullPath) ? argumentsEdits.URIToAdd.URIClub.ClubDocFullPath : uri.URIClub.ClubDocFullPath); Helpers.FileStorageIO.DeleteURIsContainingSubstring(uri, sClubDocPath, string.Concat(Helpers.GeneralHelpers.FILENAME_DELIMITER, Helpers.GeneralHelpers.ADDIN.ToLower())); //delete calculated files IEnumerable linkedViewDocs = XmlLinq.GetChildrenLinkedView( root, argumentsEdits.URIToAdd.URINodeName, argumentsEdits.URIToAdd.URIId.ToString()); if (linkedViewDocs != null) { string sId = string.Empty; foreach (XElement linkedViewDoc in linkedViewDocs) { sId = XmlLinq.GetAttributeValue(linkedViewDoc, AppHelpers.Calculator.cId); if (!string.IsNullOrEmpty(sId)) { Helpers.FileStorageIO.DeleteURIsContainingSubstring( uri, sClubDocPath, sId); } } } }
public async Task <bool> MakeDeletionsAsync( ContentURI uri, EditHelper.ArgumentsEdits argumentsEdits, StringDictionary colDeletes, XElement devTrekLinqRoot) { bool bIsOkToSave = false; if (colDeletes != null) { string sAction = string.Empty; foreach (string sKeyName in colDeletes.Keys) { bIsOkToSave = false; //1. sKeyName is a 'searchname;delete' delimited string String[] arrDeleteParams = sKeyName.Split(Helpers.GeneralHelpers.STRING_DELIMITERS); if (arrDeleteParams.Length > 1) { sAction = string.Empty; sAction = arrDeleteParams[1]; if (sAction.ToLower().StartsWith(DELETE)) { //convention: URIToAdd is each node being inserted or deleted //URIToEdit is base node (node getting insertions or node holding document) argumentsEdits.URIToAdd.URIPattern = string.Empty; argumentsEdits.URIToAdd.URIPattern = arrDeleteParams[0]; Helpers.GeneralHelpers.SetURIParams(argumentsEdits.URIToAdd); bool bHasSet = await ChangeSpecialAttributeValuesAsync( uri, argumentsEdits, devTrekLinqRoot); //delete this node and prepare regular updategram bIsOkToSave = Delete(uri, argumentsEdits, devTrekLinqRoot); } } } } return(bIsOkToSave); }
public static void SetUpdateSchemaProperties( bool isDeletes, EditHelper.ArgumentsEdits argumentsEdits) { //tells apps to use edit schemas argumentsEdits.NeedsFullSchema = true; argumentsEdits.IsUpdateGram = true; if (argumentsEdits.URIToEdit.URIDataManager.AppType == Helpers.GeneralHelpers.APPLICATION_TYPES.agreements) { if (argumentsEdits.URIToEdit.URIDataManager.SubActionView == Helpers.GeneralHelpers.SUBACTION_VIEWS.categories.ToString()) { argumentsEdits.IsUpdateGram = true; } else { //want full schema because because it allows //both the base and join tables to be updated with //one updategram argumentsEdits.IsUpdateGram = false; } } else if (argumentsEdits.URIToEdit.URIDataManager.AppType == Helpers.GeneralHelpers.APPLICATION_TYPES.devpacks) { //except when running addins for customdocs if (argumentsEdits.URIToEdit.URIDataManager.ServerSubActionType != Helpers.GeneralHelpers.SERVER_SUBACTION_TYPES.runaddin) { //want single node schemas because they allow //both the base and join tables to be updated with //one updategram argumentsEdits.IsUpdateGram = false; argumentsEdits.NeedsFullSchema = false; } } }