コード例 #1
0
        //--------------------------------------------------------------------------------------------------

        void _FinishPivotPoint(ToolAction toolAction)
        {
            if (!(toolAction is PointAction pointAction))
            {
                return;
            }

            _Plane       = WorkspaceController.Workspace.WorkingPlane;
            _PointPlane1 = pointAction.PointOnPlane;
            _PivotPoint  = pointAction.Point;

            pointAction.Stop();
            pointAction = new PointAction(this);
            if (!WorkspaceController.StartToolAction(pointAction))
            {
                return;
            }
            pointAction.Previewed += _PreviewRadius;
            pointAction.Finished  += _FinishRadius;

            _CurrentPhase = Phase.Radius;
            StatusText    = "Select radius.";

            _ValueHudElement = WorkspaceController.HudManager?.CreateElement <ValueHudElement>(this);
            if (_ValueHudElement != null)
            {
                _ValueHudElement.Label         = "Radius:";
                _ValueHudElement.Units         = ValueUnits.Length;
                _ValueHudElement.ValueEntered += _ValueEntered;
            }

            WorkspaceController.HudManager?.SetCursor(Cursors.SetRadius);
        }
コード例 #2
0
        public PointResponse SetPointState(int blockId, int pointId, bool state, uint duration = 0)
        {
            // This method is better because it doesn't need NHibernate

            // Compose Action object
            PointAction action = new PointAction(pointId, state);

            // SetPointState messages do not have a return value because we do not wait for any data back from Wago like we do in GetBlockState.

            // Get RequestQueue, and push data into queue
            IRequestQueue queue = QueueCollection.Current.Item(blockId);

            if (queue == null)
            {
                throw new InvalidOperationException($"Could not find queue with BlockID {blockId}");
            }

            // Send request for block state
            queue.Push(action);

            // Wait a bit for the the response to appear
            PointResponse result = (PointResponse)queue.GetResponse(action.MessageID);

            // When duration is zero only send one message otherwise send the first message and then send another using a Timer.
            if (!result.Error && duration > 0)
            {
                PointAction futureAction = new PointAction(pointId, !action.State);
                HandleFutureAction(queue, action, futureAction, duration);
            }

            return(result);
        }
コード例 #3
0
ファイル: PointTimer.cs プロジェクト: lurienanofab/wagosvc
        //public bool State { get; private set; }

        public PointTimer(IRequestQueue queue, PointAction action, uint duration)
        {
            Action   = action;
            Queue    = queue;
            Duration = duration;
            _timer   = new Timer(x => ExecuteFutureAction(), null, duration * 1000, Timeout.Infinite);
        }
