sharp-chat/SharpChat/ChannelInfo.cs

48 lines
1.3 KiB
C#
Raw Normal View History

using System;
2022-08-30 15:00:58 +00:00
using System.Linq;
namespace SharpChat {
public class ChannelInfo {
public string Name { get; }
public string Password { get; set; }
public bool IsTemporary { get; set; }
public int Rank { get; set; }
public long OwnerId { get; set; }
2022-08-30 15:00:58 +00:00
public bool HasPassword
=> !string.IsNullOrWhiteSpace(Password);
public ChannelInfo(
string name,
2024-05-10 19:18:55 +00:00
string? password = null,
bool isTemporary = false,
int rank = 0,
long ownerId = 0
) {
2022-08-30 15:00:58 +00:00
Name = name;
Password = password ?? string.Empty;
IsTemporary = isTemporary;
Rank = rank;
OwnerId = ownerId;
2022-08-30 15:00:58 +00:00
}
2024-05-10 19:18:55 +00:00
public bool NameEquals(string? name) {
return string.Equals(name, Name, StringComparison.InvariantCultureIgnoreCase);
}
public bool IsOwner(UserInfo user) {
return OwnerId > 0
&& user != null
&& OwnerId == user.UserId;
}
public static bool CheckName(string name) {
return !string.IsNullOrWhiteSpace(name) && name.All(CheckNameChar);
}
public static bool CheckNameChar(char c) {
return char.IsLetter(c) || char.IsNumber(c) || c == '-' || c == '_';
}
2022-08-30 15:00:58 +00:00
}
}