/// <summary> Execute action with all children. If action completely was executed at server, return true. Otherwise, false
        /// </summary>
        /// <param name="scope"></param>
        /// <returns></returns>
        public bool ExecuteAction(ActionScope scope)
        {
            bool fullyExecuted = this.Execute(scope);

            if (!fullyExecuted)
            {
                return(false);
            }

            //if fully executed on server, call next
            foreach (var action in this.ChildActions)
            {
                if (scope.ExecutedActionIDS.Contains(action.EventAction.ActionID))
                {
                    continue;
                }
                fullyExecuted = action.ExecuteAction(scope);
                if (!fullyExecuted)
                {
                    return(false);
                }
            }
            return(true);
        }
 protected override bool Execute(ActionScope scope)
 {
     return(false);
 }
 /// <summary> Execute only action without children. If action was fully executed at server, return true. Otherwise, false
 /// </summary>
 /// <param name="scope"></param>
 /// <returns>If action was fully executed at server, return true. Otherwise, false</returns>
 protected abstract bool Execute(ActionScope scope);