static bool HandleGMTicketCompleteCommand(ChatHandler* handler, char const* args) { if (!*args) return false; char* ticketIdStr = strtok((char*)args, " "); uint32 ticketId = atoi(ticketIdStr); GmTicket* ticket = sTicketMgr->GetTicket(ticketId); if (!ticket || ticket->IsClosed() || ticket->IsCompleted()) { handler->SendSysMessage(LANG_COMMAND_TICKETNOTEXIST); return true; } char* response = strtok(NULL, "\n"); if (response) { // Cannot add response to ticket, assigned to someone else //! Console excluded Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr; if (player && ticket->IsAssignedNotTo(player->GetGUID())) { handler->PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->GetId()); return true; } ticket->AppendResponse(response); } if (Player* player = ticket->GetPlayer()) ticket->SendResponse(player->GetSession()); Player* gm = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr; SQLTransaction trans = SQLTransaction(NULL); ticket->SetResolvedBy(gm ? gm->GetGUID() : ObjectGuid(uint64(0))); ticket->SetCompleted(); ticket->SaveToDB(trans); std::string msg = ticket->FormatMessageString(*handler, NULL, NULL, NULL, NULL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetName().c_str() : "Console"); handler->SendGlobalGMSysMessage(msg.c_str()); sTicketMgr->UpdateLastChange(); return true; }