public void AnswerMessage(RespondState state, PhoneNumber number, PhoneNumber target) { switch (state) { case RespondState.Accept: Console.WriteLine("This number: {0} accepted call from number: {1}", number.ToString(), target.ToString()); break; case RespondState.Decline: Console.WriteLine("This number: {0} declined call from number: {1}", number.ToString(), target.ToString()); break; case RespondState.Ending: Console.WriteLine("Terminal with number: {0}, calling ended", number.ToString()); break; default: break; } }
public void EndCall(PhoneNumber targetNumber, RespondState state) { EndCallEvent?.Invoke(this, new EventArgsEndCall(phoneNumber, targetNumber, state)); }
public void AnswerCall(PhoneNumber targetNumber, RespondState state) { AnswerEvent?.Invoke(this, new EventArgsAnswer(phoneNumber, targetNumber, state)); }
public EventArgsAnswer(PhoneNumber number, PhoneNumber phoneTarget, RespondState state) { Number = number; TargetNumber = phoneTarget; CurrentState = state; }
public RespondState AnswerChoice(PhoneNumber phoneNumbur, PhoneNumber phoneTarget, RespondState state) { int actionStopper = 1; Console.WriteLine("Incoming call from number: {0} to terminal with number {1}", phoneNumbur.ToString(), phoneTarget.ToString()); while (actionStopper > 0) { Console.WriteLine("Answer? Y/N"); var k = Console.ReadKey().Key; if (k == ConsoleKey.Y) { actionStopper = 0; state = RespondState.Accept; Console.WriteLine(); } else if (k == ConsoleKey.N) { actionStopper = 0; state = RespondState.Decline; Console.WriteLine(); } } return(state); }
public EventArgsEndCall(PhoneNumber number, PhoneNumber targetNumber, RespondState state) { Number = number; TargetNumber = targetNumber; CurrentState = state; }
public void Calling(object sender, IEventArgsCalling e) { if (usersData.ContainsKey(e.TargetNumber) && e.TargetNumber != e.Number || e is EventArgsEndCall) { IPort targetPort; IPort port; if (e is EventArgsEndCall) { var callListFirst = callInfo; if (callListFirst.CallerNumber == e.Number) { targetPort = usersData[callListFirst.TargetNumber]; port = usersData[callListFirst.CallerNumber]; } else { port = usersData[callListFirst.TargetNumber]; targetPort = usersData[callListFirst.CallerNumber]; } } else { targetPort = usersData[e.TargetNumber]; port = usersData[e.Number]; } if (targetPort.PortState == PortState.Connected && port.PortState == PortState.Connected) { CallInfo info; if (e is EventArgsAnswer) { info = callInfo; var answerArgs = (EventArgsAnswer)e; targetPort.AnswerCall(answerArgs.Number, answerArgs.TargetNumber, answerArgs.CurrentState); Thread.Sleep(4000); info.TimeEndCall = DateTime.Now; GetCallTime(); } if (e is EventArgsCall) { Terminal term = new Terminal(); var callArgs = (EventArgsCall)e; info = new CallInfo(callArgs.Number, callArgs.TargetNumber, DateTime.Now, DateTime.Now); callInfo = info; targetPort.IncomingCall(callArgs.Number, callArgs.TargetNumber); } if (e is EventArgsEndCall) { var endArgs = (EventArgsEndCall)e; info = callInfo; RespondState state = endArgs.CurrentState; if (state == RespondState.Ending) { targetPort.AnswerCall(endArgs.Number, endArgs.TargetNumber, RespondState.Ending); } else if (state == RespondState.Decline) { targetPort.AnswerCall(endArgs.Number, endArgs.TargetNumber, RespondState.Decline); GetCallTime(); } SentDataEvent?.Invoke(new BillingCallInfo(GetInfoList().CallerNumber, GetInfoList().TargetNumber , GetInfoList().TimeStartCall, GetInfoList().TimeEndCall)); } } else { interaction.CallingToDisconnectedTerminalMessage(e.TargetNumber); } } else if (!usersData.ContainsKey(e.TargetNumber)) { interaction.CallingToNonExictentNumberMessage(e.TargetNumber); } }