seminar/src/main/java/ru/ulstu/meeting/MeetingService.java
2025-01-30 16:46:27 +04:00

58 lines
1.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package ru.ulstu.meeting;
import jakarta.transaction.Transactional;
import jakarta.validation.constraints.NotNull;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import ru.ulstu.news.model.News;
import ru.ulstu.news.service.NewsService;
@Service
public class MeetingService {
private final MeetingRepository meetingRepository;
private final NewsService newsService;
public MeetingService(MeetingRepository meetingRepository,
NewsService newsService) {
this.meetingRepository = meetingRepository;
this.newsService = newsService;
}
@Transactional
public Meeting create(Meeting meeting) {
meeting = meetingRepository.save(meeting);
News news = newsService.create("Объявление о заседании семинара", meeting);
meeting.setNews(news);
return save(meeting);
}
public Meeting save(Meeting meeting) {
if (meeting.getNewsId() != null) {
meeting.setNews(newsService.getById(meeting.getNewsId()));
}
return (meeting.getId() != null && (meeting.getId() != 0))
? meetingRepository.save(meeting)
: create(meeting);
}
public Meeting getById(@NotNull Integer id) {
return meetingRepository
.findById(id)
.orElseThrow(() -> new RuntimeException("Запись о заседании не найдена"));
}
@Transactional
public void delete(Integer id) {
Meeting meeting = meetingRepository.getById(id);
if (meeting.getNews() != null) {
newsService.delete(meeting.getNews().getId());
}
meetingRepository.deleteById(id);
}
public Page<Meeting> getMeetings(Pageable pageable) {
return meetingRepository.findByOrderByDateDesc(pageable);
}
}