/// <summary> /// Проверить целостность выходных данных для конвертации /// </summary> public static IResultError IsFileDataRequestValid(FileDataRequestBase fileDataRequest) { string fileName = Path.GetFileNameWithoutExtension(fileDataRequest?.FilePath); string fileExtension = FilePathOperations.ExtensionWithoutPointFromPath(fileDataRequest?.FilePath); bool isValidName = !String.IsNullOrWhiteSpace(fileName); bool isValidExtension = ValidFileExtensions.ContainsInDocAndDgnFileTypes(fileExtension); bool isValidDataSource = fileDataRequest?.FileDataSource != null; var errors = new List <IErrorCommon>(); if (!isValidName) { errors.Add(new ErrorCommon(ErrorConvertingType.IncorrectFileName, $"Некорректное имя файла {fileName}")); } if (!isValidExtension) { errors.Add(new ErrorCommon(ErrorConvertingType.IncorrectExtension, $"Некорректное расширение файла {fileExtension}")); } if (!isValidDataSource) { errors.Add(new ErrorCommon(ErrorConvertingType.IncorrectDataSource, $"Некорректные входные данные конвертации")); } return(new ResultError(errors)); }
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 static IResultValue <FileExtensionType> ValidateFileExtension(string fileExtension) => fileExtension. WhereContinue(_ => ValidFileExtensions.ContainsInDocAndDgnFileTypes(fileExtension), okFunc: extensionKey => new ResultValue <FileExtensionType>(ValidFileExtensions.GetDocAndDgnFileTypes(extensionKey)), badFunc: _ => new ErrorCommon(ErrorConvertingType.IncorrectExtension, $"Расширение файла {fileExtension} не соответствует типам расширений doc или Dgn"). ToResultValue <FileExtensionType>());
/// <summary> /// Сохранить файл /// </summary> public IResultAppValue <string> SaveAs(string filePath) => Path.GetExtension(filePath). WhereContinue(fileExtension => ValidFileExtensions.IsFileExtensionEqual(fileExtension, FileExtensionType.Xlsx), okFunc: fileExtension => new ResultAppValue <string>(filePath). ResultVoidOk(_ => _workbook.SaveAs(filePath)), badFunc: fileExtension => new ResultAppValue <string>(new ErrorApplication(ErrorApplicationType.IncorrectExtension, $"Некорректное расширение {fileExtension} для файла типа docx")));
public FileData(string filePath, ColorPrintType colorPrintType) { string fileExtension = FilePathOperations.ExtensionWithoutPointFromPath(filePath); string fileName = Path.GetFileNameWithoutExtension(filePath); if (String.IsNullOrEmpty(fileExtension) || String.IsNullOrEmpty(fileName) || String.IsNullOrEmpty(filePath)) { throw new ArgumentNullException(nameof(filePath)); } if (!ValidFileExtensions.ContainsInDocAndDgnFileTypes(fileExtension)) { throw new KeyNotFoundException(nameof(fileExtension)); } FileExtensionType = ValidFileExtensions.DocAndDgnFileTypeDictionary[fileExtension]; FileName = fileName; FilePath = filePath; ColorPrintType = colorPrintType; FileErrors = new List <IErrorCommon>(); }
/// <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, "Ошибки отсутствуют")); }
public void Save() { if (UploadedFile == null || UploadedFile.ContentLength <= 0) { return; } //throw new ApplicationException("File not found."); OriginalFileName = Path.GetFileName(UploadedFile.FileName); var oriFileNameWithoutExtension = Path.GetFileNameWithoutExtension(UploadedFile.FileName); var extension = Path.GetExtension(OriginalFileName).ToLower(); if (!ValidFileExtensions.Contains(extension)) { throw new ApplicationException("Invalid File extension."); } NewFileName = string.Format("{0}_{1}{2}", oriFileNameWithoutExtension, DateTime.Now.ToString("yyyyMMddHHmmss"), extension); SavePathWithFileName = Path.Combine(UploadPath, NewFileName); UploadedFile.SaveAs(SavePathWithFileName); }
/// <summary> /// Проверить расширение на соответствие допустимым типам /// </summary> private static bool ValidateExtension(string filePath, bool onlyDgnAndDocTypes) => FilePathOperations.ExtensionWithoutPointFromPath(filePath). Map(extension => onlyDgnAndDocTypes ? ValidFileExtensions.ContainsInDocAndDgnFileTypes(extension) : ValidFileExtensions.ContainsInFileTypesValid(extension));
/// <summary> /// Экспорт в DocX /// </summary> public string ExportToDocx() => Path.GetExtension(_document.FullName). WhereOk(fileExtension => !ValidFileExtensions.IsFileExtensionEqual(fileExtension, FileExtensionType.Docx), _ => { _document.SaveAs(_document.FullName + "x", WdSaveFormat.wdFormatXMLDocument); return(_document.FullName); });