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, uint32 ticketId, std::string target)
 
static bool HandleGMTicketCloseByIdCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketCommentCommand (ChatHandler *handler, uint32 ticketId, Tail comment)
 
static bool HandleGMTicketListClosedCommand (ChatHandler *handler)
 
static bool HandleGMTicketCompleteCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketDeleteByIdCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketEscalateCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketListEscalatedCommand (ChatHandler *handler)
 
static bool HandleGMTicketListCommand (ChatHandler *handler)
 
static bool HandleGMTicketListOnlineCommand (ChatHandler *handler)
 
static bool HandleGMTicketResetCommand (ChatHandler *handler)
 
static bool HandleToggleGMTicketSystem (ChatHandler *handler)
 
static bool HandleGMTicketUnAssignCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketGetByIdCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketGetByNameCommand (ChatHandler *handler, std::string name)
 
static bool _HandleGMTicketResponseAppendCommand (uint32 ticketId, bool newLine, ChatHandler *handler)
 
static bool HandleGMTicketResponseAppendCommand (ChatHandler *handler, uint32 ticketId)
 
static bool HandleGMTicketResponseAppendLnCommand (ChatHandler *handler, uint32 ticketId)
 

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
39: CommandScript("ticket_commandscript") { }
Definition: CommandScript.h:25

Member Function Documentation

◆ _HandleGMTicketResponseAppendCommand()

static bool ticket_commandscript::_HandleGMTicketResponseAppendCommand ( uint32  ticketId,
bool  newLine,
ChatHandler handler 
)
inlinestatic

Console excluded

441 {
442 char* response = strtok(nullptr, "\n");
443 if (!response)
444 return false;
445
446 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
447 if (!ticket || ticket->IsClosed())
448 {
450 return true;
451 }
452
453 // Cannot add response to ticket, assigned to someone else
455 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
456 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
457 {
459 return true;
460 }
461
463 ticket->AppendResponse(response);
464 if (newLine)
465 ticket->AppendResponse("\n");
466 ticket->SaveToDB(trans);
467
468 return true;
469 }
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition: DatabaseEnvFwd.h:70
@ LANG_COMMAND_TICKETALREADYASSIGNED
Definition: Language.h:1036
@ LANG_COMMAND_TICKETNOTEXIST
Definition: Language.h:1034
#define sTicketMgr
Definition: TicketMgr.h:258
WorldSession * GetSession()
Definition: Chat.h:139
void PSendSysMessage(char const *fmt, Args &&... args)
Definition: Chat.h:60
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
Definition: Player.h:1056
Player * GetPlayer() const
Definition: WorldSession.h:364
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.

