73 inviteInfo.
EventID = invite->GetEventId();
74 inviteInfo.
InviteID = invite->GetInviteId();
76 inviteInfo.
Status = invite->GetStatus();
86 eventInfo.
EventID =
event->GetEventId();
91 eventInfo.
Flags =
event->GetFlags();
92 eventInfo.
OwnerGuid =
event->GetOwnerGUID();
93 eventInfo.
TextureID =
event->GetTextureId();
99 for (Player::BoundInstancesMap::const_iterator itr = boundInstances.begin(); itr != boundInstances.end(); ++itr)
101 if (itr->second.perm)
113 std::set<uint32> sentMaps;
116 for (ResetTimeByMapDifficultyMap::const_iterator itr = resets.begin(); itr != resets.end(); ++itr)
119 if (sentMaps.find(mapId) != sentMaps.end())
123 if (!mapEntry || !mapEntry->
IsRaid())
126 sentMaps.insert(mapId);
130 reset.
Duration = itr->second - currTime;
146 holidayInfo.
Date[j].SetPackedTime(holiday->
Date[j]);
175 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_GUILD_FILTER: Min level [{}], Max level [{}], Min rank [{}]",
184 team->MassInviteToEvent(
this);
279 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_UPDATE_EVENT [{}] EventId [{}], "
280 "InviteId [{}] Title {}, Description {}, EventType {} "
287 time_t oldEventTime = calendarEvent->GetDate();
290 calendarEvent->SetFlags(calendarUpdateEvent.
Flags);
293 calendarEvent->SetTextureId(calendarUpdateEvent.
TextureID);
294 calendarEvent->SetTitle(calendarUpdateEvent.
Title);
295 calendarEvent->SetDescription(calendarUpdateEvent.
Description);
298 sCalendarMgr->SendCalendarEventUpdateAlert(*calendarEvent, oldEventTime);
323 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_COPY_EVENT [{}], EventId [{}] inviteId [{}] Time: {}",
329 if (oldEvent->IsGuildEvent() || oldEvent->IsGuildAnnouncement())
339 if (oldEvent->GetOwnerGUID() != guid)
347 if (oldEvent->IsGuildEvent() || oldEvent->IsGuildAnnouncement())
377 if (invites.size() > 1)
380 for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
383 if (invites.size() > 1)
397 eventId = calendarEventInvite.
EventID;
399 bool isSignUp = calendarEventInvite.
IsSignUp;
401 std::string inviteeName = calendarEventInvite.
Name;
406 auto createInvite = [
this, playerGuid, inviteeName, eventId, isSignUp](
ObjectGuid const& inviteeGuid,
uint32 inviteeTeam,
ObjectGuid::LowType inviteeGuildId,
bool inviteeIsIngoring)
417 if (inviteeIsIngoring)
427 if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() == inviteeGuildId)
456 createInvite(player->GetGUID(), player->GetTeam(), player->GetGuildId(), player->GetSocial()->HasIgnore(playerGuid));
472 bool isIgnoring = result != nullptr;
473 continuation(inviteeGuid, inviteeTeam, inviteeGuildId, isIgnoring);
486 if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() !=
_player->
GetGuildId())
520 sCalendarMgr->SendCalendarEventStatus(*calendarEvent, *invite);
534 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_REMOVE_INVITE [{}] EventId [{}], ownerInviteId [{}], Invitee ([{}] id: [{}])",
539 if (calendarEvent->GetOwnerGUID() == calendarRemoveInvite.
Guid)
555 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_STATUS [{}] EventId [{}] ownerInviteId [{}], Invitee ([{}] id: [{}], status {}",
565 sCalendarMgr->SendCalendarEventStatus(*calendarEvent, *invite);
579 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_MODERATOR_STATUS [{}] EventID [{}] ModeratorID [{}], Invitee ([{}] InviteID: [{}], Status {}",
581 calendarModeratorStatus.
Status);
589 sCalendarMgr->SendCalendarEventModeratorStatusAlert(*calendarEvent, *invite);
601 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_COMPLAIN [{}] EventId [{}] guid [{}] InviteId [{}]", guid.
ToString(), calendarComplain.
EventID,
612 TC_LOG_DEBUG(
"network",
"CMSG_CALENDAR_GET_NUM_PENDING: [{}] Pending: {}", guid.
ToString(), pending);
619 TC_LOG_DEBUG(
"network",
"CMSG_SET_SAVED_INSTANCE_EXTEND - MapId: {}, Difficulty: {}, ToggleExtend: {}", setSavedInstanceExtend.
MapID, setSavedInstanceExtend.
DifficultyID, setSavedInstanceExtend.
Extend ?
"On" :
"Off");
624 if (!instanceBind || !instanceBind->
save || !instanceBind->
perm)
633 player->BindToInstance(instanceBind->
save,
true, newState,
false);
676 TC_LOG_DEBUG(
"network",
"SMSG_CALENDAR_RAID_LOCKOUT_UPDATED [{}] Map: {}, Difficulty {}",
std::set< CalendarEvent * > CalendarEventStore
@ CALENDAR_ERROR_INTERNAL
@ CALENDAR_ERROR_NO_INVITE
@ CALENDAR_ERROR_EVENT_PASSED
@ CALENDAR_ERROR_EVENT_LOCKED
@ CALENDAR_ERROR_NOT_ALLIED
@ CALENDAR_ERROR_EVENTS_EXCEEDED
@ CALENDAR_ERROR_NO_GUILD_INVITES
@ CALENDAR_ERROR_DELETE_CREATOR_FAILED
@ CALENDAR_ERROR_GUILD_EVENTS_EXCEEDED
@ CALENDAR_ERROR_IGNORING_YOU_S
@ CALENDAR_ERROR_PLAYER_NOT_FOUND
@ CALENDAR_ERROR_EVENT_INVALID
@ CALENDAR_ERROR_GUILD_PLAYER_NOT_IN_GUILD
#define CALENDAR_DEFAULT_RESPONSE_TIME
std::vector< CalendarInvite * > CalendarInviteStore
@ CALENDAR_STATUS_TENTATIVE
@ CALENDAR_STATUS_NOT_SIGNED_UP
@ CALENDAR_STATUS_INVITED
@ CALENDAR_STATUS_SIGNED_UP
@ CALENDAR_STATUS_REMOVED
@ CALENDAR_MAX_GUILD_EVENTS
@ CALENDAR_CREATE_EVENT_COOLDOWN
DBCStorage< HolidaysEntry > sHolidaysStore(Holidaysfmt)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
#define MAX_HOLIDAY_FLAGS
#define MAX_HOLIDAY_DURATIONS
#define MAX_HOLIDAY_DATES
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< ResultSet > QueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
std::unordered_map< uint32, time_t > ResetTimeByMapDifficultyMap
#define TC_LOG_DEBUG(filterType__,...)
uint16 PAIR32_LOPART(uint32 x)
bool normalizePlayerName(std::string &name)
std::optional< T > Optional
Optional helper class to wrap optional values within.
T & AddCallback(T &&query)
uint32 GetInstanceId() const
Difficulty GetDifficulty() const
time_t GetResetTime() const
LowType GetCounter() const
static ObjectGuid const Empty
std::string ToString() const
static ObjectGuid GetGUID(Object const *o)
std::unordered_map< uint32, InstancePlayerBind > BoundInstancesMap
static uint32 TeamForRace(uint8 race)
BoundInstancesMap & GetBoundInstances(Difficulty difficulty)
ObjectGuid::LowType GetGuildId() const
Array< CalendarAddEventInviteInfo, CALENDAR_MAX_INVITES > Invites
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< CalendarSendCalendarInviteInfo > Invites
std::vector< CalendarSendCalendarHolidayInfo > Holidays
WorldPacket const * Write() override
std::vector< CalendarSendCalendarRaidResetInfo > RaidResets
std::vector< CalendarSendCalendarRaidLockoutInfo > RaidLockouts
std::vector< CalendarSendCalendarEventInfo > Events
void HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyEvent &calendarCopyEvent)
void HandleCalendarEventRsvp(WorldPackets::Calendar::CalendarRSVP &calendarRSVP)
void HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter &calendarGuildFilter)
time_t GetCalendarEventCreationCooldown() const
void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent &calendarGetEvent)
void HandleCalendarEventStatus(WorldPackets::Calendar::CalendarStatus &calendarStatus)
void SendPacket(WorldPacket const *packet)
Send a packet to the client.
void HandleCalendarEventRemoveInvite(WorldPackets::Calendar::CalendarRemoveInvite &calendarRemoveInvite)
void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar &calendarGetCalendar)
void SendCalendarRaidLockoutUpdated(InstanceSave const *save)
void HandleCalendarComplain(WorldPackets::Calendar::CalendarComplain &calendarComplain)
void HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSavedInstanceExtend &setSavedInstanceExtend)
Minutes GetTimezoneOffset() const
Player * GetPlayer() const
void HandleCalendarArenaTeam(WorldPackets::Calendar::CalendarArenaTeam &calendarArenaTeam)
QueryCallbackProcessor & GetQueryProcessor()
void HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEventSignUp &calendarEventSignUp)
void SendCalendarRaidLockoutAdded(InstanceSave const *save)
void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent &calendarUpdateEvent)
void HandleCalendarEventModeratorStatus(WorldPackets::Calendar::CalendarModeratorStatusQuery &calendarModeratorStatus)
void SendCalendarRaidLockoutRemoved(InstanceSave const *save)
void SetCalendarEventCreationCooldown(time_t cooldown)
void HandleCalendarEventInvite(WorldPackets::Calendar::CalendarInvite &calendarEventInvite)
void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent &calendarRemoveEvent)
void HandleCalendarGetNumPending(WorldPackets::Calendar::CalendarGetNumPending &calendarGetNumPending)
void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent &calendarAddEvent)
std::time_t GetUnixTimeFromUtcTime() const
void SetUtcTimeFromUnixTime(std::time_t unixTime)
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_CALENDAR
WowTime const * GetWowTime()
WowTime const * GetUtcWowTime()
TC_GAME_API Player * FindConnectedPlayerByName(std::string_view name)
std::string StringFormat(FormatString< Args... > fmt, Args &&... args)
Default TC string format function.
bool IsGuildAnnouncement() const
bool IsGuildEvent() const
uint64 GetEventId() const
void SetGuildId(ObjectGuid::LowType guildId)
void SetDate(time_t date)
ObjectGuid::LowType GuildId
uint32 Duration[MAX_HOLIDAY_DURATIONS]
char const * TextureFilename
uint32 CalendarFlags[MAX_HOLIDAY_FLAGS]
uint32 Date[MAX_HOLIDAY_DATES]
BindExtensionState extendState
std::string_view TextureFilename
std::array< int32, MAX_HOLIDAY_DURATIONS > Duration
std::array< WowTime, MAX_HOLIDAY_DATES > Date
std::array< int32, MAX_HOLIDAY_FLAGS > CalendarFlags