void HandleCalendarCopyEvent(CalendarCopyEvent calendarCopyEvent) { ObjectGuid guid = GetPlayer().GetGUID(); // prevent events in the past // To Do: properly handle timezones and remove the "- time_t(86400L)" hack if (calendarCopyEvent.Date < (GameTime.GetGameTime() - 86400L)) { return; } CalendarEvent oldEvent = Global.CalendarMgr.GetEvent(calendarCopyEvent.EventID); if (oldEvent != null) { CalendarEvent newEvent = new(oldEvent, Global.CalendarMgr.GetFreeEventId()); newEvent.Date = calendarCopyEvent.Date; Global.CalendarMgr.AddEvent(newEvent, CalendarSendEventType.Copy); var invites = Global.CalendarMgr.GetEventInvites(calendarCopyEvent.EventID); SQLTransaction trans = null; if (invites.Count > 1) { trans = new SQLTransaction(); } foreach (var invite in invites) { Global.CalendarMgr.AddInvite(newEvent, new CalendarInvite(invite, Global.CalendarMgr.GetFreeInviteId(), newEvent.EventId), trans); } if (invites.Count > 1) { DB.Characters.CommitTransaction(trans); } // should we change owner when somebody makes a copy of event owned by another person? } else { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.EventInvalid); } }
void HandleCalendarCopyEvent(CalendarCopyEvent calendarCopyEvent) { ObjectGuid guid = GetPlayer().GetGUID(); // prevent events in the past // To Do: properly handle timezones and remove the "- time_t(86400L)" hack if (calendarCopyEvent.Date < (GameTime.GetGameTime() - 86400L)) { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.EventPassed); return; } CalendarEvent oldEvent = Global.CalendarMgr.GetEvent(calendarCopyEvent.EventID); if (oldEvent != null) { // Ensure that the player has access to the event if (oldEvent.IsGuildEvent() || oldEvent.IsGuildAnnouncement()) { if (oldEvent.GuildId != _player.GetGuildId()) { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.EventInvalid); return; } } else { if (oldEvent.OwnerGuid != guid) { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.EventInvalid); return; } } // Check if the player reached the max number of events allowed to create if (oldEvent.IsGuildEvent() || oldEvent.IsGuildAnnouncement()) { if (Global.CalendarMgr.GetGuildEvents(_player.GetGuildId()).Count >= SharedConst.CalendarMaxGuildEvents) { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.GuildEventsExceeded); return; } } else { if (Global.CalendarMgr.GetEventsCreatedBy(guid).Count >= SharedConst.CalendarMaxEvents) { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.EventsExceeded); return; } } if (GetCalendarEventCreationCooldown() > GameTime.GetGameTime()) { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.Internal); return; } SetCalendarEventCreationCooldown(GameTime.GetGameTime() + SharedConst.CalendarCreateEventCooldown); CalendarEvent newEvent = new(oldEvent, Global.CalendarMgr.GetFreeEventId()); newEvent.Date = calendarCopyEvent.Date; Global.CalendarMgr.AddEvent(newEvent, CalendarSendEventType.Copy); var invites = Global.CalendarMgr.GetEventInvites(calendarCopyEvent.EventID); SQLTransaction trans = null; if (invites.Count > 1) { trans = new SQLTransaction(); } foreach (var invite in invites) { Global.CalendarMgr.AddInvite(newEvent, new CalendarInvite(invite, Global.CalendarMgr.GetFreeInviteId(), newEvent.EventId), trans); } if (invites.Count > 1) { DB.Characters.CommitTransaction(trans); } // should we change owner when somebody makes a copy of event owned by another person? } else { Global.CalendarMgr.SendCalendarCommandResult(guid, CalendarError.EventInvalid); } }