//-------------------------------------------------------------------------------------------------- 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); }
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); }
//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); }
//-------------------------------------------------------------------------------------------------- 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; } }
/// <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); }
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; }
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); }
//-------------------------------------------------------------------------------------------------- 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); }
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)); }
/* * 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); } }
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); }
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); } }
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 { } }
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 }
/// <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); }
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); } }
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); } }
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); } }
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); } }
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); } }