Ejemplo n.º 1
0
        protected virtual void PortOnPortEndCall(object sender, CallEventArgs e)
        {
            var call = CurrentCalls.FirstOrDefault(x => x.RecieverNumber == e.number || x.SenderNumber == e.number);

            if (call == null)
            {
                return;
            }

            var port1 = CallingPorts.FirstOrDefault(x => x.Number == call.SenderNumber);

            if (port1 == null)
            {
                return;
            }

            var port2 = CallingPorts.FirstOrDefault(x => x.Number == call.RecieverNumber);

            if (port2 == null)
            {
                return;
            }
            call.Finish();
            ServerFinishedCall?.Invoke(this, new ConnectionEventArgs(port1, port2, string.Format($"Call finished. Duration: {call.Duration:hh\\:mm\\:ss}")));
            CallingPorts.Remove(port1);
            CallingPorts.Remove(port2);
            EnabledPorts.Add(port1);
            EnabledPorts.Add(port2);

            CurrentCalls.Remove(call);
            StorageCalls.Add(call);
            CallFinished?.Invoke(call, EventArgs.Empty);
        }
Ejemplo n.º 2
0
        protected virtual void PortOnCallAccepted(object sender, AnswerEventArgs e)
        {
            var port1 = ActivePorts.FirstOrDefault(x => x.Key.Number == e.number1).Key;
            var port2 = EnabledPorts.FirstOrDefault(x => x.Number == e.number2);

            AnswerOnAccept?.Invoke(this, new ConnectionEventArgs(port1, port2, e.message));
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        public bool Equals(MPowerDevice other)
        {
            if (this == other)
            {
                return true;
            }

            return Id == other.Id &&
                Name == other.Name &&
                Username == other.Username &&
                Password == other.Password &&
                DeviceIP == other.DeviceIP &&
                EnabledPorts.SetEquals(other.EnabledPorts) &&
                EnabledTypes.SetEquals(other.EnabledTypes) &&
                ((Resolution.Count == other.Resolution.Count) &&
                 !Resolution.Except(other.Resolution).Any());
        }
Ejemplo n.º 6
0
        protected virtual void PortOnPortConnectionEstablished(object sender, ConnectionEstablishedEventArgs e)
        {
            var port1 = e.port1;
            var port2 = e.port2;

            if (port1 == null || port2 == null)
            {
                return;
            }
            ActivePorts.Remove(port1);
            EnabledPorts.Remove(port2);
            CallingPorts.Add(port1);
            CallingPorts.Add(port2);

            var call = new Call(port1.Number, port2.Number);

            call.Start();
            CurrentCalls.Add(call);
        }
Ejemplo n.º 7
0
 private void CheckActivePortCalledNumber(Port port, int callNumber)
 {
     if (IsDisableListContainsCalledNumber(callNumber))
     {
         UserIsUnavaliable?.Invoke(port, "User is unavaliable now. Please try again.");
     }
     else if (IsActiveListContainsCalledNumber(callNumber))
     {
         UserIsBusy?.Invoke(port, "User is busy. Please try again later.");
     }
     else if (IsEnabledListContainsCalledNumber(callNumber))
     {
         var port2 = EnabledPorts.FirstOrDefault(x => x.Number == callNumber);
         if (port2 != null)
         {
             EstablishConnection?.Invoke(this, new ConnectionEventArgs(port, port2));
         }
     }
     else
     {
         UserDoesntExists?.Invoke(port, "We're sorry, but user with this number doesn't exists.");
     }
 }
Ejemplo n.º 8
0
 private bool IsEnabledListContainsCalledNumber(int number)
 {
     return(EnabledPorts.Any(port => port.Number == number));
 }