public FilePath(string filePathServer, string filePathClient, bool onlyDgnAndDocTypes = false) { if (String.IsNullOrWhiteSpace(filePathServer)) { throw new ArgumentNullException(nameof(filePathServer)); } if (String.IsNullOrWhiteSpace(filePathClient)) { throw new ArgumentNullException(nameof(filePathClient)); } if (!ValidateExtension(filePathServer, onlyDgnAndDocTypes)) { throw new KeyNotFoundException(nameof(filePathServer)); } if (!ValidateExtension(filePathClient, onlyDgnAndDocTypes)) { throw new KeyNotFoundException(nameof(filePathClient)); } string fileTypeServer = FilePathOperations.ExtensionWithoutPointFromPath(filePathServer); string fileTypeClient = FilePathOperations.ExtensionWithoutPointFromPath(filePathClient); if (fileTypeServer != fileTypeClient) { throw new InvalidOperationException("Расширения клиентской и серверной частей не равны"); } FileExtensionType = ValidFileExtensions.GetFileTypesValid(fileTypeServer); FilePathServer = FilePathOperations.GetValidFilePath(filePathServer); FilePathClient = FilePathOperations.GetValidFilePath(filePathClient); }
/// <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, "Ошибки отсутствуют")); }