using System.Threading.Tasks; using Content.Server.Database; using Content.Shared.Administration.Notes; using Content.Shared.Database; using Robust.Server.Player; namespace Content.Server.Administration.Notes; public interface IAdminNotesManager { event Action? NoteAdded; event Action? NoteModified; event Action? NoteDeleted; bool CanCreate(IPlayerSession admin); bool CanDelete(IPlayerSession admin); bool CanEdit(IPlayerSession admin); bool CanView(IPlayerSession admin); Task OpenEui(IPlayerSession admin, Guid notedPlayer); Task OpenUserNotesEui(IPlayerSession player); Task AddAdminRemark(IPlayerSession createdBy, Guid player, NoteType type, string message, NoteSeverity? severity, bool secret, DateTime? expiryTime); Task DeleteAdminRemark(int noteId, NoteType type, IPlayerSession deletedBy); Task ModifyAdminRemark(int noteId, NoteType type, IPlayerSession editedBy, string message, NoteSeverity? severity, bool secret, DateTime? expiryTime); /// /// Queries the database and retrieves all notes, secret and visible /// /// Desired player's /// ALL non-deleted notes, secret or not Task> GetAllAdminRemarks(Guid player); /// /// Queries the database and retrieves the notes a player should see /// /// Desired player's /// All player-visible notes Task> GetVisibleRemarks(Guid player); /// /// Queries the database and retrieves watchlists that may have been placed on the player /// /// Desired player's /// Active watchlists Task> GetActiveWatchlists(Guid player); /// /// Queries the database and retrieves new messages a player has gotten /// /// Desired player's /// All unread messages Task> GetNewMessages(Guid player); Task MarkMessageAsSeen(int id); }