42 {
43 static ChatCommandTable ticketResponseCommandTable =
44 {
45 { "append", HandleGMTicketResponseAppendCommand, SEC_GAMEMASTER, Console::Yes },
46 { "appendln", HandleGMTicketResponseAppendLnCommand, SEC_GAMEMASTER, Console::Yes }
47 };
48 static ChatCommandTable ticketCommandTable =
49 {
50 { "assign", HandleGMTicketAssignToCommand, SEC_GAMEMASTER, Console::Yes },
51 { "close", HandleGMTicketCloseByIdCommand, SEC_GAMEMASTER, Console::Yes },
52 { "closedlist", HandleGMTicketListClosedCommand, SEC_GAMEMASTER, Console::Yes },
53 { "comment", HandleGMTicketCommentCommand, SEC_GAMEMASTER, Console::Yes },
54 { "complete", HandleGMTicketCompleteCommand, SEC_GAMEMASTER, Console::Yes },
55 { "delete", HandleGMTicketDeleteByIdCommand, SEC_ADMINISTRATOR, Console::Yes },
56 { "escalate", HandleGMTicketEscalateCommand, SEC_GAMEMASTER, Console::Yes },
57 { "escalatedlist", HandleGMTicketListEscalatedCommand, SEC_GAMEMASTER, Console::Yes },
58 { "list", HandleGMTicketListCommand, SEC_GAMEMASTER, Console::Yes },
59 { "onlinelist", HandleGMTicketListOnlineCommand, SEC_GAMEMASTER, Console::Yes },
60 { "reset", HandleGMTicketResetCommand, SEC_CONSOLE, Console::Yes },
61
62 { "response", ticketResponseCommandTable },
63 { "togglesystem", HandleToggleGMTicketSystem, SEC_ADMINISTRATOR, Console::Yes },
64 { "unassign", HandleGMTicketUnAssignCommand, SEC_GAMEMASTER, Console::Yes },
65 { "viewid", HandleGMTicketGetByIdCommand, SEC_GAMEMASTER, Console::Yes },
66 { "viewname", HandleGMTicketGetByNameCommand, SEC_GAMEMASTER, Console::Yes }
67 };
68 static ChatCommandTable commandTable =
69 {
70 { "ticket", ticketCommandTable }
71 };
72 return commandTable;
73 }
@ SEC_ADMINISTRATOR
Definition: Common.h:62
@ SEC_GAMEMASTER
Definition: Common.h:61
@ SEC_CONSOLE
Definition: Common.h:63
std::vector< ChatCommandBuilder > ChatCommandTable
Definition: ChatCommand.h:49
static bool HandleGMTicketResponseAppendLnCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:476
static bool HandleGMTicketEscalateCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:275
static bool HandleGMTicketCloseByIdCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:126
static bool HandleGMTicketAssignToCommand(ChatHandler *handler, uint32 ticketId, std::string target)
Definition: cs_ticket.cpp:75
static bool HandleGMTicketListClosedCommand(ChatHandler *handler)
Definition: cs_ticket.cpp:195
static bool HandleGMTicketDeleteByIdCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:243
static bool HandleToggleGMTicketSystem(ChatHandler *handler)
Definition: cs_ticket.cpp:327
static bool HandleGMTicketCommentCommand(ChatHandler *handler, uint32 ticketId, Tail comment)
Definition: cs_ticket.cpp:161
static bool HandleGMTicketResetCommand(ChatHandler *handler)
Definition: cs_ticket.cpp:311
static bool HandleGMTicketListOnlineCommand(ChatHandler *handler)
Definition: cs_ticket.cpp:305
static bool HandleGMTicketListEscalatedCommand(ChatHandler *handler)
Definition: cs_ticket.cpp:293
static bool HandleGMTicketCompleteCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:201
static bool HandleGMTicketResponseAppendCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:471
static bool HandleGMTicketListCommand(ChatHandler *handler)
Definition: cs_ticket.cpp:299
static bool HandleGMTicketGetByIdCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:384
static bool HandleGMTicketGetByNameCommand(ChatHandler *handler, std::string name)
Definition: cs_ticket.cpp:401
static bool HandleGMTicketUnAssignCommand(ChatHandler *handler, uint32 ticketId)
Definition: cs_ticket.cpp:335

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,
uint32  ticketId,
std::string  target 
)
inlinestatic

Console can override though

