示例#1
0
        public SendOperatorTopUpPhoneAccountRequestStatus GetBalance(OperatorDistributorTimeout op, OperatorTopUpPhoneAccountRequest request)
        {
            SendOperatorTopUpPhoneAccountRequestStatus status = new SendOperatorTopUpPhoneAccountRequestStatus();
            object response = null;
            
            try
            {
                //Get Operator List
                Type gatewayType = Singleton.Instance.GatewayTable[op.OperatorName];
                
                //Prepare data to send
                object activeObject = Activator.CreateInstance(gatewayType);
                object[] parameters = new object[] { op, request };
                //SendOperatorTopUpPhoneAccountRequestStatus edtsResponse = new SendOperatorTopUpPhoneAccountRequestStatus();

                //Send Balance
                response = gatewayType.InvokeMember(Settings.BALANCE_METHOD, BindingFlags.Default | BindingFlags.InvokeMethod, null, activeObject, parameters);

                //Cast to SendOperatorTopUpPhoneAccountRequestStatus
                status = (SendOperatorTopUpPhoneAccountRequestStatus)response;                                
            }
            catch (Exception ex)
            {
                CLogger.WriteLog(ELogLevel.ERROR, "Balance Client Exception - "+ ex.Message);

                throw (ex);
            }

            return status;
        }
示例#2
0
        public Result InvokeGetBalance(string operatorName)
        {
            client = clientFactory.GetClient();

            SendOperatorTopUpPhoneAccountRequestStatus responseStatus = new SendOperatorTopUpPhoneAccountRequestStatus();
            Result balance = new Result()
                {
                    OperatorName = operatorName
                };

            #region Create Request Items

            Operator o = new Operator()
            {
                OperatorName = operatorName
            };

            OperatorDistributorTimeout op = new OperatorDistributorTimeout(o)
            {
                DistributorTimeout = 120
            };

            OperatorTopUpPhoneAccountRequest request = new OperatorTopUpPhoneAccountRequest()
            {
                TransactionID2 = GetNewTransationId()
            };

            #endregion

            try
            {
                responseStatus = client.GetBalance(op, request);
                balance.ErrorCode = responseStatus.StatusID;
                balance.ErrorCodeDescription = Enum.GetName(responseCodes.GetType(), responseStatus.StatusID);

                if (balance.ErrorCode == (int)SendOperatorTopUpPhoneAccountRequestStatusType.Success)
                {
                    balance.Balance = responseStatus.ReceiptNumber;
                }

                CLogger.WriteLog(ELogLevel.INFO, "Balance Request Succeed for - " + operatorName + " Balance: " + responseStatus.ReceiptNumber);
            }
            catch (Exception e)
            {
                CLogger.WriteLog(ELogLevel.ERROR, e.Message);

                if (e.GetType() == typeof(NotImplementedException))
                {
                    balance.ErrorCode = Settings.NOT_IMPLEMENTED_ERROR_CODE;
                    balance.ErrorCodeDescription = Settings.NOT_IMPLEMENTED_ERROR_CODE_DESCRIPTION;
                }
                else if (e.InnerException != null)
                {
                    if (e.InnerException.Message == Settings.TIMEOUT)
                    {
                        balance.ErrorCode = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorTimedOut;
                        balance.ErrorCodeDescription = Enum.GetName(responseCodes.GetType(), responseStatus.StatusID);
                    }
                }
                else
                {
                    balance.ErrorCode = Settings.EXCEPTION_ERROR_CODE;
                    balance.ErrorCodeDescription = Settings.EXCEPTION_ERROR_CODE_DESCRIPTION;
                }
            }

            return balance;
        }