sharp-chat/SharpChat/ChatChannel.cs

60 lines
1.7 KiB
C#
Raw Normal View History

using System;
2022-08-30 15:00:58 +00:00
using System.Linq;
namespace SharpChat {
2023-02-16 22:47:30 +00:00
public class ChatChannel {
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 ChatChannel(
ChatUser owner,
string name,
2024-05-10 19:18:55 +00:00
string? password = null,
bool isTemporary = false,
int rank = 0
) : this(name, password, isTemporary, rank, owner?.UserId ?? 0) {}
2022-08-30 15:00:58 +00:00
public ChatChannel(
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(ChatUser user) {
return OwnerId > 0
&& user != null
&& OwnerId == user.UserId;
}
public override int GetHashCode() {
return Name.GetHashCode();
}
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
}
}