public void UpdateStatus(SqlDatabaseClient MySqlClient, ModerationTicketStatus NewStatus) { mStatus = NewStatus; MySqlClient.SetParameter("id", mId); MySqlClient.SetParameter("status", (int)NewStatus); MySqlClient.ExecuteNonQuery("UPDATE moderation_tickets SET status = @status WHERE id = @id LIMIT 1"); }
public ModerationTicket(uint Id, uint Category, ModerationTicketStatus Status, uint ReportedUserId, uint ReporteeUserId, uint ModeratorUserId, uint RoomId, double Timestamp, string Message) { mId = Id; mCategoryId = Category; mStatus = Status; mReportedUserId = ReportedUserId; mReporteeUserId = ReporteeUserId; mModeratorUserId = ModeratorUserId; mRoomId = RoomId; mCreatedTimestamp = Timestamp; mTicketMessage = Message; }
public void AssignTo(SqlDatabaseClient MySqlClient, uint ModeratorId) { if (mStatus > ModerationTicketStatus.Assigned) { return; } mModeratorUserId = ModeratorId; mStatus = (ModeratorId > 0 ? ModerationTicketStatus.Assigned : ModerationTicketStatus.OpenTicket); MySqlClient.SetParameter("id", mId); MySqlClient.SetParameter("status", (ModeratorId > 0 ? (int)ModerationTicketStatus.Assigned : (int)ModerationTicketStatus.OpenTicket).ToString()); MySqlClient.SetParameter("moderatorid", ModeratorId); MySqlClient.ExecuteNonQuery("UPDATE moderation_tickets SET status = @status, moderator_user_id = @moderatorid WHERE id = @id LIMIT 1"); }
private static void CloseTicket(Session Session, ClientMessage Message) { if (!Session.HasRight("moderation_tickets")) { return; } using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { int ResultCode = Message.PopWiredInt32(); int Unknown1 = Message.PopWiredInt32(); lock (mSyncRoot) { ModerationTicket Ticket = GetTicket(Message.PopWiredUInt32()); if (Ticket == null || Ticket.Status != ModerationTicketStatus.Assigned || Ticket.ModeratorUserId != Session.CharacterId) { return; } ModerationTicketStatus ResultStatus = ModerationTicketStatus.Resolved; Session TargetSession = SessionManager.GetSessionByCharacterId(Ticket.ReporteeUserId); switch (ResultCode) { case 1: ResultStatus = ModerationTicketStatus.ClosedInvalid; break; case 2: ResultStatus = ModerationTicketStatus.ClosedAbusive; break; } Ticket.UpdateStatus(MySqlClient, ResultStatus); SendDataToAllModerators(ModerationTicketComposer.Compose(Ticket)); if (TargetSession != null && !Ticket.ModeratorResponded) { TargetSession.SendData(HelpCfhClosedResultComposer.Compose(ResultCode)); } if (ResultStatus == ModerationTicketStatus.ClosedAbusive) { CharacterInfo TargetInfo = TargetSession == null?CharacterInfoLoader.GetCharacterInfo(MySqlClient, Ticket.ReporteeUserId) : TargetSession.CharacterInfo; if (TargetInfo != null) { TargetInfo.ModerationTicketsCooldownSeconds = 600; TargetInfo.ModerationTicketsAbusive++; // Sync our new statistics manually if this will not happen by session closure if (TargetSession == null) { TargetInfo.SynchronizeStatistics(MySqlClient); } } } } } }