private void OnOutgoingCall(object sender, IPhoneNumber phone) { var answerer = _terminalService.FindTerminalByNumber(phone); var caller = sender as Terminal; if (answerer != null && caller != null) { caller.RememberConnection(caller.Number, phone); _portService.ChangeState(caller.Port, PortState.Busy); CallInfo info = new CallInfo { From = caller.Number, To = phone, DateTimeStart = DateTime.Now, Duration = TimeSpan.Zero }; _callService.AddCall(info); if (answerer.Port.State != PortState.Busy) { answerer.GetCall(caller.Number); } else { Console.WriteLine($"Terminal is busy"); caller.RejectCall(); } } else { Console.WriteLine($"Phone not binded to terminal"); caller.RejectCall(); } }