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 SendOperatorTopUpPhoneAccountRequestStatus GetBalance(EDTS.DirectTopUpServices.BusinessEntities.OperatorDistributorTimeout op, EDTS.DirectTopUpServices.BusinessEntities.OperatorTopUpPhoneAccountRequest request) { SendOperatorTopUpPhoneAccountRequestStatus responseStatus = new SendOperatorTopUpPhoneAccountRequestStatus(); switch (op.OperatorName) { case "Operator0": responseStatus.StatusID = Settings.INVALID_OPERATOR_ERROR_CODE; break; case "Operator1": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.Success; responseStatus.ReceiptNumber = "123.09"; break; case "Operator2": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorAccessDenied; break; case "Operator3": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorAuthenticationError; break; case "Operator4": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorSubscriberNotValid; break; case "Operator5": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorSubscriberTemporarilyBlocked; break; case "Operator6": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorRefillNotAllowed; break; case "Operator7": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorInvalidRequestParameters; break; case "Operator8": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorSystemInternalError; break; case "Operator9": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorThrewException; break; case "Operator10": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorTimedOut; break; case "Operator11": throw new NotImplementedException(); break; case "Operator12": responseStatus.StatusID = (int)SendOperatorTopUpPhoneAccountRequestStatusType.OperatorGatewayInvalid; break; case "Operator13": throw new Exception("Exception calling the assembly."); break; } return responseStatus; }
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; }