25#include <unordered_map>
29 std::unordered_map<ObjectGuid, Petition> _petitionStore;
41 _petitionStore.clear();
46 TC_LOG_INFO(
"server.loading",
">> Loaded 0 petitions.");
53 Field* fields = result->Fetch();
54 AddPetition(ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt64()), ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64()), fields[2].GetString(),
true);
56 }
while (result->NextRow());
68 TC_LOG_INFO(
"server.loading",
">> Loaded 0 Petition signs!");
75 Field* fields = result->Fetch();
77 Petition* petition =
GetPetition(ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt64()));
81 petition->
AddSignature(fields[1].GetUInt32(), ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64()),
true);
83 }
while (result->NextRow());
90 Petition& p = _petitionStore[petitionGuid];
108 _petitionStore.erase(petitionGuid);
126 auto itr = _petitionStore.find(petitionGuid);
127 if (itr != _petitionStore.end())
135 for (
auto& petitionPair : _petitionStore)
136 if (petitionPair.second.OwnerGuid == ownerGuid)
137 return &petitionPair.second;
144 for (
auto itr = _petitionStore.begin(); itr != _petitionStore.end();)
146 if (itr->second.OwnerGuid == ownerGuid)
148 _petitionStore.erase(itr);
169 for (
auto& petitionPair : _petitionStore)
170 petitionPair.second.RemoveSignatureBySigner(signerGuid);
180 if (signature.first == accountId)
188 Signatures.emplace_back(accountId, playerGuid);
217 if (itr->second == playerGuid)
223 owner->GetSession()->SendPetitionQueryOpcode(
PetitionGuid);
@ CHAR_INS_PETITION_SIGNATURE
@ CHAR_DEL_PETITION_BY_GUID
@ CHAR_DEL_PETITION_SIGNATURE_BY_OWNER
@ CHAR_DEL_ALL_PETITION_SIGNATURES
@ CHAR_DEL_PETITION_SIGNATURE_BY_GUID
@ CHAR_DEL_PETITION_BY_OWNER
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< ResultSet > QueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
#define TC_LOG_INFO(filterType__,...)
std::pair< uint32, ObjectGuid > Signature
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Class used to access individual fields of database query result.
LowType GetCounter() const
Petition * GetPetition(ObjectGuid petitionGuid)
Petition * GetPetitionByOwner(ObjectGuid ownerGuid)
static PetitionMgr * instance()
void RemoveSignaturesBySigner(ObjectGuid signerGuid)
void RemovePetitionsByOwner(ObjectGuid ownerGuid)
void AddPetition(ObjectGuid petitionGuid, ObjectGuid ownerGuid, std::string const &name, bool isLoading)
void RemovePetition(ObjectGuid petitionGuid)
void setUInt32(const uint8 index, const uint32 value)
void setString(const uint8 index, const std::string &value)
void setUInt64(const uint8 index, const uint64 value)
TC_GAME_API Player * FindConnectedPlayer(ObjectGuid const &)
void UpdateName(std::string const &newName)
void RemoveSignatureBySigner(ObjectGuid playerGuid)
SignaturesVector Signatures
bool IsPetitionSignedByAccount(uint32 accountId) const
void AddSignature(uint32 accountId, ObjectGuid playerGuid, bool isLoading)