public async Task <IActionResult> Confirmation([FromHeader] string apiJwtToken, [FromBody] WebServiceRequest webServiceRequest)
        {
            try
            {
                var confirmationReportParameters = new ConfirmationReportParameters
                {
                    ApiJwtToken     = apiJwtToken,
                    ActionName      = webServiceRequest.ActionName,
                    Template        = TemplateConstants.ConfirmationTemplate,
                    Format          = webServiceRequest.Format,
                    TradeReferences = webServiceRequest.Entities
                };

                var confirmationReport = await confirmationReportService.CreateReport(confirmationReportParameters);

                return(confirmationReport.Status == ApiConstants.SuccessResult
                    ? (IActionResult)Ok(confirmationReport)
                    : BadRequest(confirmationReport));
            }
            catch (Exception e)
            {
                logger.LogError(e, e.Message);
                return(BadRequest(new ApiResponseWrapper <WebServiceResponse> {
                    Message = e.Message, Status = ApiConstants.FailedResult
                }));
            }
        }
        public async Task <ApiResponseWrapper <WebServiceResponse> > CreateReport(ConfirmationReportParameters confirmationReportParameters)
        {
            try
            {
                var apiJwtToken = confirmationReportParameters.ApiJwtToken;
                var request     = new TradeRequest {
                    TradeReferences = confirmationReportParameters.TradeReferences
                };
                var trades = await tradeService.Trades(apiJwtToken, request);

                if (trades.Status == ApiConstants.SuccessResult)
                {
                    var enrichedTrades = await EnrichTradesWithCountries(trades.Data, confirmationReportParameters);

                    var template = await reportTemplateService.ReportTemplate(confirmationReportParameters.Template);

                    var tradeDataObjects = enrichedTrades.ToList();
                    var report           = await reportRenderService.Render(template?.Data?.Html,
                                                                            confirmationReportParameters.Format, tradeDataObjects);

                    var ms = new MemoryStream();

                    report.Content.CopyTo(ms);

                    return(new ApiResponseWrapper <WebServiceResponse>
                    {
                        Status = ApiConstants.SuccessResult,
                        Data = new WebServiceResponse
                        {
                            ActionName = confirmationReportParameters.ActionName,
                            Format = confirmationReportParameters.Format,
                            Data = Convert.ToBase64String(ms.ToArray())
                        }
                    });
                }

                logger.LogError("Error calling Trade API", trades.Message);
                return(new ApiResponseWrapper <WebServiceResponse> {
                    Status = ApiConstants.FailedResult, Message = trades.Message
                });
            }
            catch (Exception e)
            {
                logger.LogError(e, e.Message);
                return(new ApiResponseWrapper <WebServiceResponse> {
                    Status = ApiConstants.FailedResult, Message = e.Message
                });
            }
        }