/// <summary> /// Сохранить изображения подписи асинхронно /// </summary> private async Task <IResultValue <ISignatureFile> > ToSignatureFileAsync(ISignatureFileData signatureFileData, string signatureFolder) => await _fileSystemOperations.SaveFileFromByte(FilePathOperations.CombineFilePath(signatureFolder, signatureFileData.PersonId, SignatureFile.SaveFormat), signatureFileData.SignatureSource.ToArray()). ResultValueOkAsync(filePath => new SignatureFile(signatureFileData.PersonId, signatureFileData.PersonInformation, signatureFolder, signatureFileData.IsVerticalImage));
/// <summary> /// Создать папку для сохранения отконвертированных файлов по типу расширения /// </summary> public static string CreateSavingPath(string filePathServer, FileExtensionType fileExtensionType, IFileSystemOperations fileSystemOperations) => Path.GetDirectoryName(filePathServer). Map(directory => fileSystemOperations.CreateFolderByName(Path.Combine(directory, Path.GetFileNameWithoutExtension(filePathServer)), fileExtensionType.ToString())). Map(serverDirectory => FilePathOperations.CombineFilePath(serverDirectory, Path.GetFileNameWithoutExtension(filePathServer), fileExtensionType.ToString().ToLowerCaseCurrentCulture()));
/// <summary> /// Сохранить дополнительный файл /// </summary> private async Task <IResultValue <string> > SaveAdditionalFile(FileDataRequestServer fileDataRequest, string directoryPath, Guid guidPackage) => await FilePathOperations.CombineFilePath(directoryPath, guidPackage.ToString(), fileDataRequest.FileExtensionAdditional). WhereContinueAsyncBind(_ => fileDataRequest.FileDataSourceAdditional != null && fileDataRequest.FileDataSourceAdditional.Length > 0, okFunc: filePath => _fileSystemOperations.UnzipFileAndSave(filePath, fileDataRequest.FileDataSourceAdditional), badFunc: filePath => new ResultValue <string>(new ErrorCommon(ErrorConvertingType.ValueNotInitialized, $"Файл дополнительный данных не задан {filePath}")). Map(result => Task.FromResult((IResultValue <string>)result)));
/// <summary> /// Сохранить файл из трансферной модели на жесткий диск /// </summary> private async Task <IErrorCommon> SaveFileDataSourceFromDtoResponse(FileDataSourceResponseClient fileDataSourceResponseClient, string convertingDirectoryName) { string fileName = Path.GetFileNameWithoutExtension(fileDataSourceResponseClient.FileName); string fileExtension = FilePathOperations.ExtensionWithoutPoint(Path.GetExtension(fileDataSourceResponseClient.FileName)); string fileExtensionValid = ValidFileExtensions.GetFileTypesValid(fileExtension).ToString().ToLowerCaseCurrentCulture(); string directoryPath = _fileSystemOperations.CreateFolderByName(convertingDirectoryName, fileExtensionValid.ToUpperCaseCurrentCulture()); if (String.IsNullOrWhiteSpace(fileName)) { return(new ErrorCommon(ErrorConvertingType.IncorrectFileName, $"Некорректное имя файла {fileName}")); } if (String.IsNullOrWhiteSpace(fileName)) { return(new ErrorCommon(ErrorConvertingType.IncorrectExtension, $"Некорректное расширение файла {fileExtension}")); } if (String.IsNullOrWhiteSpace(directoryPath)) { return(new ErrorCommon(ErrorConvertingType.RejectToSave, "Директория сохранения не создана")); } if (fileDataSourceResponseClient.FileDataSource.Length == 0) { return(new ErrorCommon(ErrorConvertingType.IncorrectDataSource, $"Некорректные входные данные {fileName}")); } string filePath = FilePathOperations.CombineFilePath(directoryPath, fileName, fileExtensionValid); Task <bool> UnzipFileAndSaveBool() => _fileSystemOperations.UnzipFileAndSave(filePath, fileDataSourceResponseClient.FileDataSource). MapAsync(result => result.OkStatus); await _dialogService.RetryOrIgnoreBoolFunction(UnzipFileAndSaveBool, $"Файл {filePath} открыт или используется. Повторить попытку сохранения?"); return(new ErrorCommon(ErrorConvertingType.NoError, "Ошибки отсутствуют")); }
/// <summary> /// Сформировать путь для сохранения подписи /// </summary> public static string GetFilePathByFolder(string signatureFolderPath, string personId, bool isVerticalImage) => FilePathOperations.CombineFilePath(signatureFolderPath, personId + (isVerticalImage ? "_rotated" : String.Empty), SaveFormat);