// Convert from API to SDK SenderCompletionReport
        private OneSpanSign.Sdk.SenderCompletionReport ToSDKSenderCompletionReport(OneSpanSign.API.SenderCompletionReport apiSenderCompletionReport)
        {
            OneSpanSign.Sdk.SenderCompletionReport sdkSenderCompletionReport = new OneSpanSign.Sdk.SenderCompletionReport();
            sdkSenderCompletionReport.Sender = new SenderConverter(apiSenderCompletionReport.Sender).ToSDKSender();

            return(sdkSenderCompletionReport);
        }
        /// <summary>
        /// Convert from API CompletionReport to SDK CompletionReport.
        /// </summary>
        /// <returns>The SDK completion report.</returns>
        public OneSpanSign.Sdk.CompletionReport ToSDKCompletionReport()
        {
            if (apiCompletionReport == null)
            {
                return(sdkCompletionReport);
            }

            IList <OneSpanSign.API.SenderCompletionReport> senderCompletionReportList = apiCompletionReport.Senders;

            if (senderCompletionReportList.Count != 0)
            {
                OneSpanSign.Sdk.CompletionReport result = new OneSpanSign.Sdk.CompletionReport();
                result.From = apiCompletionReport.From;
                result.To   = apiCompletionReport.To;

                OneSpanSign.Sdk.SenderCompletionReport sdkSenderCompletionReport = new OneSpanSign.Sdk.SenderCompletionReport();
                foreach (OneSpanSign.API.SenderCompletionReport apiSenderCompletionReport in senderCompletionReportList)
                {
                    sdkSenderCompletionReport = ToSDKSenderCompletionReport(apiSenderCompletionReport);

                    IList <OneSpanSign.API.PackageCompletionReport> packageCompletionReportList = apiSenderCompletionReport.Packages;
                    OneSpanSign.Sdk.PackageCompletionReport         sdkPackageCompletionReport;
                    foreach (OneSpanSign.API.PackageCompletionReport apiPackageCompletionReport in packageCompletionReportList)
                    {
                        sdkPackageCompletionReport = ToSDKPackageCompletionReport(apiPackageCompletionReport);

                        IList <OneSpanSign.API.DocumentsCompletionReport> documentCompletionReportList = apiPackageCompletionReport.Documents;
                        OneSpanSign.Sdk.DocumentsCompletionReport         sdkDocumentsCompletionReport;
                        foreach (OneSpanSign.API.DocumentsCompletionReport apiDocumentsCompletionReport in documentCompletionReportList)
                        {
                            sdkDocumentsCompletionReport = ToSDKDocumentsCompletionReport(apiDocumentsCompletionReport);
                            sdkPackageCompletionReport.AddDocument(sdkDocumentsCompletionReport);
                        }

                        IList <OneSpanSign.API.SignersCompletionReport> signersCompletionReportList = apiPackageCompletionReport.Signers;
                        OneSpanSign.Sdk.SignersCompletionReport         sdkSignersCompletionReport;
                        foreach (OneSpanSign.API.SignersCompletionReport apiSignersCompletionReport in signersCompletionReportList)
                        {
                            sdkSignersCompletionReport = ToSDKSignersCompletionReport(apiSignersCompletionReport);
                            sdkPackageCompletionReport.AddSigner(sdkSignersCompletionReport);
                        }

                        sdkSenderCompletionReport.AddPackage(sdkPackageCompletionReport);
                    }

                    result.AddSender(sdkSenderCompletionReport);
                }

                return(result);
            }

            return(sdkCompletionReport);
        }