using System; using System.Collections.Generic; using System.Linq; // ReSharper disable AutoPropertyCanBeMadeGetOnly.Local namespace IRCStates { public class Channel { public string Name { get; private set; } public string NameLower { get; private set; } public Dictionary Users { get; private set; } = new Dictionary(); public string Topic { get; set; } public string TopicSetter { get; set; } public DateTime TopicTime { get; set; } public DateTime Created { get; set; } public Dictionary> ListModes { get; private set; } = new Dictionary>(); public Dictionary Modes { get; private set; } = new Dictionary(); public override string ToString() { return $"Channel(name={Name})"; } public void SetName(string name, string nameLower) { Name = name; NameLower = nameLower; } public void AddMode(string ch, string param, bool listMode) { if (listMode) { if (!ListModes.ContainsKey(ch)) ListModes[ch] = new List(); if (!ListModes[ch].Contains(param)) ListModes[ch].Add(param ?? string.Empty); } else { Modes[ch] = param; } } public void RemoveMode(string ch, string param) { if (ListModes.ContainsKey(ch)) { if (ListModes[ch].Contains(param)) { ListModes[ch].Remove(param); if (!ListModes[ch].Any()) ListModes.Remove(ch); } } else if (Modes.ContainsKey(ch)) { Modes.Remove(ch); } } } }