public async Task <ClientResponse> ReversalAsync(ReversalType reversal, string traceNumber = null)
        {
            var item    = reversal.CopyToBase();
            var xmlBody = new Request {
                Item = item
            };
            var url     = Endpoint.Url();
            var request = new ClientRequest
            {
                Request     = xmlBody,
                TraceNumber = traceNumber,
            };

            return(await SendRequestAsync(url, request));
        }
示例#2
0
 public async Task <ClientResponse> ReversalAsync(ReversalType reversal, string traceNumber = null)
 {
     return(await _client.ReversalAsync(reversal, traceNumber));
 }
示例#3
0
 public ClientResponse Reversal(ReversalType reversal, string traceNumber = null)
 {
     return(_client.Reversal(reversal, traceNumber));
 }
示例#4
0
 public Task <reversalResponse> Reversal(ReversalType reversal)
 {
     return(client.ReversalAsync(reversal));
 }
        private void CheckReversalRequestCorrectness()
        {
            // Check there are not more requested inputs than workflow inputs or outputa
            if (NinRequest > Nin)
            {
                throw new ArgumentException($"The number of requested inputs is {NinRequest}, but the workflow contains only {Nin} inputs");
            }
            if (NinRequest > Nout)
            {
                throw new ArgumentException($"The number of requested inputs is {NinRequest}, but the workflow contains only {Nout} outputs");
            }

            // Check reversed inputs are amongst the workfolw inputs
            var inputsHash = new HashSet <string>(workflow.ModelDataInputs.GetNames());

            foreach (var data in this.RequestedInputsToReverse.GetNames())
            {
                if (!inputsHash.Contains(data))
                {
                    throw new ArgumentException($"The requested input {data} is not amongst the workflow inputs");
                }
            }

            // Check there are not more requested outputs than workflow workfolw outputs
            if (NoutRequest > Nout)
            {
                throw new ArgumentException($"The number of requested outputs is {NoutRequest}, but the workflow contains only {Nout} outputs");
            }
            if (NoutRequest > Nin)
            {
                throw new ArgumentException($"The number of requested outputs is {NoutRequest}, but the workflow contains only {Nin} inputs");
            }

            // Check reversed outputs are amongst the workfolw outputs
            var outputsHash = new HashSet <string>(workflow.ModelDataOutputs.GetNames());

            foreach (var data in this.RequestedOutputsToReverse.GetNames())
            {
                if (!outputsHash.Contains(data))
                {
                    throw new ArgumentException($"The requested input {data} is not amongst the workflow outputs");
                }
            }


            if (NoutRequest > NinRequest)
            {
                Type = ReversalType.Outputs;

                // Validate determined reversal
                List <Set> outputsDependencies = GetDependencies();

                // Number of requested input to reverse in each requested output dependency set
                List <int> requestedInputsPerSet = CountElementsInSets(RequestedInputsToReverse, outputsDependencies);

                // Check that at least Nin outputs map to at lest one input
                IEnumerable <Data> unmmapedVariables = RequestedOutputsToReverse.Where((d, i) => requestedInputsPerSet[i] == 0);
                if (unmmapedVariables.Count() > NoutRequest - NinRequest)
                {
                    string unmmapedString = unmmapedVariables.Aggregate(String.Empty, (t, l) => t += l.Id + ", ", t => t.TrimEnd(' ', ','));
                    throw new ArgumentException($"Only {requestedInputsPerSet.Count - unmmapedVariables.Count()} outputs map to an input variable" +
                                                $", however, {RequestedInputsToReverse.Length} outputs are needed.\n\r {unmmapedString} are the unmapped ones. Try fixing guidance");
                }
            }
            else
            {
                Type = ReversalType.Inputs;

                // Validate determined reversal
                List <Set> outputsDependencies = GetDependencies();

                // Number of requested output to reverse in each requested input dependency set
                List <int> requestedOutputsPerSet = CountElementsInSets(RequestedOutputsToReverse, outputsDependencies);

                // Check that at least Nin outputs map to at lest one input
                IEnumerable <Data> unmmapedVariables = RequestedInputsToReverse.Where((d, i) => requestedOutputsPerSet[i] == 0);
                if (unmmapedVariables.Count() > NinRequest - NoutRequest)
                {
                    string unmmapedString = unmmapedVariables.Aggregate(String.Empty, (t, l) => t += l.Id + ", ", t => t.TrimEnd(' ', ','));
                    throw new ArgumentException($"Only {requestedOutputsPerSet.Count - unmmapedVariables.Count()} inputs map to an output variable" +
                                                $", however, {RequestedOutputsToReverse.Length} inputs are needed.\n\r {unmmapedString} are the unmapped ones. Try fixing guidance");
                }
            }
        }
 public ClientResponse Reversal(ReversalType reversal, string traceNumber = null)
 {
     return(ReversalAsync(reversal, traceNumber).GetAwaiter().GetResult());
 }