40 _needResponse(false), _needMoreHelp(false) { }
44 _needResponse(false), _needMoreHelp(false)
72 _playerGuid = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetUInt32());
139 for (
int i = 0; i < 4; i++)
143 size_t writeLen = std::min<size_t>(len, 3999);
160 std::stringstream ss;
183 std::stringstream ss;
188 if (szAssignedToName)
190 if (szUnassignedName)
240 std::stringstream ss(log);
241 std::stringstream newss;
243 while (std::getline(ss, line) && !time.empty())
255 _lastChange(
GameTime::GetGameTime()) { }
272 if (itr->second->IsClosed())
274 uint32 ticketId = itr->second->GetId();
310 TC_LOG_INFO(
"server.loading",
">> Loaded 0 GM tickets. DB table `gm_ticket` is empty!");
318 Field* fields = result->Fetch();
335 }
while (result->NextRow());
368 ticket->SetClosedBy(source);
371 ticket->SaveToDB(trans);
380 ticket->SetClosedBy(source);
381 ticket->SetResolvedBy(source);
384 ticket->SaveToDB(trans);
392 ticket->DeleteFromDB();
407 if (!itr->second->IsClosed() && !itr->second->IsCompleted())
408 if (!onlineOnly || itr->second->GetPlayer())
409 handler.
SendSysMessage(itr->second->FormatMessageString(handler).c_str());
416 if (itr->second->IsClosed())
417 handler.
SendSysMessage(itr->second->FormatMessageString(handler).c_str());
425 handler.
SendSysMessage(itr->second->FormatMessageString(handler).c_str());
@ CHAR_DEL_ALL_GM_TICKETS
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< ResultSet > QueryResult
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
@ LANG_COMMAND_TICKETSHOWONLINELIST
@ LANG_COMMAND_TICKETSHOWESCALATEDLIST
@ LANG_COMMAND_TICKETLISTGUID
@ LANG_COMMAND_TICKETSHOWLIST
@ LANG_COMMAND_TICKETCLOSED
@ LANG_COMMAND_TICKETDELETED
@ LANG_COMMAND_TICKETLISTCOMMENT
@ LANG_COMMAND_TICKETLISTAGE
@ LANG_COMMAND_TICKETCOMPLETED
@ LANG_COMMAND_TICKETLISTRESPONSE
@ LANG_COMMAND_TICKETLISTASSIGNEDTO
@ LANG_COMMAND_TICKETLISTAGECREATE
@ LANG_COMMAND_TICKETLISTUNASSIGNED
@ LANG_COMMAND_TICKETSHOWCLOSEDLIST
@ LANG_COMMAND_TICKETLISTMESSAGE
@ LANG_COMMAND_TICKETLISTNAME
#define TC_LOG_INFO(filterType__,...)
@ TICKET_ESCALATED_ASSIGNED
@ TICKET_IN_ESCALATION_QUEUE
@ GMTICKET_STATUS_DEFAULT
@ GMTICKET_STATUS_HASTEXT
@ GMTICKET_OPENEDBYGM_STATUS_NOT_OPENED
@ GMTICKET_OPENEDBYGM_STATUS_OPENED
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
std::string secsToTimeString(uint64 timeInSecs, TimeFormat timeFormat, bool hoursOnly)
static std::string PGetParseString(std::string_view fmt, Args &&... args)
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Class used to access individual fields of database query result.
std::string GetString() const
std::string const & GetMessage() const
bool GetNeedMoreHelp() const
Player * GetPlayer() const
GMTicketEscalationStatus _escalatedStatus
void SetPosition(uint32 mapId, float x, float y, float z)
void SetMessage(std::string const &message)
void SaveToDB(CharacterDatabaseTransaction trans) const
void SetGmAction(uint32 needResponse, bool needMoreHelp)
uint64 GetLastModifiedTime() const
void TeleportTo(Player *player) const
bool LoadFromDB(Field *fields)
void SendResponse(WorldSession *session) const
std::string FormatMessageString(ChatHandler &handler, bool detailed=false) const
void SetChatLog(std::list< uint32 > time, std::string const &log)
std::string GetAssignedToName() const
Player * GetAssignedPlayer() const
GMTicketEscalationStatus GetEscalatedStatus() const
LowType GetCounter() const
static ObjectGuid const Empty
static ObjectGuid GetGUID(Object const *o)
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
void setUInt16(uint8 index, uint16 value)
void setUInt32(uint8 index, uint32 value)
void setBool(uint8 index, bool value)
void setFloat(uint8 index, float value)
void setInt32(uint8 index, int32 value)
void setUInt8(uint8 index, uint8 value)
void setString(uint8 index, std::string const &value)
void RemoveTicket(uint32 ticketId)
void CloseTicket(uint32 ticketId, ObjectGuid source)
void ShowClosedList(ChatHandler &handler) const
void AddTicket(GmTicket *ticket)
void SetStatus(bool status)
void ShowEscalatedList(ChatHandler &handler) const
void ResolveAndCloseTicket(uint32 ticketId, ObjectGuid source)
GmTicket * GetTicket(uint32 ticketId)
static TicketMgr * instance()
void SendTicket(WorldSession *session, GmTicket *ticket) const
void ShowList(ChatHandler &handler, bool onlineOnly) const
std::string const & GetName() const
WorldPacket const * Write() override
Player session in the World.
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
@ SMSG_GMRESPONSE_RECEIVED
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
std::string_view TicketDescription