AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
ticket_commandscript Class Reference
Inheritance diagram for ticket_commandscript:
CommandScript ScriptObject

Public Member Functions

 ticket_commandscript ()
 
ChatCommandTable GetCommands () const override
 
virtual std::vector< Acore::ChatCommands::ChatCommandBuilderGetCommands () const =0
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 

Static Public Member Functions

static bool HandleGMTicketAssignToCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketCloseByIdCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketCommentCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketListClosedCommand (ChatHandler *handler, char const *)
 
static bool HandleGMTicketCompleteCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketDeleteByIdCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketEscalateCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketListEscalatedCommand (ChatHandler *handler, char const *)
 
static bool HandleGMTicketListCommand (ChatHandler *handler, char const *)
 
static bool HandleGMTicketListOnlineCommand (ChatHandler *handler, char const *)
 
static bool HandleGMTicketResetCommand (ChatHandler *handler, char const *)
 
static bool HandleToggleGMTicketSystem (ChatHandler *handler, char const *)
 
static bool HandleGMTicketUnAssignCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketGetByIdCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketGetByNameCommand (ChatHandler *handler, char const *args)
 
static bool _HandleGMTicketResponseAppendCommand (char const *args, bool newLine, ChatHandler *handler)
 
static bool HandleGMTicketResponseAppendCommand (ChatHandler *handler, char const *args)
 
static bool HandleGMTicketResponseAppendLnCommand (ChatHandler *handler, char const *args)
 

Additional Inherited Members

- Protected Member Functions inherited from CommandScript
 CommandScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ ticket_commandscript()

ticket_commandscript::ticket_commandscript ( )
inline
44: CommandScript("ticket_commandscript") { }
Definition: ScriptMgr.h:850

Member Function Documentation

◆ _HandleGMTicketResponseAppendCommand()

static bool ticket_commandscript::_HandleGMTicketResponseAppendCommand ( char const *  args,
bool  newLine,
ChatHandler handler 
)
inlinestatic

Console excluded

493 {
494 if (!*args)
495 return false;
496
497 char* ticketIdStr = strtok((char*)args, " ");
498 uint32 ticketId = atoi(ticketIdStr);
499
500 char* response = strtok(nullptr, "\n");
501 if (!response)
502 return false;
503
504 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
505 if (!ticket || ticket->IsClosed())
506 {
508 return true;
509 }
510
511 // Cannot add response to ticket, assigned to someone else
513 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
514 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
515 {
517 return true;
518 }
519
521 ticket->AppendResponse(response);
522 if (newLine)
523 ticket->AppendResponse("\n");
524 ticket->SaveToDB(trans);
525
526 return true;
527 }
std::uint32_t uint32
Definition: Define.h:108
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition: DatabaseEnvFwd.h:70
@ LANG_COMMAND_TICKETALREADYASSIGNED
Definition: Language.h:1027
@ LANG_COMMAND_TICKETNOTEXIST
Definition: Language.h:1025
#define sTicketMgr
Definition: TicketMgr.h:258
WorldSession * GetSession()
Definition: Chat.h:122
void PSendSysMessage(char const *fmt, Args &&... args)
Definition: Chat.h:60
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
Definition: Player.h:1046
Player * GetPlayer() const
Definition: WorldSession.h:361
Definition: TicketMgr.h:88
bool IsClosed() const
Definition: TicketMgr.h:94
void SaveToDB(CharacterDatabaseTransaction trans) const
Definition: TicketMgr.cpp:78
void AppendResponse(std::string const &response)
Definition: TicketMgr.h:140
uint32 GetId() const
Definition: TicketMgr.h:101
bool IsAssignedNotTo(ObjectGuid guid) const
Definition: TicketMgr.h:99

References GmTicket::AppendResponse(), Object::GetGUID(), GmTicket::GetId(), WorldSession::GetPlayer(), ChatHandler::GetSession(), GmTicket::IsAssignedNotTo(), GmTicket::IsClosed(), LANG_COMMAND_TICKETALREADYASSIGNED, LANG_COMMAND_TICKETNOTEXIST, ChatHandler::PSendSysMessage(), GmTicket::SaveToDB(), and sTicketMgr.

