/// <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));
Example #2
0
 /// <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)));
Example #4
0
        /// <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, "Ошибки отсутствуют"));
        }
Example #5
0
 /// <summary>
 /// Сформировать путь для сохранения подписи
 /// </summary>
 public static string GetFilePathByFolder(string signatureFolderPath, string personId, bool isVerticalImage) =>
 FilePathOperations.CombineFilePath(signatureFolderPath, personId + (isVerticalImage ? "_rotated" : String.Empty),
                                    SaveFormat);