76 {
77 if (!normalizePlayerName(target))
78 return false;
79
80 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
81 if (!ticket || ticket->IsClosed())
82 {
84 return true;
85 }
86
87 // Get target information
88 ObjectGuid targetGuid = sCharacterCache->GetCharacterGuidByName(target);
89 uint32 targetAccountId = sCharacterCache->GetCharacterAccountIdByGuid(targetGuid);
90 uint32 targetGmLevel = AccountMgr::GetSecurity(targetAccountId, realm.Id.Realm);
91
92 // Target must exist and have administrative rights
93 if (!targetGuid || AccountMgr::IsPlayerAccount(targetGmLevel))
94 {
96 return true;
97 }
98
99 // If already assigned, leave
100 if (ticket->IsAssignedTo(targetGuid))
101 {
103 return true;
104 }
105
106 // If assigned to different player other than current, leave
108 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
109 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
110 {
111 handler->PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->GetId(), target.c_str());
112 return true;
113 }
114
115 // Assign ticket
117 ticket->SetAssignedTo(targetGuid, AccountMgr::IsAdminAccount(targetGmLevel));
118 ticket->SaveToDB(trans);
119 sTicketMgr->UpdateLastChange();
120
121 std::string msg = ticket->FormatMessageString(*handler, nullptr, target.c_str(), nullptr, nullptr);
122 handler->SendGlobalGMSysMessage(msg.c_str());
123 return true;
124 }
std::uint32_t uint32
Definition: Define.h:108
#define sCharacterCache
Definition: CharacterCache.h:83
bool normalizePlayerName(std::string &name)
Definition: ObjectMgr.cpp:262
@ LANG_COMMAND_TICKETASSIGNERROR_B
Definition: Language.h:1042
@ LANG_COMMAND_TICKETASSIGNERROR_A
Definition: Language.h:1041
Realm realm
Definition: World.cpp:112
bool IsPlayerAccount(uint32 gmlevel)
Definition: AccountMgr.cpp:276
uint32 GetSecurity(uint32 accountId)
Definition: AccountMgr.cpp:209
bool IsAdminAccount(uint32 gmlevel)
Definition: AccountMgr.cpp:281
void SendGlobalGMSysMessage(const char *str)
Definition: Chat.cpp:137
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:101
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,
uint32  ticketId 
)
inlinestatic
127 {
128 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
129 if (!ticket || ticket->IsClosed() || ticket->IsCompleted())
130 {
132 return true;
133 }
134
135 // Ticket should be assigned to the player who tries to close it.
136 // Console can override though
137 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
138 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
139 {
141 return true;
142 }
143
144 sTicketMgr->ResolveAndCloseTicket(ticket->GetId(), player ? player->GetGUID() : ObjectGuid::Empty);
145 sTicketMgr->UpdateLastChange();
146
147 std::string msg = ticket->FormatMessageString(*handler, player ? player->GetName().c_str() : "Console", nullptr, nullptr, nullptr);
148 handler->SendGlobalGMSysMessage(msg.c_str());
149
150 // Inform player, who submitted this ticket, that it is closed
151 if (Player* submitter = ticket->GetPlayer())
152 {
155 submitter->GetSession()->SendPacket(&data);
156 ChatHandler(submitter->GetSession()).SendSysMessage(LANG_TICKET_CLOSED);
157 }
158 return true;
159 }
@ LANG_COMMAND_TICKETCANNOTCLOSE
Definition: Language.h:1045
@ LANG_TICKET_CLOSED
Definition: Language.h:1004
@ 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,
uint32  ticketId,
Tail  comment 
)
inlinestatic
162 {
163 if (comment.empty())
164 return false;
165
166 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
167 if (!ticket)
168 {
170 return true;
171 }
172
173 // Cannot comment ticket assigned to someone else (unless done from the Console)
174 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
175 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
176 {
178 return true;
179 }
180
182 ticket->SetComment(comment.data());
183 ticket->SaveToDB(trans);
184 sTicketMgr->UpdateLastChange();
185
186 std::string const assignedName = ticket->GetAssignedToName();
187 std::string msg = ticket->FormatMessageString(*handler, assignedName.empty() ? nullptr : assignedName.c_str(), nullptr, nullptr, nullptr);
188
189 msg += handler->PGetParseString(LANG_COMMAND_TICKETLISTADDCOMMENT, player ? player->GetName().c_str() : "Console", comment.data());
190 handler->SendGlobalGMSysMessage(msg.c_str());
191
192 return true;
193 }
@ LANG_COMMAND_TICKETLISTADDCOMMENT
Definition: Language.h:1053
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,
uint32  ticketId 
)
inlinestatic
202 {
203 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
204 if (!ticket || ticket->IsClosed() || ticket->IsCompleted())
205 {
207 return true;
208 }
209
210 // Check if handler is not assignee in which case return
211 Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
212
213 if (player && ticket->IsAssignedNotTo(player->GetGUID()))
214 {
216 return true;
217 }
218
219 char* response = strtok(nullptr, "\n");
220 if (response)
221 ticket->AppendResponse(response);
222
223 if (Player* player2 = ticket->GetPlayer())
224 {
225 ticket->SendResponse(player2->GetSession());
226 ChatHandler(player2->GetSession()).SendSysMessage(LANG_TICKET_COMPLETED);
227 }
228
229 Player* gm = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
230
232 ticket->SetCompleted();
233 ticket->SetResolvedBy(gm ? gm->GetGUID() : ObjectGuid::Empty);
234 ticket->SaveToDB(trans);
235
236 std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, nullptr);
237 msg += handler->PGetParseString(LANG_COMMAND_TICKETCOMPLETED, gm ? gm->GetName().c_str() : "Console");
238 handler->SendGlobalGMSysMessage(msg.c_str());
239 sTicketMgr->UpdateLastChange();
240 return true;
241 }
@ LANG_COMMAND_TICKETCOMPLETED
Definition: Language.h:1059
@ LANG_TICKET_COMPLETED
Definition: Language.h:1005
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,
uint32  ticketId 
)
inlinestatic
244 {
245 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
246 if (!ticket)
247 {
249 return true;
250 }
251
252 if (!ticket->IsClosed())
253 {
255 return true;
256 }
257
258 std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console");
259 handler->SendGlobalGMSysMessage(msg.c_str());
260
261 sTicketMgr->RemoveTicket(ticket->GetId());
262 sTicketMgr->UpdateLastChange();
263
264 if (Player* player = ticket->GetPlayer())
265 {
266 // Force abandon ticket
269 player->GetSession()->SendPacket(&data);
270 }
271
272 return true;
273 }
@ LANG_COMMAND_TICKETCLOSEFIRST
Definition: Language.h:1035

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,
uint32  ticketId 
)
inlinestatic
276 {
277 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
278 if (!ticket || ticket->IsClosed() || ticket->IsCompleted() || ticket->GetEscalatedStatus() != TICKET_UNASSIGNED)
279 {
281 return true;
282 }
283
285
286 if (Player* player = ticket->GetPlayer())
287 sTicketMgr->SendTicket(player->GetSession(), ticket);
288
289 sTicketMgr->UpdateLastChange();
290 return true;
291 }
@ 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,
uint32  ticketId 
)
inlinestatic
385 {
386 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
387 if (!ticket || ticket->IsClosed() || ticket->IsCompleted())
388 {
390 return true;
391 }
392
394 ticket->SetViewed();
395 ticket->SaveToDB(trans);
396
397 handler->SendSysMessage(ticket->FormatMessageString(*handler, true));
398 return true;
399 }
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,
std::string  name 
)
inlinestatic
402 {
403 if (!normalizePlayerName(name))
404 return false;
405
406 // Detect target's GUID
407 ObjectGuid guid;
408 if (Player* player = ObjectAccessor::FindPlayerByName(name, false))
409 {
410 guid = player->GetGUID();
411 }
412 else
413 {
414 guid = sCharacterCache->GetCharacterGuidByName(name);
415 }
416
417 // Target must exist
418 if (!guid)
419 {
421 return true;
422 }
423
424 // Ticket must exist
425 GmTicket* ticket = sTicketMgr->GetTicketByPlayer(guid);
426 if (!ticket)
427 {
429 return true;
430 }
431
433 ticket->SetViewed();
434 ticket->SaveToDB(trans);
435
436 handler->SendSysMessage(ticket->FormatMessageString(*handler, true));
437 return true;
438 }
@ LANG_NO_PLAYERS_FOUND
Definition: Language.h:371
Player * FindPlayerByName(std::string const &name, bool checkInWorld=true)
Definition: ObjectAccessor.cpp:274

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)
inlinestatic
196 {
197 sTicketMgr->ShowClosedList(*handler);
198 return true;
199 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListCommand()

static bool ticket_commandscript::HandleGMTicketListCommand ( ChatHandler handler)
inlinestatic
300 {
301 sTicketMgr->ShowList(*handler, false);
302 return true;
303 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListEscalatedCommand()

static bool ticket_commandscript::HandleGMTicketListEscalatedCommand ( ChatHandler handler)
inlinestatic
294 {
295 sTicketMgr->ShowEscalatedList(*handler);
296 return true;
297 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketListOnlineCommand()

static bool ticket_commandscript::HandleGMTicketListOnlineCommand ( ChatHandler handler)
inlinestatic
306 {
307 sTicketMgr->ShowList(*handler, true);
308 return true;
309 }

References sTicketMgr.

Referenced by GetCommands().

◆ HandleGMTicketResetCommand()

static bool ticket_commandscript::HandleGMTicketResetCommand ( ChatHandler handler)
inlinestatic
312 {
313 if (sTicketMgr->GetOpenTicketCount())
314 {
316 return true;
317 }
318 else
319 {
320 sTicketMgr->ResetTickets();
322 }
323
324 return true;
325 }
@ LANG_COMMAND_TICKETRESET
Definition: Language.h:1057
@ LANG_COMMAND_TICKETPENDING
Definition: Language.h:1056

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

Referenced by GetCommands().

◆ HandleGMTicketResponseAppendCommand()

static bool ticket_commandscript::HandleGMTicketResponseAppendCommand ( ChatHandler handler,
uint32  ticketId 
)
inlinestatic
472 {
473 return _HandleGMTicketResponseAppendCommand(ticketId, false, handler);
474 }
static bool _HandleGMTicketResponseAppendCommand(uint32 ticketId, bool newLine, ChatHandler *handler)
Definition: cs_ticket.cpp:440

References _HandleGMTicketResponseAppendCommand().

Referenced by GetCommands().

◆ HandleGMTicketResponseAppendLnCommand()

static bool ticket_commandscript::HandleGMTicketResponseAppendLnCommand ( ChatHandler handler,
uint32  ticketId 
)
inlinestatic
477 {
478 return _HandleGMTicketResponseAppendCommand(ticketId, true, handler);
479 }

References _HandleGMTicketResponseAppendCommand().

Referenced by GetCommands().

◆ HandleGMTicketUnAssignCommand()

static bool ticket_commandscript::HandleGMTicketUnAssignCommand ( ChatHandler handler,
uint32  ticketId 
)
inlinestatic

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

336 {
337 GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
338 if (!ticket || ticket->IsClosed())
339 {
341 return true;
342 }
343 // Ticket must be assigned
344 if (!ticket->IsAssigned())
345 {
347 return true;
348 }
349
350 // Get security level of player, whom this ticket is assigned to
351 uint32 security = SEC_PLAYER;
352 Player* assignedPlayer = ticket->GetAssignedPlayer();
353 if (assignedPlayer)
354 security = assignedPlayer->GetSession()->GetSecurity();
355 else
356 {
357 ObjectGuid guid = ticket->GetAssignedToGUID();
358 uint32 accountId = sCharacterCache->GetCharacterAccountIdByGuid(guid);
359 security = AccountMgr::GetSecurity(accountId, realm.Id.Realm);
360 }
361
362 // Check security
364 uint32 mySecurity = handler->GetSession() ? handler->GetSession()->GetSecurity() : SEC_CONSOLE;
365 if (security > mySecurity)
366 {
368 return true;
369 }
370
371 std::string assignedTo = ticket->GetAssignedToName(); // copy assignedto name because we need it after the ticket has been unnassigned
373 ticket->SetUnassigned();
374 ticket->SaveToDB(trans);
375 sTicketMgr->UpdateLastChange();
376
377 std::string msg = ticket->FormatMessageString(*handler, nullptr, assignedTo.c_str(),
378 handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console", nullptr);
379 handler->SendGlobalGMSysMessage(msg.c_str());
380
381 return true;
382 }
@ SEC_PLAYER
Definition: Common.h:59
@ LANG_COMMAND_TICKETUNASSIGNSECURITY
Definition: Language.h:1044
@ LANG_COMMAND_TICKETNOTASSIGNED
Definition: Language.h:1043
WorldSession * GetSession() const
Definition: Player.h:1961
AccountTypes GetSecurity() const
Definition: WorldSession.h:361
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)
inlinestatic
328 {
329 bool status = !sTicketMgr->GetStatus();
330 sTicketMgr->SetStatus(status);
332 return true;
333 }
@ LANG_ALLOW_TICKETS
Definition: Language.h:905
@ LANG_DISALLOW_TICKETS
Definition: Language.h:906

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

Referenced by GetCommands().