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; }
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; }