Referenced by HandleGMTicketResponseAppendCommand(), and HandleGMTicketResponseAppendLnCommand().

◆ GetCommands()

ChatCommandTable ticket_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

47 {
48 static ChatCommandTable ticketResponseCommandTable =
49 {
52 };
53 static ChatCommandTable ticketCommandTable =
54 {
55 { "assign", SEC_GAMEMASTER, true, &HandleGMTicketAssignToCommand, "" },
56 { "close", SEC_GAMEMASTER, true, &HandleGMTicketCloseByIdCommand, "" },
57 { "closedlist", SEC_GAMEMASTER, true, &HandleGMTicketListClosedCommand, "" },
58 { "comment", SEC_GAMEMASTER, true, &HandleGMTicketCommentCommand, "" },
59 { "complete", SEC_GAMEMASTER, true, &HandleGMTicketCompleteCommand, "" },
60 { "delete", SEC_ADMINISTRATOR, true, &HandleGMTicketDeleteByIdCommand, "" },
61 { "escalate", SEC_GAMEMASTER, true, &HandleGMTicketEscalateCommand, "" },
62 { "escalatedlist", SEC_GAMEMASTER, true, &HandleGMTicketListEscalatedCommand, "" },
63 { "list", SEC_GAMEMASTER, true, &HandleGMTicketListCommand, "" },
64 { "onlinelist", SEC_GAMEMASTER, true, &HandleGMTicketListOnlineCommand, "" },
65 { "reset", SEC_CONSOLE, true, &HandleGMTicketResetCommand, "" },
66 { "response", SEC_GAMEMASTER, true, nullptr, "", ticketResponseCommandTable },
67 { "togglesystem", SEC_ADMINISTRATOR, true, &HandleToggleGMTicketSystem, "" },
68 { "unassign", SEC_GAMEMASTER, true, &HandleGMTicketUnAssignCommand, "" },
69 { "viewid", SEC_GAMEMASTER, true, &HandleGMTicketGetByIdCommand, "" },
70 { "viewname", SEC_GAMEMASTER, true, &HandleGMTicketGetByNameCommand, "" }
71 };
72 static ChatCommandTable commandTable =
73 {
74 { "ticket", SEC_GAMEMASTER, false, nullptr, "", ticketCommandTable }
75 };
76 return commandTable;
77 }
@ SEC_ADMINISTRATOR
Definition: Common.h:69
@ SEC_GAMEMASTER
Definition: Common.h:68
@ SEC_CONSOLE
Definition: Common.h:70
std::vector< ChatCommandBuilder > ChatCommandTable
Definition: ChatCommand.h:50
static bool HandleGMTicketResponseAppendLnCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:534
static bool HandleGMTicketListOnlineCommand(ChatHandler *handler, char const *)
Definition: cs_ticket.cpp:345
static bool HandleGMTicketResetCommand(ChatHandler *handler, char const *)
Definition: cs_ticket.cpp:351
static bool HandleGMTicketGetByNameCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:449
static bool HandleGMTicketCompleteCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:227
static bool HandleGMTicketListCommand(ChatHandler *handler, char const *)
Definition: cs_ticket.cpp:339
static bool HandleGMTicketDeleteByIdCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:275
static bool HandleGMTicketResponseAppendCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:529
static bool HandleGMTicketEscalateCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:311
static bool HandleGMTicketAssignToCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:79
static bool HandleGMTicketCloseByIdCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:141
static bool HandleGMTicketListClosedCommand(ChatHandler *handler, char const *)
Definition: cs_ticket.cpp:221
static bool HandleToggleGMTicketSystem(ChatHandler *handler, char const *)
Definition: cs_ticket.cpp:367
static bool HandleGMTicketGetByIdCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:428
static bool HandleGMTicketUnAssignCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:375
static bool HandleGMTicketCommentCommand(ChatHandler *handler, char const *args)
Definition: cs_ticket.cpp:180
static bool HandleGMTicketListEscalatedCommand(ChatHandler *handler, char const *)
Definition: cs_ticket.cpp:333

