using System; namespace SharpChat.Events { public class MessageCreateEvent : IChatEvent { public long MessageId { get; } public string? ChannelName { get; } public long SenderId { get; } public string? SenderName { get; } public Colour SenderColour { get; } public int SenderRank { get; } public string? SenderNickName { get; } public UserPermissions SenderPerms { get; } public DateTimeOffset MessageCreated { get; } public string MessageText { get; } public bool IsPrivate { get; } public bool IsAction { get; } public bool IsBroadcast { get; } public MessageCreateEvent( long msgId, string? channelName, long senderId, string? senderName, Colour senderColour, int senderRank, string? senderNickName, UserPermissions senderPerms, DateTimeOffset msgCreated, string msgText, bool isPrivate, bool isAction, bool isBroadcast ) { MessageId = msgId; ChannelName = channelName; SenderId = senderId; SenderName = senderName; SenderColour = senderColour; SenderRank = senderRank; SenderNickName = senderNickName; SenderPerms = senderPerms; MessageCreated = msgCreated; MessageText = msgText; IsPrivate = isPrivate; IsAction = isAction; IsBroadcast = isBroadcast; } public MessageCreateEvent( long msgId, string? channelName, UserInfo? sender, DateTimeOffset msgCreated, string msgText, bool isPrivate, bool isAction, bool isBroadcast ) : this( msgId, channelName, sender?.UserId ?? -1, sender?.UserName ?? null, sender?.Colour ?? Colour.None, sender?.Rank ?? 0, sender?.NickName ?? null, sender?.Permissions ?? 0, msgCreated, msgText, isPrivate, isAction, isBroadcast ) { } public MessageCreateEvent( long msgId, ChannelInfo channel, UserInfo sender, DateTimeOffset msgCreated, string msgText, bool isPrivate, bool isAction, bool isBroadcast ) : this( msgId, channel?.Name ?? null, sender, msgCreated, msgText, isPrivate, isAction, isBroadcast ) { } } }