Пример #1
0
        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);
        }
Пример #2
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, "Ошибки отсутствуют"));
        }