using System.Text;

namespace SharpChat.S2CPackets {
    public class UserChannelJoinS2CPacket(
        long msgId,
        string userId,
        string userName,
        ColourInheritable userColour,
        int userRank,
        UserPermissions userPerms
    ) : S2CPacket {
        public string Pack() {
            StringBuilder sb = new();

            sb.Append("5\t0\t");
            sb.Append(userId);
            sb.Append('\t');
            sb.Append(userName);
            sb.Append('\t');
            sb.Append(userColour);
            sb.Append('\t');
            sb.Append(userRank);
            sb.Append(' ');
            sb.Append(userPerms.HasFlag(UserPermissions.KickUser) ? '1' : '0');
            sb.Append(' ');
            sb.Append(userPerms.HasFlag(UserPermissions.ViewLogs) ? '1' : '0');
            sb.Append(' ');
            sb.Append(userPerms.HasFlag(UserPermissions.SetOwnNickname) ? '1' : '0');
            sb.Append(' ');
            sb.Append(userPerms.HasFlag(UserPermissions.CreateChannel) ? (userPerms.HasFlag(UserPermissions.SetChannelPermanent) ? '2' : '1') : '0');
            sb.Append('\t');
            sb.Append(msgId);

            return sb.ToString();
        }
    }
}