/// <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));
        }
 /// <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>());
        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));