using AipsRT.Model.Whiteboard.Shapes; using AipsRT.Model.Users; namespace AipsRT.Model.Whiteboard; public class Whiteboard { public Guid WhiteboardId { get; set; } public Guid OwnerId { get; set; } public HashSet AcceptedUsers { get; } = new(); public HashSet PendingUsers { get; } = new(); public List Users { get; } = []; public List Shapes { get; } = []; public List Rectangles { get; } = []; public List Arrows { get; } = []; public List Lines { get; } = []; public List TextShapes { get; } = []; public void AddRectangle(Rectangle shape) { Shapes.Add(shape); Rectangles.Add(shape); } public void AddArrow(Arrow shape) { Shapes.Add(shape); Arrows.Add(shape); } public void AddLine(Line shape) { Shapes.Add(shape); Lines.Add(shape); } public void AddTextShape(TextShape shape) { Shapes.Add(shape); TextShapes.Add(shape); } public void AddUser(User user) => Users.Add(user); public void AddPendingUser(Guid userId) => PendingUsers.Add(userId); public void AcceptUser(Guid userId) { PendingUsers.Remove(userId); AcceptedUsers.Add(userId); } public void RejectUser(Guid userId) => PendingUsers.Remove(userId); public bool IsAccepted(Guid userId) => AcceptedUsers.Contains(userId); }