References HandleGMTicketAssignToCommand(), HandleGMTicketCloseByIdCommand(), HandleGMTicketCommentCommand(), HandleGMTicketCompleteCommand(), HandleGMTicketDeleteByIdCommand(), HandleGMTicketEscalateCommand(), HandleGMTicketGetByIdCommand(), HandleGMTicketGetByNameCommand(), HandleGMTicketListClosedCommand(), HandleGMTicketListCommand(), HandleGMTicketListEscalatedCommand(), HandleGMTicketListOnlineCommand(), HandleGMTicketResetCommand(), HandleGMTicketResponseAppendCommand(), HandleGMTicketResponseAppendLnCommand(), HandleGMTicketUnAssignCommand(), HandleToggleGMTicketSystem(), SEC_ADMINISTRATOR, SEC_CONSOLE, and SEC_GAMEMASTER.

◆ HandleGMTicketAssignToCommand()

static bool ticket_commandscript::HandleGMTicketAssignToCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic

Console can override though

80 {
81 if (!*args)
82 return false;
83
84 char* ticketIdStr = strtok((char*)args, " ");
85 uint32 ticketId = atoi(ticketIdStr);
86
87 char* targetStr = strtok(nullptr, " ");
88 if (!targetStr)
89 return false;
90
91 std::string target(targetStr);
92 if (!normalizePlayerName(target))
93 return false;
94
95 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
96 if (!ticket || ticket->IsClosed())
97 {
99 return true;
100 }
101
102 // Get target information
103 ObjectGuid targetGuid = sCharacterCache->GetCharacterGuidByName(target);
104 uint32 targetAccountId = sCharacterCache->GetCharacterAccountIdByGuid(targetGuid);
105 uint32 targetGmLevel = AccountMgr::GetSecurity(targetAccountId, realm.Id.Realm);
106
107 // Target must exist and have administrative rights
108 if (!targetGuid || AccountMgr::IsPlayerAccount(targetGmLevel))
109 {
111 return true;
112 }
113
114 // If already assigned, leave
115 if (ticket->IsAssignedTo(targetGuid))
116 {
118 return true;
119 }
120
121 // If assigned to different player other than current, leave
123 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
124 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
125 {
126 handler->PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->GetId(), target.c_str());
127 return true;
128 }
129
130 // Assign ticket
132 ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(targetGmLevel));
133 ticket->SaveToDB(trans);
134 sTicketMgr->UpdateLastChange();
135
136 std::string msg = ticket->FormatMessageString(*handler, nullptr, target.c_str(), nullptr, nullptr);
137 handler->SendGlobalGMSysMessage(msg.c_str());
138 return true;
139 }
#define sCharacterCache
Definition: CharacterCache.h:83
bool normalizePlayerName(std::string &name)
Definition: ObjectMgr.cpp:264
@ LANG_COMMAND_TICKETASSIGNERROR_B
Definition: Language.h:1033
@ LANG_COMMAND_TICKETASSIGNERROR_A
Definition: Language.h:1032
Realm realm
Definition: World.cpp:113
bool IsPlayerAccount(uint32 gmlevel)
Definition: AccountMgr.cpp:276
uint32 GetSecurity(uint32 accountId)
Definition: AccountMgr.cpp:209
bool IsAdminAccount(uint32 gmlevel)
Definition: AccountMgr.cpp:286
void SendGlobalGMSysMessage(const char *str)
Definition: Chat.cpp:139
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:103
Definition: ObjectGuid.h:120
bool IsAssignedTo(ObjectGuid guid) const
Definition: TicketMgr.h:98
void SetAssignedTo(ObjectGuid guid, bool isAdmin)
Definition: TicketMgr.h:122
std::string FormatMessageString(ChatHandler &handler, bool detailed=false) const
Definition: TicketMgr.cpp:161
uint32 Realm
Definition: Realm.h:42
RealmHandle Id
Definition: Realm.h:68

