Exemplo n.º 1
0
        public void CallingRequest(object sender, CallEventArgs e)
        {
            IPort InPort = GetPortByPhoneNumber(e.TargetPhoneNumber);

            if (InPort != null)
            {
                if (GetBalanceByPhoneNumber(e.CallerPhoneNumber) <= 0)
                {
                    e.ErrorCode = CallErrorCode.NOT_ENOUGH_MONEY;
                    GetPortByPhoneNumber(e.CallerPhoneNumber).CallingErrorMessage(e);
                    return;
                }
                if (InPort.Status == PortStatus.FREE)
                {
                    e.ErrorCode = CallErrorCode.NOT_EXIST;
                    OnCallTerminate(sender, e);
                    GetPortByPhoneNumber(e.CallerPhoneNumber).CallingErrorMessage(e);
                    return;
                }
                if (InPort.Status != PortStatus.BUSY)
                {
                    InPort.OnIncomingCall(e);
                }
                else
                {
                    e.ErrorCode = CallErrorCode.BUSY;
                    OnCallTerminate(sender, e);
                    GetPortByPhoneNumber(e.CallerPhoneNumber).CallingErrorMessage(e);
                }
            }
            else
            {
                e.ErrorCode = CallErrorCode.WRONG_NUMBER;
                GetPortByPhoneNumber(e.CallerPhoneNumber).CallingErrorMessage(e);
            }
        }