public FileDataServer(IFileDataServer fileDataServer, StatusProcessing statusProcessing,
                       IEnumerable <IFileDataSourceServer> filesDataSourceServer, IEnumerable <IErrorCommon> fileErrors)
     : this(fileDataServer.NonNull().FilePathServer, fileDataServer.NonNull().FilePathClient,
            fileDataServer.NonNull().ColorPrintType, statusProcessing,
            fileDataServer.NonNull().AttemptingConvertCount, filesDataSourceServer, fileErrors)
 {
 }
Example #2
0
 /// <summary>
 /// Получить коллекцию путей
 /// </summary>
 /// <returns></returns>
 public static FilePathCollection GetFilePathCollection(IFileDataServer fileDataServer, IFileSystemOperations fileSystemOperations) =>
 new FilePathCollection(CreateSavingPath(fileDataServer.FilePathServer, fileDataServer.FileExtensionType, fileSystemOperations).
                        Map(fileDataServer.ChangeServerPath),
                        CreateSavingPath(fileDataServer.FilePathServer, FileExtensionType.Pdf, fileSystemOperations).
                        Map(fileDataServer.ChangeServerPath),
                        CreateSavingPath(fileDataServer.FilePathServer, FileExtensionType.Print, fileSystemOperations).
                        Map(fileDataServer.ChangeServerPath));
 /// <summary>
 /// Конвертировать файл серверной модели в окончательный ответ
 /// </summary>
 public async Task <FileDataResponseServer> FileDataToResponse(IFileDataServer fileDataServer) =>
 await fileDataServer.FilesDataSourceServer.Select(FileDataSourceToResponse).
 Map(Task.WhenAll).
 MapAsync(filesDataSource =>
          new FileDataResponseServer(fileDataServer.FilePathClient, fileDataServer.StatusProcessing,
                                     fileDataServer.FileErrors.Concat(filesDataSource.SelectMany(resultSource => resultSource.Errors)).
                                     Select(ToErrorCommon).ToList(),
                                     filesDataSource.Select(resultSource => resultSource.Value).ToList()));
 /// <summary>
 /// Запустить конвертацию. Инициировать начальные значения
 /// </summary>
 private IFileDataServer ConvertingFile(IFileDataServer fileDataServer, IConvertingSettings convertingSettings) =>
 LoadAndSaveDocument(fileDataServer).
 ResultValueOkBind(document =>
                   MakeConvertingFileActions(document, fileDataServer, convertingSettings).
                   Map(filesData => CloseFile(document, fileDataServer).
                       Map(closeResult => filesData.ConcatErrors(closeResult.Errors)).
                       ToResultCollection())).
 Map(result => new FileDataServer(fileDataServer, StatusProcessing.ConvertingComplete, result.Value, result.Errors));
 /// <summary>
 /// Конвертировать файл до превышения лимита
 /// </summary>
 private IFileDataServer ConvertingByCountLimit(IFileDataServer fileDataServer, IConvertingSettings convertingSettings) =>
 fileDataServer.
 Void(_ => _loggerService.LogByObject(LoggerLevel.Info, LoggerAction.Operation, ReflectionInfo.GetMethodBase(this), fileDataServer.FileNameServer)).
 WhereOk(fileData => !fileData.IsCompleted,
         okFunc: fileData =>
         ExecuteBindResultValue(() => _convertingFileData.Converting(fileData, convertingSettings)).
         ResultValueBad(errors => fileData.IsValidByAttemptingCount
                                          ? fileData.SetAttemptingCount(fileData.AttemptingConvertCount + 1).
                        Void(_ => _convertingFileData.CloseApplication()).
                        Map(fileDataUncompleted => ConvertingByCountLimit(fileDataUncompleted, convertingSettings))
                                          : new FileDataServer(fileData, StatusProcessing.ConvertingComplete, errors)).
         Value);
 /// <summary>
 /// Конвертировать файл серверной модели в промежуточную
 /// </summary>
 private static FileDataShortResponseServer FileDataToIntermediateResponse(IFileDataServer fileDataServer) =>
 new FileDataShortResponseServer(fileDataServer.FilePathClient, fileDataServer.StatusProcessing,
                                 fileDataServer.FileErrors.Select(ToErrorCommon).ToList());
 /// <summary>
 /// Отправить промежуточный отчет
 /// </summary>
 private async Task <IResultValue <IPackageServer> > SendIntermediateResponse(IPackageServer packageServer, IFileDataServer fileDataServer) =>
 await _converterServerPackageDataToDto.FileDataToResponse(fileDataServer).
 Void(_ => _messagingService.ShowMessage("Отправка данных в базу...")).
 MapBindAsync(fileDataRequest => _convertingServerServiceFactory.
              UsingServiceRetry(service => service.Operations.UpdateFromIntermediateResponse(packageServer.Id, fileDataRequest))).
 ResultVoidBadAsync(errors => _loggerService.ErrorsLog(errors)).
 ResultVoidBadAsync(errors => _messagingService.ShowErrors(errors)).
 ResultValueOkAsync(packageServer.SetStatusProcessingProject);
 public FileDataServer(IFileDataServer fileDataServer, StatusProcessing statusProcessing, IEnumerable <IErrorCommon> fileErrors)
     : this(fileDataServer, statusProcessing, fileDataServer.NonNull().FilesDataSourceServer, fileErrors)
 {
 }
 public FileDataServer(IFileDataServer fileDataServer, StatusProcessing statusProcessing, IErrorCommon fileErrors)
     : this(fileDataServer, statusProcessing, new List <IErrorCommon> {
     fileErrors
 })
 {
 }
 /// <summary>
 /// Печать и экспорт файла
 /// </summary>
 private IResultCollection <IFileDataSourceServer> MakeConvertingFileActions(IDocumentLibrary documentLibrary, IFileDataServer fileDataServer,
                                                                             IConvertingSettings convertingSettings) =>
 CreateProcessingFile(documentLibrary, fileDataServer, convertingSettings).
 Map(saveResultPdf => ExportFileToSaveResult(saveResultPdf, documentLibrary, fileDataServer, convertingSettings)).
 Map(CheckDataSourceExistence);
 /// <summary>
 /// Конвертировать файл
 /// </summary>
 public IFileDataServer Converting(IFileDataServer fileDataServer, IConvertingSettings convertingSettings) =>
 fileDataServer.
 Void(fileData => _messagingService.ShowMessage($"Конвертация файла {fileDataServer.FileNameClient}")).
 Void(fileData => _loggerService.LogByObject(LoggerLevel.Info, LoggerAction.Operation, ReflectionInfo.GetMethodBase(this), fileDataServer.FileNameServer)).
 Map(fileData => ConvertingFile(fileData, convertingSettings));
 /// <summary>
 /// Создать PDF
 /// </summary>
 private IResultCollection <IFileDataSourceServer> CreateProcessingFile(IDocumentLibrary documentLibrary, IFileDataServer fileDataServer,
                                                                        IConvertingSettings convertingSettings) =>
 new ResultError().
 ResultVoidOk(_ => _messagingService.ShowMessage("Создание файлов PDF и печать")).
 ResultVoidOk(_ => _loggerService.LogByObject(LoggerLevel.Info, LoggerAction.Operation, ReflectionInfo.GetMethodBase(this), fileDataServer.FileNameServer)).
 ResultValueOkBind(_ =>
                   _applicationConverting.
                   CreateProcessingFile(documentLibrary, ConvertingFilePath.GetFilePathCollection(fileDataServer, _fileSystemOperations),
                                        convertingSettings, fileDataServer.ColorPrintType)).
 Void(result => _messagingService.ShowAndLogErrors(result.Errors)).
 ToResultCollection();
 /// <summary>
 /// Заменить файл после конвертирования в пакете
 /// </summary>
 public IPackageServer ChangeFileDataServer(IFileDataServer fileDataServer) =>
 FilesDataServer.
 Where(fileData => fileData.FilePathServer != fileDataServer.FilePathServer).
 Append(fileDataServer).
 Map(filesData => new PackageServer(this, filesData));