References GmTicket::FormatMessageString(), Object::GetGUID(), GmTicket::GetId(), WorldSession::GetPlayer(), AccountMgr::GetSecurity(), ChatHandler::GetSession(), Realm::Id, AccountMgr::IsAdminAccount(), GmTicket::IsAssignedNotTo(), GmTicket::IsAssignedTo(), GmTicket::IsClosed(), AccountMgr::IsPlayerAccount(), LANG_COMMAND_TICKETALREADYASSIGNED, LANG_COMMAND_TICKETASSIGNERROR_A, LANG_COMMAND_TICKETASSIGNERROR_B, LANG_COMMAND_TICKETNOTEXIST, normalizePlayerName(), ChatHandler::PSendSysMessage(), realm, RealmHandle::Realm, GmTicket::SaveToDB(), sCharacterCache, ChatHandler::SendGlobalGMSysMessage(), ChatHandler::SendSysMessage(), GmTicket::SetAssignedTo(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketCloseByIdCommand()

static bool ticket_commandscript::HandleGMTicketCloseByIdCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
142 {
143 if (!*args)
144 return false;
145
146 uint32 ticketId = atoi(args);
147 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
148 if (!ticket || ticket->IsClosed() || ticket->IsCompleted())
149 {
151 return true;
152 }
153
154 // Ticket should be assigned to the player who tries to close it.
155 // Console can override though
156 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
157 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
158 {
160 return true;
161 }
162
163 sTicketMgr->ResolveAndCloseTicket(ticket->GetId(), player ? player->GetGUID() : ObjectGuid::Empty);
164 sTicketMgr->UpdateLastChange();
165
166 std::string msg = ticket->FormatMessageString(*handler, player ? player->GetName().c_str() : "Console", nullptr, nullptr, nullptr);
167 handler->SendGlobalGMSysMessage(msg.c_str());
168
169 // Inform player, who submitted this ticket, that it is closed
170 if (Player* submitter = ticket->GetPlayer())
171 {
174 submitter->GetSession()->SendPacket(&data);
175 ChatHandler(submitter->GetSession()).SendSysMessage(LANG_TICKET_CLOSED);
176 }
177 return true;
178 }
@ LANG_COMMAND_TICKETCANNOTCLOSE
Definition: Language.h:1036
@ LANG_TICKET_CLOSED
Definition: Language.h:995
@ GMTICKET_RESPONSE_TICKET_DELETED
Definition: TicketMgr.h:47
@ SMSG_GMTICKET_DELETETICKET
Definition: Opcodes.h:566
Definition: Chat.h:38
std::string const & GetName() const
Definition: Object.h:446
static ObjectGuid const Empty
Definition: ObjectGuid.h:122
Definition: WorldPacket.h:27
Player * GetPlayer() const
Definition: TicketMgr.h:102
bool IsCompleted() const
Definition: TicketMgr.h:95

References ObjectGuid::Empty, GmTicket::FormatMessageString(), Object::GetGUID(), GmTicket::GetId(), WorldObject::GetName(), WorldSession::GetPlayer(), GmTicket::GetPlayer(), ChatHandler::GetSession(), GMTICKET_RESPONSE_TICKET_DELETED, GmTicket::IsAssignedNotTo(), GmTicket::IsClosed(), GmTicket::IsCompleted(), LANG_COMMAND_TICKETCANNOTCLOSE, LANG_COMMAND_TICKETNOTEXIST, LANG_TICKET_CLOSED, ChatHandler::PSendSysMessage(), ChatHandler::SendGlobalGMSysMessage(), ChatHandler::SendSysMessage(), SMSG_GMTICKET_DELETETICKET, and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketCommentCommand()

static bool ticket_commandscript::HandleGMTicketCommentCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
181 {
182 if (!*args)
183 return false;
184
185 char* ticketIdStr = strtok((char*)args, " ");
186 uint32 ticketId = atoi(ticketIdStr);
187
188 char* comment = strtok(nullptr, "\n");
189 if (!comment)
190 return false;
191
192 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
193 if (!ticket)
194 {
196 return true;
197 }
198
199 // Cannot comment ticket assigned to someone else (unless done from the Console)
200 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
201 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
202 {
204 return true;
205 }
206
208 ticket->SetComment(comment);
209 ticket->SaveToDB(trans);
210 sTicketMgr->UpdateLastChange();
211
212 std::string const assignedName = ticket->GetAssignedToName();
213 std::string msg = ticket->FormatMessageString(*handler, assignedName.empty() ? nullptr : assignedName.c_str(), nullptr, nullptr, nullptr);
214
215 msg += handler->PGetParseString(LANG_COMMAND_TICKETLISTADDCOMMENT, player ? player->GetName().c_str() : "Console", comment);
216 handler->SendGlobalGMSysMessage(msg.c_str());
217
218 return true;
219 }
@ LANG_COMMAND_TICKETLISTADDCOMMENT
Definition: Language.h:1044
std::string PGetParseString(uint32 entry, Args &&... args) const
Definition: Chat.h:72
void SetComment(std::string const &comment)
Definition: TicketMgr.h:134
std::string GetAssignedToName() const
Definition: TicketMgr.h:107

References GmTicket::FormatMessageString(), GmTicket::GetAssignedToName(), Object::GetGUID(), GmTicket::GetId(), WorldObject::GetName(), WorldSession::GetPlayer(), ChatHandler::GetSession(), GmTicket::IsAssignedNotTo(), LANG_COMMAND_TICKETALREADYASSIGNED, LANG_COMMAND_TICKETLISTADDCOMMENT, LANG_COMMAND_TICKETNOTEXIST, ChatHandler::PGetParseString(), ChatHandler::PSendSysMessage(), GmTicket::SaveToDB(), ChatHandler::SendGlobalGMSysMessage(), GmTicket::SetComment(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketCompleteCommand()

static bool ticket_commandscript::HandleGMTicketCompleteCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
228 {
229 if (!*args)
230 return false;
231
232 char* ticketIdStr = strtok((char*)args, " ");
233 uint32 ticketId = atoi(ticketIdStr);
234
235 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
236 if (!ticket || ticket->IsClosed() || ticket->IsCompleted())
237 {
239 return true;
240 }
241
242 // Check if handler is not assignee in which case return
243 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
244
245 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
246 {
248 return true;
249 }
250
251 char* response = strtok(nullptr, "\n");
252 if (response)
253 ticket->AppendResponse(response);
254
255 if (Player* player2 = ticket->GetPlayer())
256 {
257 ticket->SendResponse(player2->GetSession());
258 ChatHandler(player2->GetSession()).SendSysMessage(LANG_TICKET_COMPLETED);
259 }
260
261 Player* gm = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
262
264 ticket->SetCompleted();
265 ticket->SetResolvedBy(gm ? gm->GetGUID() : ObjectGuid::Empty);
266 ticket->SaveToDB(trans);
267
268 std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, nullptr);
269 msg += handler->PGetParseString(LANG_COMMAND_TICKETCOMPLETED, gm ? gm->GetName().c_str() : "Console");
270 handler->SendGlobalGMSysMessage(msg.c_str());
271 sTicketMgr->UpdateLastChange();
272 return true;
273 }
@ LANG_COMMAND_TICKETCOMPLETED
Definition: Language.h:1050
@ LANG_TICKET_COMPLETED
Definition: Language.h:996
void SetResolvedBy(ObjectGuid value)
Definition: TicketMgr.h:131
void SetCompleted()
Definition: TicketMgr.h:132
void SendResponse(WorldSession *session) const
Definition: TicketMgr.cpp:134

References GmTicket::AppendResponse(), ObjectGuid::Empty, GmTicket::FormatMessageString(), Object::GetGUID(), GmTicket::GetId(), WorldObject::GetName(), WorldSession::GetPlayer(), GmTicket::GetPlayer(), ChatHandler::GetSession(), GmTicket::IsAssignedNotTo(), GmTicket::IsClosed(), GmTicket::IsCompleted(), LANG_COMMAND_TICKETALREADYASSIGNED, LANG_COMMAND_TICKETCOMPLETED, LANG_COMMAND_TICKETNOTEXIST, LANG_TICKET_COMPLETED, ChatHandler::PGetParseString(), ChatHandler::PSendSysMessage(), GmTicket::SaveToDB(), ChatHandler::SendGlobalGMSysMessage(), GmTicket::SendResponse(), ChatHandler::SendSysMessage(), GmTicket::SetCompleted(), GmTicket::SetResolvedBy(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketDeleteByIdCommand()

static bool ticket_commandscript::HandleGMTicketDeleteByIdCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
276 {
277 if (!*args)
278 return false;
279
280 uint32 ticketId = atoi(args);
281 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
282 if (!ticket)
283 {
285 return true;
286 }
287
288 if (!ticket->IsClosed())
289 {
291 return true;
292 }
293
294 std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console");
295 handler->SendGlobalGMSysMessage(msg.c_str());
296
297 sTicketMgr->RemoveTicket(ticket->GetId());
298 sTicketMgr->UpdateLastChange();
299
300 if (Player* player = ticket->GetPlayer())
301 {
302 // Force abandon ticket
305 player->GetSession()->SendPacket(&data);
306 }
307
308 return true;
309 }
@ LANG_COMMAND_TICKETCLOSEFIRST
Definition: Language.h:1026

References GmTicket::FormatMessageString(), GmTicket::GetId(), WorldObject::GetName(), WorldSession::GetPlayer(), GmTicket::GetPlayer(), ChatHandler::GetSession(), GMTICKET_RESPONSE_TICKET_DELETED, GmTicket::IsClosed(), LANG_COMMAND_TICKETCLOSEFIRST, LANG_COMMAND_TICKETNOTEXIST, ChatHandler::SendGlobalGMSysMessage(), ChatHandler::SendSysMessage(), SMSG_GMTICKET_DELETETICKET, and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketEscalateCommand()

static bool ticket_commandscript::HandleGMTicketEscalateCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
312 {
313 if (!*args)
314 return false;
315
316 uint32 ticketId = atoi(args);
317 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
318 if (!ticket || ticket->IsClosed() || ticket->IsCompleted() || ticket->GetEscalatedStatus() != TICKET_UNASSIGNED)
319 {
321 return true;
322 }
323
325
326 if (Player* player = ticket->GetPlayer())
327 sTicketMgr->SendTicket(player->GetSession(), ticket);
328
329 sTicketMgr->UpdateLastChange();
330 return true;
331 }
@ TICKET_IN_ESCALATION_QUEUE
Definition: TicketMgr.h:59
@ TICKET_UNASSIGNED
Definition: TicketMgr.h:57
GMTicketEscalationStatus GetEscalatedStatus() const
Definition: TicketMgr.h:119
void SetEscalatedStatus(GMTicketEscalationStatus escalatedStatus)
Definition: TicketMgr.h:121

References GmTicket::GetEscalatedStatus(), GmTicket::GetPlayer(), GmTicket::IsClosed(), GmTicket::IsCompleted(), LANG_COMMAND_TICKETNOTEXIST, ChatHandler::SendSysMessage(), GmTicket::SetEscalatedStatus(), sTicketMgr, TICKET_IN_ESCALATION_QUEUE, and TICKET_UNASSIGNED.

Referenced by GetCommands().

◆ HandleGMTicketGetByIdCommand()

static bool ticket_commandscript::HandleGMTicketGetByIdCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
429 {
430 if (!*args)
431 return false;
432
433 uint32 ticketId = atoi(args);
434 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
435 if (!ticket || ticket->IsClosed() || ticket->IsCompleted())
436 {
438 return true;
439 }
440
442 ticket->SetViewed();
443 ticket->SaveToDB(trans);
444
445 handler->SendSysMessage(ticket->FormatMessageString(*handler, true).c_str());
446 return true;
447 }
void SetViewed()
Definition: TicketMgr.h:135

References GmTicket::FormatMessageString(), GmTicket::IsClosed(), GmTicket::IsCompleted(), LANG_COMMAND_TICKETNOTEXIST, GmTicket::SaveToDB(), ChatHandler::SendSysMessage(), GmTicket::SetViewed(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketGetByNameCommand()

static bool ticket_commandscript::HandleGMTicketGetByNameCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
450 {
451 if (!*args)
452 return false;
453
454 std::string name(args);
455 if (!normalizePlayerName(name))
456 return false;
457
458 // Detect target's GUID
459 ObjectGuid guid;
460 if (Player* player = ObjectAccessor::FindPlayerByName(name, false))
461 {
462 guid = player->GetGUID();
463 }
464 else
465 {
466 guid = sCharacterCache->GetCharacterGuidByName(name);
467 }
468
469 // Target must exist
470 if (!guid)
471 {
473 return true;
474 }
475
476 // Ticket must exist
477 GmTicket* ticket = sTicketMgr->GetTicketByPlayer(guid);
478 if (!ticket)
479 {
481 return true;
482 }
483
485 ticket->SetViewed();
486 ticket->SaveToDB(trans);
487
488 handler->SendSysMessage(ticket->FormatMessageString(*handler, true).c_str());
489 return true;
490 }
@ LANG_NO_PLAYERS_FOUND
Definition: Language.h:371
Player * FindPlayerByName(std::string const &name, bool checkInWorld=true)
Definition: ObjectAccessor.cpp:276

References ObjectAccessor::FindPlayerByName(), GmTicket::FormatMessageString(), LANG_COMMAND_TICKETNOTEXIST, LANG_NO_PLAYERS_FOUND, normalizePlayerName(), GmTicket::SaveToDB(), sCharacterCache, ChatHandler::SendSysMessage(), GmTicket::SetViewed(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListClosedCommand()

static bool ticket_commandscript::HandleGMTicketListClosedCommand ( ChatHandler handler,
char const *   
)
inlinestatic
222 {
223 sTicketMgr->ShowClosedList(*handler);
224 return true;
225 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListCommand()

static bool ticket_commandscript::HandleGMTicketListCommand ( ChatHandler handler,
char const *   
)
inlinestatic
340 {
341 sTicketMgr->ShowList(*handler, false);
342 return true;
343 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListEscalatedCommand()

static bool ticket_commandscript::HandleGMTicketListEscalatedCommand ( ChatHandler handler,
char const *   
)
inlinestatic
334 {
335 sTicketMgr->ShowEscalatedList(*handler);
336 return true;
337 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListOnlineCommand()

static bool ticket_commandscript::HandleGMTicketListOnlineCommand ( ChatHandler handler,
char const *   
)
inlinestatic
346 {
347 sTicketMgr->ShowList(*handler, true);
348 return true;
349 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketResetCommand()

static bool ticket_commandscript::HandleGMTicketResetCommand ( ChatHandler handler,
char const *   
)
inlinestatic
352 {
353 if (sTicketMgr->GetOpenTicketCount())
354 {
356 return true;
357 }
358 else
359 {
360 sTicketMgr->ResetTickets();
362 }
363
364 return true;
365 }
@ LANG_COMMAND_TICKETRESET
Definition: Language.h:1048
@ LANG_COMMAND_TICKETPENDING
Definition: Language.h:1047

References LANG_COMMAND_TICKETPENDING, LANG_COMMAND_TICKETRESET, ChatHandler::SendSysMessage(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketResponseAppendCommand()

static bool ticket_commandscript::HandleGMTicketResponseAppendCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
530 {
531 return _HandleGMTicketResponseAppendCommand(args, false, handler);
532 }
static bool _HandleGMTicketResponseAppendCommand(char const *args, bool newLine, ChatHandler *handler)
Definition: cs_ticket.cpp:492

References _HandleGMTicketResponseAppendCommand().

Referenced by GetCommands().

◆ HandleGMTicketResponseAppendLnCommand()

static bool ticket_commandscript::HandleGMTicketResponseAppendLnCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
535 {
536 return _HandleGMTicketResponseAppendCommand(args, true, handler);
537 }

References _HandleGMTicketResponseAppendCommand().

Referenced by GetCommands().

◆ HandleGMTicketUnAssignCommand()

static bool ticket_commandscript::HandleGMTicketUnAssignCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic

If no m_session present it means we're issuing this command from the console

376 {
377 if (!*args)
378 return false;
379
380 uint32 ticketId = atoi(args);
381 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
382 if (!ticket || ticket->IsClosed())
383 {
385 return true;
386 }
387 // Ticket must be assigned
388 if (!ticket->IsAssigned())
389 {
391 return true;
392 }
393
394 // Get security level of player, whom this ticket is assigned to
395 uint32 security = SEC_PLAYER;
396 Player* assignedPlayer = ticket->GetAssignedPlayer();
397 if (assignedPlayer)
398 security = assignedPlayer->GetSession()->GetSecurity();
399 else
400 {
401 ObjectGuid guid = ticket->GetAssignedToGUID();
402 uint32 accountId = sCharacterCache->GetCharacterAccountIdByGuid(guid);
403 security = AccountMgr::GetSecurity(accountId, realm.Id.Realm);
404 }
405
406 // Check security
408 uint32 mySecurity = handler->GetSession() ? handler->GetSession()->GetSecurity() : SEC_CONSOLE;
409 if (security > mySecurity)
410 {
412 return true;
413 }
414
415 std::string assignedTo = ticket->GetAssignedToName(); // copy assignedto name because we need it after the ticket has been unnassigned
417 ticket->SetUnassigned();
418 ticket->SaveToDB(trans);
419 sTicketMgr->UpdateLastChange();
420
421 std::string msg = ticket->FormatMessageString(*handler, nullptr, assignedTo.c_str(),
422 handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console", nullptr);
423 handler->SendGlobalGMSysMessage(msg.c_str());
424
425 return true;
426 }
@ SEC_PLAYER
Definition: Common.h:66
@ LANG_COMMAND_TICKETUNASSIGNSECURITY
Definition: Language.h:1035
@ LANG_COMMAND_TICKETNOTASSIGNED
Definition: Language.h:1034
WorldSession * GetSession() const
Definition: Player.h:1948
AccountTypes GetSecurity() const
Definition: WorldSession.h:358
ObjectGuid GetAssignedToGUID() const
Definition: TicketMgr.h:106
bool IsAssigned() const
Definition: TicketMgr.h:97
void SetUnassigned()
Definition: TicketMgr.cpp:204
Player * GetAssignedPlayer() const
Definition: TicketMgr.h:105

References GmTicket::FormatMessageString(), GmTicket::GetAssignedPlayer(), GmTicket::GetAssignedToGUID(), GmTicket::GetAssignedToName(), GmTicket::GetId(), WorldObject::GetName(), WorldSession::GetPlayer(), WorldSession::GetSecurity(), AccountMgr::GetSecurity(), ChatHandler::GetSession(), Player::GetSession(), Realm::Id, GmTicket::IsAssigned(), GmTicket::IsClosed(), LANG_COMMAND_TICKETNOTASSIGNED, LANG_COMMAND_TICKETNOTEXIST, LANG_COMMAND_TICKETUNASSIGNSECURITY, ChatHandler::PSendSysMessage(), realm, RealmHandle::Realm, GmTicket::SaveToDB(), sCharacterCache, SEC_CONSOLE, SEC_PLAYER, ChatHandler::SendGlobalGMSysMessage(), ChatHandler::SendSysMessage(), GmTicket::SetUnassigned(), and sTicketMgr.

Referenced by GetCommands().

◆ HandleToggleGMTicketSystem()

static bool ticket_commandscript::HandleToggleGMTicketSystem ( ChatHandler handler,
char const *   
)
inlinestatic
368 {
369 bool status = !sTicketMgr->GetStatus();
370 sTicketMgr->SetStatus(status);
372 return true;
373 }
@ LANG_ALLOW_TICKETS
Definition: Language.h:896
@ LANG_DISALLOW_TICKETS
Definition: Language.h:897

References LANG_ALLOW_TICKETS, LANG_DISALLOW_TICKETS, ChatHandler::PSendSysMessage(), and sTicketMgr.

Referenced by GetCommands().