public void TestSetup()
        {
            var testRunner = new TestRunner();

            sendReversalOperations = new SendReversalOperations(testRunner);
            sendOperations         = new SendOperations(testRunner);
        }
 /// <summary>
 ///     Constructor.
 /// </summary>
 /// <param name="messageBus"></param>
 /// <param name="sendParameters"></param>
 /// <param name="sendReversalParameters"></param>
 /// <param name="agentSelector"></param>
 /// <param name="sendReversalOperations"></param>
 /// <param name="sendOperations"></param>
 public SendReversalHandler(IMessageBus messageBus, ISendReversalParametersViewModel sendReversalParameters,
                            IAgentSelectorViewModel agentSelector, SendReversalOperations sendReversalOperations, SendOperations sendOperations)
 {
     SendOperations          = sendOperations;
     SendReversalOperations  = sendReversalOperations;
     _messageBus             = messageBus;
     _agentSelector          = agentSelector;
     _sendReversalParameters = sendReversalParameters;
 }
        /// <summary>
        ///     Run this transaction.
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public override ITransactionResult Transaction(object parameters)
        {
            var sendReversalParameters = (SendReversalParameters)parameters;

            TestConfig.TestSettings = new IntegrationTestSettingsModel {
                AcEnvironment = sendReversalParameters.Environment
            };

            var amtRangeParsed       = Enum.TryParse(sendReversalParameters.AmtRange, true, out AmountRange amtRange);
            var itemChoiceTypeParsed = Enum.TryParse(sendReversalParameters.FeeType, true, out ItemChoiceType1 itemChoiceType);
            var sendRequest          = new SendRequest
            {
                Environment         = sendReversalParameters.Environment,
                AgentCountryIsoCode = sendReversalParameters.AgentCountryIsoCode,
                AgentId             = sendReversalParameters.AgentId,
                AgentPos            = sendReversalParameters.AgentPos,
                AgentState          = sendReversalParameters.GetAgentState(),
                Amount         = (double)sendReversalParameters.CustomAmount,
                AmtRange       = amtRangeParsed ? amtRange : AmountRange.CustomAmount,
                Country        = sendReversalParameters.Country,
                State          = sendReversalParameters.State,
                FeeType        = itemChoiceTypeParsed ? itemChoiceType : ItemChoiceType1.amountExcludingFee,
                SendCurr       = sendReversalParameters.SendCurr,
                ServiceOption  = sendReversalParameters.ServiceOption,
                ThirdPartyType = sendReversalParameters.ThirdPartyType
            };

            var sendData = new SendData(sendRequest);

            sendData = SendOperations.SendCompleteForNewCustomer(sendData);

            var sendReversalRequest = new SendReversalRequest
            {
                AgentId             = sendReversalParameters.AgentId,
                AgentPos            = sendReversalParameters.AgentPos,
                AgentCountryIsoCode = sendReversalParameters.AgentCountryIsoCode,
                AgentState          = sendReversalParameters.AgentState,
                ReferenceNumber     = sendData.CompleteSessionResp.Payload.ReferenceNumber,
                RefundReason        = new EnumeratedIdentifierInfo {
                    Identifier = sendReversalParameters.RefundReason
                },
                RefundFee = sendReversalParameters.RefundFee
            };

            var sendReversalData = new SendReversalData(sendReversalRequest);

            sendReversalData = SendReversalOperations.SendReversalComplete(sendReversalData);

            return(new TransactionResult {
                Result = sendReversalData
            });
        }