package at.eisibaer.jbear2.service import at.eisibaer.jbear2.dto.board.BoardDto import at.eisibaer.jbear2.model.Board import at.eisibaer.jbear2.model.User import at.eisibaer.jbear2.repository.BoardRepository import at.eisibaer.jbear2.repository.FileRepository import at.eisibaer.jbear2.repository.UserRepository import at.eisibaer.jbear2.service.mapper.BoardMapper import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.ResponseEntity import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @Service class BoardServiceImpl ( private val boardRepository: BoardRepository, private val userRepository: UserRepository, private val fileRepository: FileRepository, private val boardMapper: BoardMapper, ) : BoardService { val log: Logger = LoggerFactory.getLogger(BoardServiceImpl::class.java); @Transactional override fun getBoardsByUser(user: User): ResponseEntity?> { val boards = boardRepository.findAllByOwner(user) return ResponseEntity.ok(boardMapper.toDto(boards)); } @Transactional override fun getBoardByUserAndId(user: User, boardId: Long): ResponseEntity { val board = boardRepository.findByIdAndOwner(boardId, user) ?: return ResponseEntity.status(404).build(); return ResponseEntity.ok(boardMapper.toDto(board)) } @Transactional override fun saveBoardToUser( user: User, boardDto: BoardDto): ResponseEntity { val board: Board = boardMapper.toEntity(boardDto, user, userRepository, fileRepository); val savedBoard: Board; try { savedBoard = boardRepository.save(board); } catch (ex: Exception) { log.error(ex.message, ex); return ResponseEntity.badRequest().build(); } return ResponseEntity.ok(boardMapper.toDto(savedBoard)) } override fun deleteBoardOfUser(user: User, boardId: Long): ResponseEntity { boardRepository.deleteById( boardId ); //TODO Delete Images return ResponseEntity.ok().build(); } }