/// <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 async Task <IResultValue <FileDataRequestClient> > ToFileDataRequest(IFileData fileData, byte[] fileSource, string fileAdditionalPath) => await fileAdditionalPath. WhereContinueAsyncBind(filePath => !String.IsNullOrWhiteSpace(filePath), filePath => _fileSystemOperations.FileToByteAndZip(filePath), filePath => Task.FromResult((IResultValue <byte[]>) new ResultValue <byte[]>(new byte[0]))). ResultValueOkAsync(fileAdditionalSource => new FileDataRequestClient(fileData.FilePath, fileData.ColorPrintType, fileData.StatusProcessing, fileSource, FilePathOperations.ExtensionWithoutPointFromPath(fileAdditionalPath), fileAdditionalSource));
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 static bool ValidateExtension(string filePath, bool onlyDgnAndDocTypes) => FilePathOperations.ExtensionWithoutPointFromPath(filePath). Map(extension => onlyDgnAndDocTypes ? ValidFileExtensions.ContainsInDocAndDgnFileTypes(extension) : ValidFileExtensions.ContainsInFileTypesValid(extension));
/// <summary> /// Корректность пути сохранения Pdf /// </summary> private static bool PdfPathValid(string filePath) => FilePathOperations.ExtensionWithoutPointFromPath(filePath). Map(fileExtension => !String.IsNullOrEmpty(filePath) && !String.IsNullOrEmpty(fileExtension) && FileExtensionType.Pdf.ToString().ContainsIgnoreCase(fileExtension));
/// <summary> /// Получить путь к сохраненному файлу для обработки /// </summary> private static IResultCollection <IFileDataSourceServer> GetSavedFileDataSource(IDocumentLibrary documentLibrary, IFilePath filePath) => new FileDataSourceServer(documentLibrary.FullName, filePath.ChangeExtensions(FilePathOperations.ExtensionWithoutPointFromPath(documentLibrary.FullName)). FilePathClient, ConvertingModeType.Main). Map(fileDataSource => new ResultValue <IFileDataSourceServer>(fileDataSource).ToResultCollection());