SenseNet.ContentRepository.SurveyItem.OnCreating C# (CSharp) Method

OnCreating() protected method

protected OnCreating ( object sender, Storage e ) : void
sender object
e Storage
return void
        protected override void OnCreating(object sender, Storage.Events.CancellableNodeEventArgs e)
        {
            base.OnCreating(sender, e);

            var searchPath = e.SourceNode.Parent.GetType().Name == "Survey" ? e.SourceNode.ParentPath : e.SourceNode.Parent.ParentPath;

            // Count Survey Items
            var surveyItemCount = ContentQuery.Query(string.Format("+Type:surveyitem +InTree:\"{0}\" .AUTOFILTERS:OFF .COUNTONLY", searchPath)).Count;

            // Get children (SurveyItems) count
            String tempName;
            if (surveyItemCount < 10 && surveyItemCount != 9)
                tempName = "SurveyItem_0" + (surveyItemCount + 1);
            else
                tempName = "SurveyItem_" + (surveyItemCount + 1);

            // If node already exits
            while (Node.Exists(RepositoryPath.Combine(e.SourceNode.Parent.Path, tempName)))
            {
                surveyItemCount++;
                if (surveyItemCount < 10)
                    tempName = "SurveyItem_0" + (surveyItemCount + 1);
                else
                    tempName = "SurveyItem_" + (surveyItemCount + 1);
            }

            e.SourceNode["DisplayName"] = tempName;
            e.SourceNode["Name"] = tempName.ToLower();
        }