/// <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));
        }
Пример #2
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);
        }
 /// <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>());
Пример #4
0
 /// <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")));
Пример #5
0
        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>();
        }
Пример #6
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, "Ошибки отсутствуют"));
        }
Пример #7
0
        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);
        }
Пример #8
0
 /// <summary>
 /// Проверить расширение на соответствие допустимым типам
 /// </summary>
 private static bool ValidateExtension(string filePath, bool onlyDgnAndDocTypes) =>
 FilePathOperations.ExtensionWithoutPointFromPath(filePath).
 Map(extension => onlyDgnAndDocTypes
                      ? ValidFileExtensions.ContainsInDocAndDgnFileTypes(extension)
                      : ValidFileExtensions.ContainsInFileTypesValid(extension));
Пример #9
0
 /// <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); });