/// <summary> /// Конвертер информации из трансферной модели в класс клиентской части и сохранение файла /// </summary> public async Task <FileStatus> ToFileStatusFromResponseAndSaveFile(FileDataResponseClient fileResponse) { var fileConvertSavedErrorType = await SaveFileDataSourceFromDtoResponse(fileResponse); var fileConvertErrorTypes = fileResponse.FileErrors.Select(ToErrorCommon). UnionNotNull(fileConvertSavedErrorType). Where(error => error.ErrorConvertingType != ErrorConvertingType.NoError); return(new FileStatus(fileResponse.FilePath, StatusProcessing.End, fileConvertErrorTypes)); }
/// <summary> /// Поменять статус файла после перед записью /// </summary> public FileStatus GetFileStatusCompleteResponseBeforeWriting(FileDataResponseClient fileDataResponseClient) => ConverterClientPackageDataFromDto.ConvertToFileStatusFromResponse(fileDataResponseClient);
/// <summary> /// Поменять статус файла после записи /// </summary> public async Task <FileStatus> GetFileStatusCompleteResponseAndWritten(FileDataResponseClient fileDataResponseClient) => await _converterClientPackageDataFromDto.ToFileStatusFromResponseAndSaveFile(fileDataResponseClient);
/// <summary> /// Конвертер информации из трансферной модели в класс клиентской части перед сохранением /// </summary> public static FileStatus ConvertToFileStatusFromResponse(FileDataResponseClient fileResponse) => new FileStatus(fileResponse.FilePath, StatusProcessing.Writing, fileResponse.FileErrors.Select(ToErrorCommon));
/// <summary> /// Сохранить данные из трансферной модели на жесткий диск /// </summary> private async Task <IEnumerable <IErrorCommon> > SaveFileDataSourceFromDtoResponse(FileDataResponseClient fileDataResponse) { if (fileDataResponse.FilesDataSource == null) { return new List <IErrorCommon> { new ErrorCommon(ErrorConvertingType.IncorrectDataSource, "Некорректные входные данные") } } ; string fileDirectoryName = Path.GetDirectoryName(fileDataResponse.FilePath); string convertingDirectoryName = Path.Combine(fileDirectoryName ?? throw new InvalidOperationException(nameof(fileDirectoryName)), ProjectSettings.DirectoryForSavingConvertedFiles); var fileConvertErrorTypeTasks = fileDataResponse.FilesDataSource?. Where(fileData => fileData.FileExtensionType != FileExtensionType.Print). Select(fileData => SaveFileDataSourceFromDtoResponse(fileData, convertingDirectoryName)); return(await Task.WhenAll(fileConvertErrorTypeTasks)); }