private static void LogToConsole(CreateDocumentWithFileUploadResponse response)
        {
            System.Console.WriteLine($"File respons: ");
            LogToConsole(response.uploadOKResponse.Successful ?? false,
                         response.uploadOKResponse.ErrorMessage,
                         response.uploadOKResponse.ErrorDetails);

            System.Console.WriteLine($"Project respons: ");
            LogToConsole(response.createCaseWithProjectResponse.createProjectOKResponse.Successful ?? false,
                         response.createCaseWithProjectResponse.createProjectOKResponse.ErrorMessage,
                         response.createCaseWithProjectResponse.createProjectOKResponse.ErrorDetails);

            System.Console.WriteLine($"Case respons: ");
            LogToConsole(response.createCaseWithProjectResponse.createCaseOKResponse.Successful ?? false,
                         response.createCaseWithProjectResponse.createCaseOKResponse.ErrorMessage,
                         response.createCaseWithProjectResponse.createCaseOKResponse.ErrorDetails);

            System.Console.WriteLine($"Document respons: ");
            LogToConsole(response.createDocumentOKResponse.Successful ?? false,
                         response.createDocumentOKResponse.ErrorMessage,
                         response.createDocumentOKResponse.ErrorDetails);
        }
        public static CreateDocumentWithFileUploadResponse CreateDocumentWithFileUpload(ServiceHelper serviceHelper, DocumentInfo documentInfo, CaseInfo caseInfo, ProjectInfo projectInfo)
        {
            Byte[] bytes = File.ReadAllBytes(@$ "{documentInfo.File_Path}");

            UploadArgs uploadArgsParameter = new UploadArgs(new UploadArgsParameter()
            {
                FileData = bytes.Select(b => b as object).ToList()
            });

            if (String.IsNullOrWhiteSpace(documentInfo.File_Format) == false)
            {
                uploadArgsParameter.Parameter.FileFormat = documentInfo.File_Format;
            }

            if (String.IsNullOrWhiteSpace(documentInfo.File_Title) == false)
            {
                uploadArgsParameter.Parameter.FileName = documentInfo.File_Title;
            }

            if (String.IsNullOrWhiteSpace(documentInfo.AdContextUser) == false)
            {
                uploadArgsParameter.Parameter.ADContextUser = documentInfo.AdContextUser;
            }

            if (String.IsNullOrWhiteSpace(documentInfo.User) == false)
            {
                uploadArgsParameter.Parameter.User = documentInfo.User;
            }

            UploadOKResponse uploadOKResponse = serviceHelper.FileService.Upload(uploadArgsParameter);

            CreateDocumentArgsParameterFilesItem file = new CreateDocumentArgsParameterFilesItem()
            {
                Title  = documentInfo.File_Title,
                Format = documentInfo.File_Format,
                UploadedFileReference = uploadOKResponse.FileReference
            };

            List <CreateDocumentArgsParameterFilesItem> files = new List <CreateDocumentArgsParameterFilesItem>();

            files.Add(file);

            CreateDocumentArgsParameterFilesFromTemplateItem template = null;

            if (String.IsNullOrWhiteSpace(documentInfo.TemplateId) == false &&
                String.IsNullOrWhiteSpace(documentInfo.TemplateTitle) == false)
            {
                template = new CreateDocumentArgsParameterFilesFromTemplateItem()
                {
                    TemplateId = documentInfo.TemplateId,
                    Title      = documentInfo.TemplateTitle
                };
            }

            CreateCaseWithProjectResponse createCaseWithProjectResponse = null;

            if (documentInfo.CreateCase)
            {
                createCaseWithProjectResponse = CreateCase(serviceHelper, caseInfo, projectInfo);

                documentInfo.CaseNumber = createCaseWithProjectResponse.createCaseOKResponse.CaseNumber;
            }

            CreateDocumentArgs createDocumentArgs = new CreateDocumentArgs(new CreateDocumentArgsParameter()
            {
                CaseNumber      = documentInfo.CaseNumber,
                Title           = documentInfo.Title,
                UnofficialTitle = documentInfo.UnofficialTitle,
                DocumentDate    = documentInfo.DocumentDate,
                JournalDate     = documentInfo.JournalDate,
                DispatchedDate  = documentInfo.DispatchedDate,
                Category        = documentInfo.Category,
                Status          = documentInfo.Status,
                Files           = files
            });

            if (template != null)
            {
                createDocumentArgs.Parameter.FilesFromTemplate = new[] { template };
            }

            CreateDocumentOKResponse createDocumentOKResponse = serviceHelper.DocumentService.CreateDocument(createDocumentArgs);

            CreateDocumentWithFileUploadResponse createDocumentWithFileStreamResponse = new CreateDocumentWithFileUploadResponse()
            {
                uploadOKResponse              = uploadOKResponse,
                createDocumentOKResponse      = createDocumentOKResponse,
                createCaseWithProjectResponse = createCaseWithProjectResponse ?? new CreateCaseWithProjectResponse()
            };

            return(createDocumentWithFileStreamResponse);
        }