TrinityCore
SupportMgr.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef SupportMgr_h__
19#define SupportMgr_h__
20
21#include "TicketPackets.h"
22#include <map>
23
24class ChatHandler;
25class Field;
26class Player;
27
28enum class ReportType : int32
29{
30 Chat = 0,
31 InWorld = 1,
36 ClubMember = 6,
37 GroupMember = 7,
38 Friend = 8,
39 Pet = 9,
40 BattlePet = 10,
41 Calendar = 11,
42 Mail = 12,
43 PvP = 13,
44};
45
47{
50 Cheating = 2,
52};
53
55{
56 TextChat = 0x0001,
57 Boosting = 0x0002,
58 Spam = 0x0004,
59 Afk = 0x0008,
60 IntentionallyFeeding = 0x0010,
61 BlockingProgress = 0x0020,
62 Hacking = 0x0040,
63 Botting = 0x0080,
64 Advertisement = 0x0100,
65 BTag = 0x0200,
66 GroupName = 0x0400,
67 CharacterName = 0x0800,
68 GuildName = 0x1000,
69 Description = 0x2000,
70 Name = 0x4000,
71};
72
73// from blizzard lua
75{
78};
79
81{
85};
86
88
90{
91public:
92 Ticket();
93 Ticket(Player* player);
94 virtual ~Ticket();
95
96 bool IsClosed() const { return !_closedBy.IsEmpty(); }
97 bool IsFromPlayer(ObjectGuid guid) const { return guid == _playerGuid; }
98 bool IsAssigned() const { return !_assignedTo.IsEmpty(); }
99 bool IsAssignedTo(ObjectGuid guid) const { return guid == _assignedTo; }
100 bool IsAssignedNotTo(ObjectGuid guid) const { return IsAssigned() && !IsAssignedTo(guid); }
101
102 uint32 GetId() const { return _id; }
103 ObjectGuid GetPlayerGuid() const { return _playerGuid; }
104 Player* GetPlayer() const;
105 std::string GetPlayerName() const;
106 Player* GetAssignedPlayer() const;
107 ObjectGuid GetAssignedToGUID() const { return _assignedTo; }
108 std::string GetAssignedToName() const;
109 std::string const& GetComment() const { return _comment; }
110
111 virtual void SetAssignedTo(ObjectGuid guid, bool /*isAdmin*/ = false) { _assignedTo = guid; }
112 virtual void SetUnassigned() { _assignedTo.Clear(); }
113 void SetClosedBy(ObjectGuid value) { _closedBy = value; }
114 void SetComment(std::string const& comment) { _comment = comment; }
115 void SetPosition(uint32 mapId, Position const& pos)
116 {
117 _mapId = mapId;
118 _pos = pos;
119 }
120 void SetFacing(float facing) { _pos.SetOrientation(facing); }
121
122 virtual void LoadFromDB(Field* fields) = 0;
123 virtual void SaveToDB() const = 0;
124 virtual void DeleteFromDB() = 0;
125
126 void TeleportTo(Player* player) const;
127
128 virtual std::string FormatViewMessageString(ChatHandler& handler, bool detailed = false) const = 0;
129 virtual std::string FormatViewMessageString(ChatHandler& handler, const char* szClosedName, const char* szAssignedToName, const char* szUnassignedName, const char* szDeletedName) const;
130
131protected:
137 ObjectGuid _closedBy; // 0 = Open, -1 = Console, playerGuid = player abandoned ticket, other = GM who closed it.
139 std::string _comment;
140};
141
143{
144public:
145 BugTicket();
146 BugTicket(Player* player);
147 ~BugTicket();
148
149 std::string const& GetNote() const { return _note; }
150
151 void SetNote(std::string const& note) { _note = note; }
152
153 void LoadFromDB(Field* fields) override;
154 void SaveToDB() const override;
155 void DeleteFromDB() override;
156
158 std::string FormatViewMessageString(ChatHandler& handler, bool detailed = false) const override;
159
160private:
161 std::string _note;
162};
163
165{
166public:
168 ComplaintTicket(Player* player);
170
171 ObjectGuid GetTargetCharacterGuid() const { return _targetCharacterGuid; }
172 ReportType GetReportType() const { return _reportType; }
173 ReportMajorCategory GetMajorCategory() const { return _majorCategory; }
174 ReportMinorCategory GetMinorCategoryFlags() const { return _minorCategoryFlags; }
175 std::string const& GetNote() const { return _note; }
176
177 void SetTargetCharacterGuid(ObjectGuid targetCharacterGuid)
178 {
179 _targetCharacterGuid = targetCharacterGuid;
180 }
181 void SetReportType(ReportType reportType) { _reportType = reportType; }
182 void SetMajorCategory(ReportMajorCategory majorCategory) { _majorCategory = majorCategory; }
183 void SetMinorCategoryFlags(ReportMinorCategory minorCategoryFlags) { _minorCategoryFlags = minorCategoryFlags; }
184 void SetChatLog(ChatLog const& log) { _chatLog = log; }
185 void SetNote(std::string const& note) { _note = note; }
186
187 void LoadFromDB(Field* fields) override;
188 void LoadChatLineFromDB(Field* fields);
189 void SaveToDB() const override;
190 void DeleteFromDB() override;
191
193 std::string FormatViewMessageString(ChatHandler& handler, bool detailed = false) const override;
194
195private:
201 std::string _note;
202};
203
205{
206public:
208 SuggestionTicket(Player* player);
210
211 std::string const& GetNote() const { return _note; }
212 void SetNote(std::string const& note) { _note = note; }
213
214 void LoadFromDB(Field* fields) override;
215 void SaveToDB() const override;
216 void DeleteFromDB() override;
217
219 std::string FormatViewMessageString(ChatHandler& handler, bool detailed = false) const override;
220
221private:
222 std::string _note;
223};
224
225typedef std::map<uint32, BugTicket*> BugTicketList;
226typedef std::map<uint32, ComplaintTicket*> ComplaintTicketList;
227typedef std::map<uint32, SuggestionTicket*> SuggestionTicketList;
228
230{
231private:
232 SupportMgr();
233 ~SupportMgr();
234
235public:
236 static SupportMgr* instance();
237
238 template<typename T>
239 T* GetTicket(uint32 ticketId);
240
241 ComplaintTicketList GetComplaintsByPlayerGuid(ObjectGuid playerGuid) const;
242
243 void Initialize();
244
245 bool GetSupportSystemStatus() const { return _supportSystemStatus; }
246 bool GetTicketSystemStatus() const { return _supportSystemStatus && _ticketSystemStatus; }
247 bool GetBugSystemStatus() const { return _supportSystemStatus && _bugSystemStatus; }
248 bool GetComplaintSystemStatus() const { return _supportSystemStatus && _complaintSystemStatus; }
249 bool GetSuggestionSystemStatus() const { return _supportSystemStatus && _suggestionSystemStatus; }
250 uint64 GetLastChange() const { return _lastChange; }
251 template<typename T>
253
254 void SetSupportSystemStatus(bool status) { _supportSystemStatus = status; }
255 void SetTicketSystemStatus(bool status) { _ticketSystemStatus = status; }
256 void SetBugSystemStatus(bool status) { _bugSystemStatus = status; }
257 void SetComplaintSystemStatus(bool status) { _complaintSystemStatus = status; }
258 void SetSuggestionSystemStatus(bool status) { _suggestionSystemStatus = status; }
259
260 void LoadBugTickets();
261 void LoadComplaintTickets();
262 void LoadSuggestionTickets();
263
264 void AddTicket(BugTicket* ticket);
265 void AddTicket(ComplaintTicket* ticket);
266 void AddTicket(SuggestionTicket* ticket);
267
268 template<typename T>
269 void RemoveTicket(uint32 ticketId);
270
271 template<typename T>
272 void CloseTicket(uint32 ticketId, ObjectGuid closedBy);
273
274 template<typename T>
276
277 template<typename T>
278 void ShowList(ChatHandler& handler) const;
279
280 template<typename T>
281 void ShowList(ChatHandler& handler, bool onlineOnly) const;
282
283 template<typename T>
284 void ShowClosedList(ChatHandler& handler) const;
285
286 void UpdateLastChange();
287
288 uint32 GenerateBugId() { return ++_lastBugId; }
289 uint32 GenerateComplaintId() { return ++_lastComplaintId; }
290 uint32 GenerateSuggestionId() { return ++_lastSuggestionId; }
291
292private:
308};
309
310#define sSupportMgr SupportMgr::instance()
311
312#endif // SupportMgr_h__
#define TC_GAME_API
Definition: Define.h:123
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint16_t uint16
Definition: Define.h:143
uint32_t uint32
Definition: Define.h:142
static void SaveToDB(QuestPool const &pool, CharacterDatabaseTransaction trans)
Definition: QuestPools.cpp:50
ReportMinorCategory
Definition: SupportMgr.h:55
SupportSpamType
Definition: SupportMgr.h:81
@ SUPPORT_SPAM_TYPE_CHAT
Definition: SupportMgr.h:83
@ SUPPORT_SPAM_TYPE_CALENDAR
Definition: SupportMgr.h:84
@ SUPPORT_SPAM_TYPE_MAIL
Definition: SupportMgr.h:82
GMTicketSystemStatus
Definition: SupportMgr.h:75
@ GMTICKET_QUEUE_STATUS_ENABLED
Definition: SupportMgr.h:77
@ GMTICKET_QUEUE_STATUS_DISABLED
Definition: SupportMgr.h:76
std::map< uint32, ComplaintTicket * > ComplaintTicketList
Definition: SupportMgr.h:226
ReportType
Definition: SupportMgr.h:29
@ GroupFinderApplicant
@ GroupFinderPosting
@ ClubFinderApplicant
std::map< uint32, SuggestionTicket * > SuggestionTicketList
Definition: SupportMgr.h:227
ReportMajorCategory
Definition: SupportMgr.h:47
std::map< uint32, BugTicket * > BugTicketList
Definition: SupportMgr.h:225
void SetNote(std::string const &note)
Definition: SupportMgr.h:151
std::string const & GetNote() const
Definition: SupportMgr.h:149
std::string _note
Definition: SupportMgr.h:161
void SetTargetCharacterGuid(ObjectGuid targetCharacterGuid)
Definition: SupportMgr.h:177
ReportMajorCategory _majorCategory
Definition: SupportMgr.h:198
ObjectGuid GetTargetCharacterGuid() const
Definition: SupportMgr.h:171
void SetNote(std::string const &note)
Definition: SupportMgr.h:185
ReportMinorCategory _minorCategoryFlags
Definition: SupportMgr.h:199
std::string const & GetNote() const
Definition: SupportMgr.h:175
void SetMinorCategoryFlags(ReportMinorCategory minorCategoryFlags)
Definition: SupportMgr.h:183
ReportType GetReportType() const
Definition: SupportMgr.h:172
ReportType _reportType
Definition: SupportMgr.h:197
ReportMinorCategory GetMinorCategoryFlags() const
Definition: SupportMgr.h:174
std::string _note
Definition: SupportMgr.h:201
ObjectGuid _targetCharacterGuid
Definition: SupportMgr.h:196
ChatLog _chatLog
Definition: SupportMgr.h:200
ReportMajorCategory GetMajorCategory() const
Definition: SupportMgr.h:173
void SetMajorCategory(ReportMajorCategory majorCategory)
Definition: SupportMgr.h:182
void SetChatLog(ChatLog const &log)
Definition: SupportMgr.h:184
void SetReportType(ReportType reportType)
Definition: SupportMgr.h:181
Class used to access individual fields of database query result.
Definition: Field.h:90
Definition: Pet.h:40
void SetNote(std::string const &note)
Definition: SupportMgr.h:212
std::string _note
Definition: SupportMgr.h:222
std::string const & GetNote() const
Definition: SupportMgr.h:211
void ShowList(ChatHandler &handler) const
bool _suggestionSystemStatus
Definition: SupportMgr.h:297
void ResetTickets()
uint32 _openBugTicketCount
Definition: SupportMgr.h:305
uint32 _openSuggestionTicketCount
Definition: SupportMgr.h:307
bool GetComplaintSystemStatus() const
Definition: SupportMgr.h:248
uint32 _lastComplaintId
Definition: SupportMgr.h:302
void CloseTicket(uint32 ticketId, ObjectGuid closedBy)
bool GetTicketSystemStatus() const
Definition: SupportMgr.h:246
void ShowClosedList(ChatHandler &handler) const
uint64 _lastChange
Definition: SupportMgr.h:304
ComplaintTicketList _complaintTicketList
Definition: SupportMgr.h:299
uint32 GetOpenTicketCount() const
bool GetBugSystemStatus() const
Definition: SupportMgr.h:247
T * GetTicket(uint32 ticketId)
bool _ticketSystemStatus
Definition: SupportMgr.h:294
SuggestionTicketList _suggestionTicketList
Definition: SupportMgr.h:300
void SetBugSystemStatus(bool status)
Definition: SupportMgr.h:256
bool GetSuggestionSystemStatus() const
Definition: SupportMgr.h:249
void SetSuggestionSystemStatus(bool status)
Definition: SupportMgr.h:258
void RemoveTicket(uint32 ticketId)
void SetTicketSystemStatus(bool status)
Definition: SupportMgr.h:255
bool _complaintSystemStatus
Definition: SupportMgr.h:296
uint32 _lastBugId
Definition: SupportMgr.h:301
bool _bugSystemStatus
Definition: SupportMgr.h:295
uint32 _openComplaintTicketCount
Definition: SupportMgr.h:306
bool _supportSystemStatus
Definition: SupportMgr.h:293
uint32 GenerateComplaintId()
Definition: SupportMgr.h:289
uint32 GenerateBugId()
Definition: SupportMgr.h:288
void SetSupportSystemStatus(bool status)
Definition: SupportMgr.h:254
uint64 GetLastChange() const
Definition: SupportMgr.h:250
uint32 GenerateSuggestionId()
Definition: SupportMgr.h:290
bool GetSupportSystemStatus() const
Definition: SupportMgr.h:245
uint32 _lastSuggestionId
Definition: SupportMgr.h:303
void ShowList(ChatHandler &handler, bool onlineOnly) const
void SetComplaintSystemStatus(bool status)
Definition: SupportMgr.h:257
BugTicketList _bugTicketList
Definition: SupportMgr.h:298
bool IsClosed() const
Definition: SupportMgr.h:96
uint16 _mapId
Definition: SupportMgr.h:134
ObjectGuid GetAssignedToGUID() const
Definition: SupportMgr.h:107
std::string _comment
Definition: SupportMgr.h:139
virtual void SetUnassigned()
Definition: SupportMgr.h:112
uint32 GetId() const
Definition: SupportMgr.h:102
bool IsAssigned() const
Definition: SupportMgr.h:98
bool IsAssignedTo(ObjectGuid guid) const
Definition: SupportMgr.h:99
bool IsFromPlayer(ObjectGuid guid) const
Definition: SupportMgr.h:97
uint64 _createTime
Definition: SupportMgr.h:136
void SetClosedBy(ObjectGuid value)
Definition: SupportMgr.h:113
ObjectGuid _closedBy
Definition: SupportMgr.h:137
void SetFacing(float facing)
Definition: SupportMgr.h:120
uint32 _id
Definition: SupportMgr.h:132
void SetComment(std::string const &comment)
Definition: SupportMgr.h:114
virtual void LoadFromDB(Field *fields)=0
virtual void SetAssignedTo(ObjectGuid guid, bool=false)
Definition: SupportMgr.h:111
Position _pos
Definition: SupportMgr.h:135
std::string const & GetComment() const
Definition: SupportMgr.h:109
bool IsAssignedNotTo(ObjectGuid guid) const
Definition: SupportMgr.h:100
void SetPosition(uint32 mapId, Position const &pos)
Definition: SupportMgr.h:115
virtual std::string FormatViewMessageString(ChatHandler &handler, bool detailed=false) const =0
ObjectGuid GetPlayerGuid() const
Definition: SupportMgr.h:103
ObjectGuid _playerGuid
Definition: SupportMgr.h:133
virtual void SaveToDB() const =0
ObjectGuid _assignedTo
Definition: SupportMgr.h:138
virtual void DeleteFromDB()=0
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
Definition: Mail.h:175