コード例 #4
0
        //--------------------------------------------------------------------------------------------------

        void _FinishPivotPoint(ToolAction toolAction)
        {
            if (!(toolAction is PointAction pointAction))
            {
                return;
            }

            _ClearPreviews();

            _Plane       = WorkspaceController.Workspace.WorkingPlane;
            _PointPlane1 = pointAction.PointOnPlane;

            pointAction.Stop();
            pointAction            = new PointAction(this);
            pointAction.Previewed += _PreviewBaseRect;
            pointAction.Finished  += _FinishBaseRect;
            if (!WorkspaceController.StartToolAction(pointAction))
            {
                return;
            }

            _CurrentPhase = Phase.BaseRect;
            StatusText    = "Select opposite corner point.";

            _MultiValueHudElement = WorkspaceController.HudManager?.CreateElement <MultiValueHudElement>(this);
            if (_MultiValueHudElement != null)
            {
                _MultiValueHudElement.Label1             = "Length:";
                _MultiValueHudElement.Units1             = ValueUnits.Length;
                _MultiValueHudElement.Label2             = "Width:";
                _MultiValueHudElement.Units2             = ValueUnits.Length;
                _MultiValueHudElement.MultiValueEntered += _MultiValueEntered;
            }
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="point1"></param>
        /// <param name="point2"></param>
        /// <param name="point3"></param>
        /// <param name="point4"></param>
        /// <param name="point5"></param>
        /// <param name="point6"></param>
        /// <param name="point7"></param>
        /// <param name="point8"></param>
        /// <param name="beforeUpdate"></param>
        /// <returns></returns>
        //public void TryUpdateUserPoint(int point1, int point2, int point3, int point4, int point5, int point6, int point7, int point8, TryUpdateUserPointCallback beforeUpdate)
        //{
        //    if (IsExecutorLogin)
        //    {
        //        lock (this.GetUser(ExecutorID))
        //        {
        //            //TODO:实现功能  如果有一个积分达到了下限 其它积分也都不更新 并抛错

        //            bool updatePoint = false;
        //            beforeUpdate(TryUpdateUserPointState.CheckSucceed,out updatePoint);
        //        }
        //    }
        //    else
        //    {
        //        //beforeUpdate(TryUpdateUserPointState.NeedLogin);
        //    }

        //}


        public static Dictionary <UserPoint, int> GetActionUserPointValue <T>(int userId, string type, T actionType, int nodeID)
        {
            int[] points = null;

            PointAction pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(type, nodeID);

            if (pointAction == null)
            {
                pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(type, 0);
            }

            points = pointAction.GetPoints(actionType.ToString(), userId);
            //foreach (PointAction pointAction in AllSettings.Current.PointActionSettings.PointActions)
            //{
            //    if (string.Compare(pointAction.Type, type) == 0)
            //    {
            //        points = pointAction.GetPoints(actionType.ToString(), userId);
            //        break;
            //    }
            //}
            //if (points == null)
            //    return new Dictionary<UserPoint, int>();

            Dictionary <UserPoint, int> userPoints = new Dictionary <UserPoint, int>();

            foreach (UserPoint userPoint in AllSettings.Current.PointSettings.EnabledUserPoints)
            {
                int pointID = (int)userPoint.Type;
                if (points.Length > pointID && points[pointID] != 0)
                {
                    userPoints.Add(userPoint, points[pointID]);
                }
            }
            return(userPoints);
        }
コード例 #6
0
ファイル: NavigationData.cs プロジェクト: Seaqqull/lazy-bot
 public NavigationPoint(NavigationPoint point)
 {
     this._transferDelay  = point._transferDelay;
     this._minImpactSpeed = point._minImpactSpeed;
     this._type           = point._type;
     this._action         = point._action;
     this._priority       = point._priority;
     this._animationSpeed = point._animationSpeed;
     this._movementSpeed  = point._movementSpeed;
     this._accuracyRadius = point._accuracyRadius;
     this._impactRadius   = point._impactRadius;
     this._point          = point._point;
 }
コード例 #7
0
        private void HandleFutureAction(IRequestQueue queue, PointAction action, PointAction futureAction, uint duration)
        {
            //send the future message

            //cancel any existing timers for this point
            if (FutureActionManager.Current.TryRemove(action.PointID, out PointTimer pointTimer))
            {
                pointTimer.Cancel(false);
            }

            //create a new PointTimer for this point
            pointTimer = new PointTimer(queue, futureAction, duration);

            //keep track of this timer in case it is cancelled
            FutureActionManager.Current.TryAdd(pointTimer);
        }
コード例 #8
0
        //--------------------------------------------------------------------------------------------------

        public override bool Start()
        {
            InteractiveContext.Current.WorkspaceController.Selection.SelectEntity(null, true);

            var pointAction = new PointAction(this);

            if (!WorkspaceController.StartToolAction(pointAction))
            {
                return(false);
            }
            pointAction.Previewed += _PreviewPivot;
            pointAction.Finished  += _FinishPivotPoint;

            _CurrentPhase      = Phase.PivotPoint;
            StatusText         = "Select corner point.";
            _Coord2DHudElement = WorkspaceController.HudManager?.CreateElement <Coord2DHudElement>(this);
            WorkspaceController.HudManager?.SetCursor(Cursors.SetPoint);
            return(true);
        }
コード例 #9
0
        public static bool UpdateUserPoint <T>(int userID, string type, T actionType, int count, bool isNormal, int nodeId, TryUpdateUserPointCallback beforeUpdate) where T : struct
        {
            if (userID == 0)//游客  不操作积分
            {
                if (beforeUpdate != null)
                {
                    beforeUpdate(TryUpdateUserPointState.CheckSucceed);
                }

                return(true);
            }

            int[]       points      = null;
            PointAction pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(type, nodeId);

            //foreach (PointAction pointAction in AllSettings.Current.PointActionSettings.PointActions)
            //{
            //    if (string.Compare(pointAction.Type, type) == 0)
            //    {
            //        points = pointAction.GetPoints(actionType.ToString(), userID);
            //        break;
            //    }
            //}
            points = pointAction.GetPoints(actionType.ToString(), userID);
            if (points == null)
            {
                if (beforeUpdate != null)
                {
                    beforeUpdate(TryUpdateUserPointState.CheckSucceed);
                }
                return(true);
            }
            if (isNormal == false)//取相反的值
            {
                for (int i = 0; i < points.Length; i++)
                {
                    points[i] = -points[i];
                }
            }
            return(UpdateUserPoints <T>(type, actionType, false, userID, points, count, beforeUpdate));
        }
コード例 #10
0
        /*
         * public static bool UpdateUsersPointWithNoTrans<T>(Dictionary<int, T> userActions, string type, int count, int nodeID, TryUpdateUserPointCallback beforeUpdate) where T : struct
         * {
         *
         *  List<int> userIDs = new List<int>();
         *  foreach (KeyValuePair<int, T> pair in userActions)
         *  {
         *      userIDs.Add(pair.Key);
         *  }
         *  //先缓存一下用户
         *  UserBO.Instance.GetUsers(userIDs);
         *
         *  bool success = true;
         *  foreach (KeyValuePair<int, T> pair in userActions)
         *  {
         *      if (pair.Key == 0)//游客
         *          continue;
         *
         *      success = CheckPoints(pair.Key, type, pair.Value, 1, true, nodeID);
         *      if (success == false)
         *          break;
         *  }
         *
         *  if (success == false)
         *  {
         *      beforeUpdate(TryUpdateUserPointState.CheckFailed);
         *      return false;
         *  }
         *
         *  success = beforeUpdate(TryUpdateUserPointState.CheckSucceed);
         *
         *  //TODO:更新积分
         *  return success;
         *  //if (success)
         *  //{
         *  //    foreach (KeyValuePair<int, T> pair in userActions)
         *  //    {
         *  //        UserBO.Instance.UpdateUserPoints(
         *  //    }
         *  //}
         * }
         */
        private static bool CheckPoints <T>(int userID, string type, T actionType, int count, bool isNormal, int nodeID) where T : struct
        {
            int[]       points      = null;
            PointAction pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(type, nodeID);

            points = pointAction.GetPoints(actionType.ToString(), userID);
            if (points == null)
            {
                return(true);
            }
            if (isNormal == false)//取相反的值
            {
                for (int i = 0; i < points.Length; i++)
                {
                    points[i] = -points[i];
                }
            }

            User user = UserBO.Instance.GetUser(userID);

            if (user == null)//可能该主题用户已被删除  但是不影响回复的人更新积分
            {
                return(true);
            }

            PointActionItemAttribute attribute = GetPointActionItemAttribute(type, actionType, false);

            if (attribute == null)
            {
                return(false);
            }

            lock (user.UpdateUserPointLocker)
            {
                //int[] userPoints;
                //bool success = PointActionManager.CheckPoints(attribute.ThrowOverMaxValue, attribute.ThrowOverMinValue, userID, points, out userPoints);
                bool success = UserBO.Instance.CheckUserPoint(userID, attribute.ThrowOverMinValue, attribute.ThrowOverMaxValue, points);
                return(success);
            }
        }
コード例 #11
0
        protected int[] GetPoints(string actionType)
        {
            string key = actionType;

            int[] tempPoints;
            if (points.TryGetValue(key, out tempPoints) == false)
            {
                PointAction pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(PointActionType.Type, NodeID);

                if (pointAction == null)
                {
                    pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(PointActionType.Type, NodeID);
                }

                tempPoints = pointAction.GetPoints(actionType, MyUserID);
                if (tempPoints == null)
                {
                    tempPoints = new int[8];
                }

                points.Add(key, tempPoints);
            }
            return(tempPoints);
        }
コード例 #12
0
        private void SaveSettings2()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay();

            if (PointActionType == null)
            {
                msgDisplay.AddError(new InvalidParamError("type").Message);
                return;
            }

            if (_Request.Get("inheritType", Method.Post, "False").ToLower() == "true")
            {
                PointActionSettings tempSetting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

                PointActionCollection tempPointActions = new PointActionCollection();

                for (int i = 0; i < tempSetting.PointActions.Count; i++)
                {
                    if (string.Compare(tempSetting.PointActions[i].Type, PointActionType.Type, true) == 0 && tempSetting.PointActions[i].NodeID == NodeID)
                    {
                    }
                    else
                    {
                        tempPointActions.Add(tempSetting.PointActions[i]);
                    }
                }

                tempSetting.PointActions = tempPointActions;
                try
                {
                    if (!SettingManager.SaveSettings(tempSetting))
                    {
                        CatchError <ErrorInfo>(delegate(ErrorInfo error)
                        {
                            msgDisplay.AddError(error);
                        });
                    }
                    else
                    {
                        BbsRouter.JumpToUrl(Request.RawUrl, "success=true");
                    }
                    //Response.Redirect(Request.RawUrl);
                }
                catch (Exception ex)
                {
                    msgDisplay.AddError(ex.Message);
                }
                return;
            }

            msgDisplay = null;

            PointAction tempPointAction = new PointAction();

            tempPointAction.Type = PointActionType.Type;

            if (PointActionType.ActionAttributes != null)
            {
                int errorNamesCount = PointActionType.ActionAttributes.Count * 2;
                if (PointActionType.NeedValueActionAttributes != null)
                {
                    errorNamesCount += PointActionType.NeedValueActionAttributes.Count * 2;
                }

                string[] errorNames = new string[errorNamesCount];


                int i = 0;
                foreach (string action in PointActionType.ActionAttributes.Keys)
                {
                    errorNames[i] = action;
                    i++;
                    errorNames[i] = "new." + action;
                    i++;
                }
                if (PointActionType.NeedValueActionAttributes != null)
                {
                    foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                    {
                        errorNames[i] = "pointtype." + action;
                        i++;
                        errorNames[i] = "pointtype.new." + action;
                        i++;
                    }
                }


                msgDisplay = CreateMessageDisplay(errorNames);



                foreach (string action in PointActionType.ActionAttributes.Keys)
                {
                    int[] tempIds = StringUtil.Split <int>(_Request.Get("id." + action, Method.Post, string.Empty));

                    List <int>      sortOrdes = new List <int>();
                    PointActionItem item;

                    foreach (int id in tempIds)
                    {
                        item = GetPointActionItem(action, id, false, msgDisplay);
                        if (item != null)
                        {
                            if (id != 0 && sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                            {
                                msgDisplay.AddError(action, id, Lang_Error.User_UserPointActionDubleSortOrderError);
                            }
                            else
                            {
                                if (id != 0)
                                {
                                    sortOrdes.Add(item.RoleSortOrder);
                                }
                                tempPointAction.PointActionItems.Add(item);
                            }
                        }
                    }

                    item = GetPointActionItem(action, 0, true, msgDisplay);
                    if (item != null)
                    {
                        if (sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                        {
                            msgDisplay.AddError("new." + action, Lang_Error.User_UserPointActionDubleSortOrderError);
                        }
                        tempPointAction.PointActionItems.Add(item);
                    }
                }
            }

            if (PointActionType.NeedValueActionAttributes != null)
            {
                if (msgDisplay == null)
                {
                    string[] errorNames = new string[PointActionType.NeedValueActionAttributes.Count * 2];

                    int i = 0;
                    foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                    {
                        errorNames[i] = "pointtype." + action;
                        i++;
                        errorNames[i] = "pointtype.new." + action;
                        i++;
                    }

                    msgDisplay = CreateMessageDisplay(errorNames);
                }

                foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                {
                    int[] tempIds = StringUtil.Split <int>(_Request.Get("pointtype.id." + action, Method.Post, string.Empty));

                    List <int> sortOrdes = new List <int>();

                    PointActionItem item;

                    foreach (int id in tempIds)
                    {
                        item = GetNeedValuePointActionItem(action, id, false, msgDisplay);
                        if (item != null)
                        {
                            //msgDisplay.HasAnyError == false 是为避免  有两个SortOrder 不为数字出错了(这时都为0)  而这里又提示重复
                            if (id != 0 && sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                            {
                                msgDisplay.AddError("pointtype." + action, id, Lang_Error.User_UserPointActionDubleSortOrderError);
                            }
                            else
                            {
                                if (id != 0)
                                {
                                    sortOrdes.Add(item.RoleSortOrder);
                                }
                                tempPointAction.PointActionItems.Add(item);
                            }
                        }
                    }

                    item = GetNeedValuePointActionItem(action, 0, true, msgDisplay);
                    if (item != null)
                    {
                        if (sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                        {
                            msgDisplay.AddError("pointtype.new." + action, Lang_Error.User_UserPointActionDubleSortOrderError);
                        }
                        tempPointAction.PointActionItems.Add(item);
                    }
                }
            }


            if (msgDisplay.HasAnyError())
            {
                return;
            }

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            tempPointAction.NodeID = NodeID;

            bool haveAdd = false;

            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && setting.PointActions[i].NodeID == NodeID)
                {
                    pointActions.Add(tempPointAction);
                    haveAdd = true;
                }
                else
                {
                    pointActions.Add(setting.PointActions[i]);
                }
            }
            if (!haveAdd)
            {
                pointActions.Add(tempPointAction);
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError <ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    BbsRouter.JumpToUrl(Request.RawUrl, "success=true");
                }
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }
コード例 #13
0
        public void ClearExperiesData()
        {
            //return;

            PointActionCollection pointActions = new PointActionCollection();

            foreach (PointAction pointAction in PointActions)
            {
                PointActionType pointActionType = PointActionManager.GetPointActionType(pointAction.Type);

                if (pointActionType == null)
                    continue;
                
                //检查nodeID
                if (pointActionType.HasNodeList && pointAction.NodeID != 0)
                {
                    bool isExperies = true;
                    foreach (NodeItem item in pointActionType.NodeItemList)
                    {
                        if (item.NodeID == pointAction.NodeID)
                        {
                            isExperies = false;
                            break;
                        }
                    }
                    if (isExperies)
                        continue;
                }

                PointAction tempPointAction = new PointAction();
                //检查roleID
                PointActionItemCollection pointActionItems = new PointActionItemCollection();

                
                foreach (PointActionItem pointActionItem in pointAction.PointActionItems)
                {
                    if (pointActionItem.RoleID == Guid.Empty || AllSettings.Current.RoleSettings.Roles.GetValue(pointActionItem.RoleID) != null)
                    {
                        pointActionItems.Add(pointActionItem);
                    }
                }

                tempPointAction.PointActionItems = pointActionItems;
                tempPointAction.NodeID = pointAction.NodeID;
                tempPointAction.Type = pointAction.Type;

                pointActions.Add(tempPointAction);

            }

            PointActionSettings setting = new PointActionSettings();
            setting.PointActions = pointActions;

            try
            {
                SettingManager.SaveSettings(setting);
            }
            catch
            { }
        }
コード例 #14
0
        public PointActionSettings()
		{
            PointActions = new PointActionCollection();

            PointAction pointAction;
            PointActionItem item;

#if !Passport

            #region  ForumPointAction
            pointAction = new PointAction();
            pointAction.Type = "ForumPointAction";

            item = new PointActionItem();
            item.Action = ForumPointType.CreateThread.ToString();
            item.PointValues = new StringList(new string[8] { "10", "1", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointType.ReplyThread.ToString();
            item.PointValues = new StringList(new string[8] { "2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointType.DeleteOwnThreads.ToString();
            item.PointValues = new StringList(new string[8] { "-10", "-1", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointType.DeleteOwnPosts.ToString();
            item.PointValues = new StringList(new string[8] { "-2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = ForumPointType.DeleteAnyThreads.ToString();
            item.PointValues = new StringList(new string[8] { "-20", "-2", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointType.DeleteAnyPosts.ToString();
            item.PointValues = new StringList(new string[8] { "-4", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointType.ShieldPost.ToString();
            item.PointValues = new StringList(new string[8] { "-20", "-2", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointType.SetThreadsValued.ToString();
            item.PointValues = new StringList(new string[8] { "20", "4", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointValueType.SellThread.ToString();
            item.MinValue = 0;
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = ForumPointValueType.SellAttachment.ToString();
            item.MinValue = 0;
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);

            #endregion

            #region  SharePointAction
            pointAction = new PointAction();
            pointAction.Type = "SharePointAction";

            item = new PointActionItem();
            item.Action = SharePointType.CreateShare.ToString();
            item.PointValues = new StringList(new string[8] { "1", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = SharePointType.CreateCollection.ToString();
            item.PointValues = new StringList(new string[8] { "1", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = SharePointType.ShareWasDeletedByAdmin.ToString();
            item.PointValues = new StringList(new string[8] { "-2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = SharePointType.ShareWasDeletedBySelf.ToString();
            item.PointValues = new StringList(new string[8] { "-1", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);
            #endregion

            #region  AlbumPointAction

            pointAction = new PointAction();
            pointAction.Type = "AlbumPointAction";

            item = new PointActionItem();
            item.Action = AlbumPointType.CreatePhoto.ToString();
            item.PointValues = new StringList(new string[8] { "2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = AlbumPointType.PhotoWasCommented.ToString();
            item.PointValues = new StringList(new string[8] { "1", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = AlbumPointType.PhotoWasDeletedBySelf.ToString();
            item.PointValues = new StringList(new string[8] { "-2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = AlbumPointType.PhotoWasDeletedByAdmin.ToString();
            item.PointValues = new StringList(new string[8] { "-4", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = AlbumPointType.AlbumWasDeletedByAdmin.ToString();
            item.PointValues = new StringList(new string[8] { "-10", "-2", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);
            #endregion

            #region  BlogPointAction

            pointAction = new PointAction();
            pointAction.Type = "BlogPointAction";

            item = new PointActionItem();
            item.Action = BlogPointType.PostArticle.ToString();
            item.PointValues = new StringList(new string[8] { "10", "1", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = BlogPointType.ArticleWasDeletedBySelf.ToString();
            item.PointValues = new StringList(new string[8] { "-10", "-1", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = BlogPointType.ArticleWasDeletedByAdmin.ToString();
            item.PointValues = new StringList(new string[8] { "-20", "-2", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = BlogPointType.ArticleWasCommented.ToString();
            item.PointValues = new StringList(new string[8] { "1", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);
            #endregion

            #region  CommentPointAction

            pointAction = new PointAction();
            pointAction.Type = "CommentPointAction";

            item = new PointActionItem();
            item.Action = CommentPointType.AddApprovedComment.ToString();
            item.PointValues = new StringList(new string[8] { "2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = CommentPointType.CommentIsApproved.ToString();
            item.PointValues = new StringList(new string[8] { "2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = CommentPointType.DeleteCommentBySelf.ToString();
            item.PointValues = new StringList(new string[8] { "-2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = CommentPointType.DeleteCommentByAdmin.ToString();
            item.PointValues = new StringList(new string[8] { "-4", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);
            #endregion

            #region  DoingPointAction

            pointAction = new PointAction();
            pointAction.Type = "DoingPointAction";



            item = new PointActionItem();
            item.Action = DoingPointType.DoingWasCommented.ToString();
            item.PointValues = new StringList(new string[8] { "1", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);


            item = new PointActionItem();
            item.Action = DoingPointType.DoingWasDeletedByAdmin.ToString();
            item.PointValues = new StringList(new string[8] { "-2", "0", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);
            #endregion

#endif

            #region  UserPointAction

            pointAction = new PointAction();
            pointAction.Type = "UserPointAction";

            item = new PointActionItem();
            item.Action = UserPoints.PerfectInfomation.ToString();
            item.PointValues = new StringList(new string[8] { "20", "2", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            item = new PointActionItem();
            item.Action = UserPoints.ValidateEmail.ToString();
            item.PointValues = new StringList(new string[8] { "10", "1", "0", "0", "0", "0", "0", "0" });
            pointAction.PointActionItems.Add(item);

            PointActions.Add(pointAction);
            #endregion
        }
コード例 #15
0
        /// <summary>
        /// 获取 某个动作 会更新的积分类型  永远不为NULL
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="type"></param>
        /// <param name="actionType"></param>
        /// <returns>永远不为NULL</returns>
        public static UserPoint GetUserPoint <T>(int userId, string type, T actionType, int nodeID, out PointAction pointAction) //where T : struct
        {
            pointAction = null;
            UserPointType pointType = UserPointType.Point1;

            pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(type, nodeID);
            if (pointAction == null)
            {
                pointAction = AllSettings.Current.PointActionSettings.PointActions.GetPointAction(type, 0);
            }

            pointType = pointAction.GetUserPointType(actionType.ToString(), userId);

            //foreach (PointAction tempPointAction in AllSettings.Current.PointActionSettings.PointActions)
            //{
            //    if (string.Compare(tempPointAction.Type, type) == 0)
            //    {
            //        pointAction = tempPointAction;
            //        pointType = tempPointAction.GetUserPointType(actionType.ToString(), userId);
            //        break;
            //    }
            //}
            //if (pointAction == null)
            //{
            //    pointAction = new PointAction();
            //}

            UserPoint userPoint = null;

            foreach (UserPoint tempUserPoint in AllSettings.Current.PointSettings.EnabledUserPoints)
            {
                if (userPoint == null)//如果 不存在指定类型的积分  则使用第一个
                {
                    userPoint = tempUserPoint;
                }
                if (tempUserPoint.Type == pointType)
                {
                    return(tempUserPoint);
                }
            }
            if (userPoint == null) //没有一个积分是启用的。。。
            {
                return(AllSettings.Current.PointSettings.UserPoints[0]);
            }
            return(userPoint);
        }
コード例 #16
0
        private void Delete()
        {
            m_Success = false;
            MessageDisplay msgDisplay = CreateMessageDisplay();

            if (PointAction.NodeID!=NodeID)
            {
                msgDisplay.AddError("当前积分继承至上级,不能进行删除操作,如要修改请修改上级积分或者把积分设为自定义");
                return;
            }

            string action = _Request.Get("actiontype", Method.Get, string.Empty);
            int sortOrder = _Request.Get<int>("sortorder", Method.Get, 0);

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            PointAction oldPointAction = setting.PointActions.GetPointAction(PointActionType.Type,NodeID);
            if (oldPointAction == null)
            {
                msgDisplay.AddError(new InvalidParamError("nodeID"));
                return;
            }


            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && oldPointAction.NodeID == setting.PointActions[i].NodeID)
                {
                    PointAction tempPointAction = new PointAction();
                    tempPointAction.Type = PointActionType.Type;

                    foreach (PointActionItem item in setting.PointActions[i].PointActionItems)
                    {
                        if (string.Compare(item.Action, action, true) == 0 && sortOrder == item.RoleSortOrder && item.RoleID != Guid.Empty)
                        { }
                        else
                        {
                            tempPointAction.PointActionItems.Add(item);
                        }
                    }
                    tempPointAction.NodeID = NodeID;

                    if (setting.PointActions[i].NodeID == NodeID)//原来就有的的设置 
                    {
                        pointActions.Add(tempPointAction);
                    }
                    else//原来没有  复制父节点设置
                    {
                        pointActions.Add(tempPointAction);//复制父节点设置
                        pointActions.Add(setting.PointActions[i]);//父节点保留
                    }
                }
                else
                    pointActions.Add(setting.PointActions[i]);
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError<ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    string urlRef = Request.UrlReferrer.ToString();
                    string query;
                    int index = urlRef.IndexOf('?');
                    if (index > 0)
                        query = urlRef.Substring(index + 1);
                    else
                        query = string.Empty;

                    string url = Request.RawUrl;
                    if (url.IndexOf('?') > -1)
                        url = url.Substring(0, url.IndexOf('?'));

                    url = url + "?" + query;

                    BbsRouter.JumpToUrl(url, "success=true");
                }
                //else
                //    _Request.Clear(Method.Post);
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }

        }
コード例 #17
0
        private void Delete()
        {
            m_Success = false;
            MessageDisplay msgDisplay = CreateMessageDisplay();

            if (PointAction.NodeID != NodeID)
            {
                msgDisplay.AddError("当前积分继承至上级,不能进行删除操作,如要修改请修改上级积分或者把积分设为自定义");
                return;
            }

            string action    = _Request.Get("actiontype", Method.Get, string.Empty);
            int    sortOrder = _Request.Get <int>("sortorder", Method.Get, 0);

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            PointAction oldPointAction = setting.PointActions.GetPointAction(PointActionType.Type, NodeID);

            if (oldPointAction == null)
            {
                msgDisplay.AddError(new InvalidParamError("nodeID"));
                return;
            }


            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && oldPointAction.NodeID == setting.PointActions[i].NodeID)
                {
                    PointAction tempPointAction = new PointAction();
                    tempPointAction.Type = PointActionType.Type;

                    foreach (PointActionItem item in setting.PointActions[i].PointActionItems)
                    {
                        if (string.Compare(item.Action, action, true) == 0 && sortOrder == item.RoleSortOrder && item.RoleID != Guid.Empty)
                        {
                        }
                        else
                        {
                            tempPointAction.PointActionItems.Add(item);
                        }
                    }
                    tempPointAction.NodeID = NodeID;

                    if (setting.PointActions[i].NodeID == NodeID)//原来就有的的设置
                    {
                        pointActions.Add(tempPointAction);
                    }
                    else//原来没有  复制父节点设置
                    {
                        pointActions.Add(tempPointAction);//复制父节点设置
                        pointActions.Add(setting.PointActions[i]);//父节点保留
                    }
                }
                else
                {
                    pointActions.Add(setting.PointActions[i]);
                }
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError <ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    string urlRef = Request.UrlReferrer.ToString();
                    string query;
                    int    index = urlRef.IndexOf('?');
                    if (index > 0)
                    {
                        query = urlRef.Substring(index + 1);
                    }
                    else
                    {
                        query = string.Empty;
                    }

                    string url = Request.RawUrl;
                    if (url.IndexOf('?') > -1)
                    {
                        url = url.Substring(0, url.IndexOf('?'));
                    }

                    url = url + "?" + query;

                    BbsRouter.JumpToUrl(url, "success=true");
                }
                //else
                //    _Request.Clear(Method.Post);
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }
コード例 #18
0
        private void Delete()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay();

            string action    = _Request.Get("actiontype", Method.Get, string.Empty);
            int    sortOrder = _Request.Get <int>("sortorder", Method.Get, 0);

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            PointAction oldPointAction = setting.PointActions.GetPointAction(PointActionType.Type, NodeID);

            if (oldPointAction == null)
            {
                msgDisplay.AddError(new InvalidParamError("nodeID"));
                return;
            }


            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && oldPointAction.NodeID == setting.PointActions[i].NodeID)
                {
                    PointAction tempPointAction = new PointAction();
                    tempPointAction.Type = PointActionType.Type;

                    foreach (PointActionItem item in setting.PointActions[i].PointActionItems)
                    {
                        if (string.Compare(item.Action, action, true) == 0 && sortOrder == item.RoleSortOrder && item.RoleID != Guid.Empty)
                        {
                        }
                        else
                        {
                            tempPointAction.PointActionItems.Add(item);
                        }
                    }
                    tempPointAction.NodeID = NodeID;

                    if (setting.PointActions[i].NodeID == NodeID)//原来就有的的设置
                    {
                        pointActions.Add(tempPointAction);
                    }
                    else//原来没有  复制父节点设置
                    {
                        pointActions.Add(tempPointAction);//复制父节点设置
                        pointActions.Add(setting.PointActions[i]);//父节点保留
                    }
                }
                else
                {
                    pointActions.Add(setting.PointActions[i]);
                }
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError <ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                {
                    _Request.Clear(Method.Post);
                }
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }
コード例 #19
0
        private void Delete()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay();

            string action = _Request.Get("actiontype", Method.Get, string.Empty);
            int sortOrder = _Request.Get<int>("sortorder", Method.Get, 0);

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            PointAction oldPointAction = setting.PointActions.GetPointAction(PointActionType.Type,NodeID);
            if (oldPointAction == null)
            {
                msgDisplay.AddError(new InvalidParamError("nodeID"));
                return;
            }


            for (int i = 0; i < setting.PointActions.Count; i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && oldPointAction.NodeID == setting.PointActions[i].NodeID)
                {
                    PointAction tempPointAction = new PointAction();
                    tempPointAction.Type = PointActionType.Type;

                    foreach (PointActionItem item in setting.PointActions[i].PointActionItems)
                    {
                        if (string.Compare(item.Action, action, true) == 0 && sortOrder == item.RoleSortOrder && item.RoleID != Guid.Empty)
                        { }
                        else
                        {
                            tempPointAction.PointActionItems.Add(item);
                        }
                    }
                    tempPointAction.NodeID = NodeID;

                    if (setting.PointActions[i].NodeID == NodeID)//原来就有的的设置 
                    {
                        pointActions.Add(tempPointAction);
                    }
                    else//原来没有  复制父节点设置
                    {
                        pointActions.Add(tempPointAction);//复制父节点设置
                        pointActions.Add(setting.PointActions[i]);//父节点保留
                    }
                }
                else
                    pointActions.Add(setting.PointActions[i]);
            }

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError<ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                    _Request.Clear(Method.Post);
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }

        }
コード例 #20
0
        private void SaveSettings()
        {
            MessageDisplay msgDisplay = CreateMessageDisplay();

            if (PointActionType == null)
            {
                msgDisplay.AddError(new InvalidParamError("type").Message);
                return;
            }

            msgDisplay = null;

            PointAction tempPointAction = new PointAction();
            tempPointAction.Type = PointActionType.Type;

            if (PointActionType.ActionAttributes != null)
            {
                int errorNamesCount = PointActionType.ActionAttributes.Count * 2;
                if (PointActionType.NeedValueActionAttributes != null)
                {
                    errorNamesCount += PointActionType.NeedValueActionAttributes.Count * 2;
                }

                string[] errorNames = new string[errorNamesCount];


                int i = 0;
                foreach (string action in PointActionType.ActionAttributes.Keys)
                {
                    errorNames[i] = action;
                    i++;
                    errorNames[i] = "new."+action;
                    i++;
                }
                if (PointActionType.NeedValueActionAttributes != null)
                {
                    foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                    {
                        errorNames[i] = "pointtype." + action;
                        i++;
                        errorNames[i] = "pointtype.new." + action;
                        i++;
                    }
                }


                msgDisplay = CreateMessageDisplay(errorNames);


                

                foreach (string action in PointActionType.ActionAttributes.Keys)
                {
                    int[] tempIds = StringUtil.Split<int>(_Request.Get("id." + action, Method.Post, string.Empty));

                    List<int> sortOrdes = new List<int>();
                    PointActionItem item;

                    foreach (int id in tempIds)
                    {
                        item = GetPointActionItem(action, id, false, msgDisplay);
                        if (item != null)
                        {
                            if (id != 0 && sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                            {
                                msgDisplay.AddError(action, id, Lang_Error.User_UserPointActionDubleSortOrderError);
                            }
                            else
                            {
                                if (id != 0)
                                {
                                    sortOrdes.Add(item.RoleSortOrder);
                                }
                                tempPointAction.PointActionItems.Add(item);
                            }
                        }
                    }

                    item = GetPointActionItem(action, 0, true, msgDisplay);
                    if (item != null)
                    {
                        if (sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                        {
                            msgDisplay.AddError("new." + action, Lang_Error.User_UserPointActionDubleSortOrderError);
                        }
                        tempPointAction.PointActionItems.Add(item);
                    }
                }

            }

            if (PointActionType.NeedValueActionAttributes != null)
            {
                if (msgDisplay == null)
                {

                    string[] errorNames = new string[PointActionType.NeedValueActionAttributes.Count * 2];

                    int i = 0;
                    foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                    {
                        errorNames[i] = "pointtype." + action;
                        i++;
                        errorNames[i] = "pointtype.new." + action;
                        i++;
                    }

                    msgDisplay = CreateMessageDisplay(errorNames);
                }

                foreach (string action in PointActionType.NeedValueActionAttributes.Keys)
                {
                    int[] tempIds = StringUtil.Split<int>(_Request.Get("pointtype.id." + action, Method.Post, string.Empty));

                    List<int> sortOrdes = new List<int>();

                    PointActionItem item;

                    foreach (int id in tempIds)
                    {
                        item = GetNeedValuePointActionItem(action, id, false, msgDisplay);
                        if (item != null)
                        {
                            //msgDisplay.HasAnyError == false 是为避免  有两个SortOrder 不为数字出错了(这时都为0)  而这里又提示重复
                            if (id != 0 && sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                            {
                                msgDisplay.AddError("pointtype." + action, id, Lang_Error.User_UserPointActionDubleSortOrderError);
                            }
                            else
                            {
                                if (id != 0)
                                    sortOrdes.Add(item.RoleSortOrder);
                                tempPointAction.PointActionItems.Add(item);
                            }
                        }
                    }

                    item = GetNeedValuePointActionItem(action, 0, true, msgDisplay);
                    if (item != null)
                    {
                        if (sortOrdes.Contains(item.RoleSortOrder) && msgDisplay.HasAnyError() == false)
                        {
                            msgDisplay.AddError("pointtype.new." + action, Lang_Error.User_UserPointActionDubleSortOrderError);
                        }
                        tempPointAction.PointActionItems.Add(item);
                    }
                }
            }


            if (msgDisplay.HasAnyError())
                return;

            PointActionSettings setting = (PointActionSettings)AllSettings.Current.PointActionSettings.Clone();

            PointActionCollection pointActions = new PointActionCollection();

            tempPointAction.NodeID = NodeID;

            bool haveAdd = false;
            for (int i = 0; i < setting.PointActions.Count;i++)
            {
                if (string.Compare(setting.PointActions[i].Type, PointActionType.Type, true) == 0 && setting.PointActions[i].NodeID == NodeID)
                {
                    pointActions.Add(tempPointAction);
                    haveAdd = true;
                }
                else
                    pointActions.Add(setting.PointActions[i]);
            }
            if (!haveAdd)
                pointActions.Add(tempPointAction);

            setting.PointActions = pointActions;
            try
            {
                if (!SettingManager.SaveSettings(setting))
                {
                    CatchError<ErrorInfo>(delegate(ErrorInfo error)
                    {
                        msgDisplay.AddError(error);
                    });
                }
                else
                    _Request.Clear(Method.Post);
            }
            catch (Exception ex)
            {
                msgDisplay.AddError(ex.Message);
            }
        }