Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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);
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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;
            }
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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);
                    }
                }
            }
        }
Exemple #14
0
        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);
        }
Exemple #15
0
 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;
         }
     }
 }