protected virtual void PortOnPortDisabled(object sender, EventArgs e)
        {
            var port = sender as Port;

            if (EnabledPorts.Contains(port))
            {
                EnabledPorts.Remove(port);
                DisabledPorts.Add(port);
            }
            else if (ActivePorts.ContainsKey(port))
            {
                ActivePorts.Remove(port);
                DisabledPorts.Add(port);
            }
        }
        public Port CreatePort()
        {
            var randomNumber = new Random();
            var number       = randomNumber.Next(111111, 999999);

            while (IsDisableListContainsCalledNumber(number))
            {
                number = randomNumber.Next(111111, 999999);
            }
            var port = new Port(number, this);

            DisabledPorts.Add(port);
            SubscribeOnAllPortEvents(port);
            return(port);
        }
        protected virtual void PortOnPortStateSetToActive(object sender, CallEventArgs phoneNumberArgs)
        {
            var port = sender as Port;

            if (DisabledPorts.Contains(port))
            {
                DisabledPorts.Remove(port);
                ActivePorts.Add(port, phoneNumberArgs.number);
            }
            if (EnabledPorts.Contains(port))
            {
                EnabledPorts.Remove(port);
                ActivePorts.Add(port, phoneNumberArgs.number);
            }
            CheckActivePortCalledNumber(port, phoneNumberArgs.number);
        }
 private bool IsDisableListContainsCalledNumber(int number)
 {
     return(DisabledPorts.Any(port => port.Number == number));
 }