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) { }
/// <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));