public async Task <FileInfoDTO> CreateAsync(CreateFileRequest file, Stream data) { if (!Directory.Exists(StorageFolderPath)) { Directory.CreateDirectory(StorageFolderPath); } var fileInfoDto = FileMapper.ConvertToFileInfoDTO(file); var fileInfo = await _db.Files.CreateAsync(FileMapper.ConvertToFileInfo(fileInfoDto)); var filePath = GetAbsoluteFilePath(fileInfo); if (!File.Exists(filePath)) { using (var fileStream = File.Create(filePath)) { using (data) { if (data.CanSeek) { data.Seek(0, SeekOrigin.Begin); } await data.CopyToAsync(fileStream); } } await _db.SaveAsync(); // don't move to other place. } return(await GetFileInfoAsync(fileInfo.Id)); }
private List <FileInfoDTO> MapFilesToDto(IEnumerable <FileInfoViewModel> files) { return(files .Select(file => { if (file.isAttached) { var newFile = FileMapper.ConvertToCreateFileRequest(file); return _fileService.CreateAsync(newFile, _fileManager.GetFileStream(file)).Result; } else { return FileMapper.ConvertToFileInfoDTO(file); } }) .ToList()); }
private async Task <FileInfoDTO> GetFileFromDbAsync(Guid id) { return(FileMapper.ConvertToFileInfoDTO(await _db.Files.GetAsync(id))); }