|
|
@ -1,15 +1,22 @@
|
|
|
|
package ru.ulstu.timeline.service;
|
|
|
|
package ru.ulstu.timeline.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.time.DateUtils;
|
|
|
|
|
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import ru.ulstu.deadline.model.Deadline;
|
|
|
|
|
|
|
|
import ru.ulstu.paper.model.Paper;
|
|
|
|
import ru.ulstu.timeline.model.Event;
|
|
|
|
import ru.ulstu.timeline.model.Event;
|
|
|
|
import ru.ulstu.timeline.model.EventDto;
|
|
|
|
import ru.ulstu.timeline.model.EventDto;
|
|
|
|
|
|
|
|
import ru.ulstu.timeline.model.Timeline;
|
|
|
|
import ru.ulstu.timeline.repository.EventRepository;
|
|
|
|
import ru.ulstu.timeline.repository.EventRepository;
|
|
|
|
import ru.ulstu.user.model.UserDto;
|
|
|
|
import ru.ulstu.user.model.UserDto;
|
|
|
|
import ru.ulstu.user.service.UserService;
|
|
|
|
import ru.ulstu.user.service.UserService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
|
|
|
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
|
|
|
|
|
|
|
|
|
|
@ -17,11 +24,14 @@ import static ru.ulstu.core.util.StreamApiUtils.convert;
|
|
|
|
public class EventService {
|
|
|
|
public class EventService {
|
|
|
|
|
|
|
|
|
|
|
|
private final EventRepository eventRepository;
|
|
|
|
private final EventRepository eventRepository;
|
|
|
|
|
|
|
|
private final TimelineService timelineService;
|
|
|
|
private final UserService userService;
|
|
|
|
private final UserService userService;
|
|
|
|
|
|
|
|
|
|
|
|
public EventService(EventRepository eventRepository,
|
|
|
|
public EventService(EventRepository eventRepository,
|
|
|
|
|
|
|
|
@Lazy TimelineService timelineService,
|
|
|
|
UserService userService) {
|
|
|
|
UserService userService) {
|
|
|
|
this.eventRepository = eventRepository;
|
|
|
|
this.eventRepository = eventRepository;
|
|
|
|
|
|
|
|
this.timelineService = timelineService;
|
|
|
|
this.userService = userService;
|
|
|
|
this.userService = userService;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -56,6 +66,11 @@ public class EventService {
|
|
|
|
return eventRepository.save(copyFromDto(event, eventDto)).getId();
|
|
|
|
return eventRepository.save(copyFromDto(event, eventDto)).getId();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
|
|
|
|
public Event save(Event event) {
|
|
|
|
|
|
|
|
return eventRepository.save(event);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
@Transactional
|
|
|
|
public void delete(Integer eventId) {
|
|
|
|
public void delete(Integer eventId) {
|
|
|
|
Event event = eventRepository.findOne(eventId);
|
|
|
|
Event event = eventRepository.findOne(eventId);
|
|
|
@ -84,6 +99,36 @@ public class EventService {
|
|
|
|
eventRepository.save(parentEvent);
|
|
|
|
eventRepository.save(parentEvent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void createFromPaper(Paper newPaper) {
|
|
|
|
|
|
|
|
List<Timeline> timelines = timelineService.findAll();
|
|
|
|
|
|
|
|
Timeline timeline = timelines.isEmpty() ? new Timeline() : timelines.get(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (Deadline deadline : newPaper.getDeadlines()
|
|
|
|
|
|
|
|
.stream()
|
|
|
|
|
|
|
|
.filter(d -> d.getDate().after(new Date()) || DateUtils.isSameDay(d.getDate(), new Date()))
|
|
|
|
|
|
|
|
.collect(Collectors.toList())) {
|
|
|
|
|
|
|
|
Event newEvent = new Event();
|
|
|
|
|
|
|
|
newEvent.setTitle("Дедлайн статьи");
|
|
|
|
|
|
|
|
newEvent.setStatus(Event.EventStatus.NEW);
|
|
|
|
|
|
|
|
newEvent.setExecuteDate(deadline.getDate());
|
|
|
|
|
|
|
|
newEvent.setCreateDate(new Date());
|
|
|
|
|
|
|
|
newEvent.setUpdateDate(new Date());
|
|
|
|
|
|
|
|
newEvent.setDescription("Дедлайн '" + deadline.getDescription() + "' cтатьи '" + newPaper.getTitle() + "'");
|
|
|
|
|
|
|
|
newEvent.setRecipients(new ArrayList(newPaper.getAuthors()));
|
|
|
|
|
|
|
|
newEvent.setPaper(newPaper);
|
|
|
|
|
|
|
|
eventRepository.save(newEvent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
timeline.getEvents().add(newEvent);
|
|
|
|
|
|
|
|
timelineService.save(timeline);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void updatePaperDeadlines(Paper paper) {
|
|
|
|
|
|
|
|
eventRepository.delete(eventRepository.findAllByPaper(paper));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
createFromPaper(paper);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<Event> findByCurrentDate() {
|
|
|
|
public List<Event> findByCurrentDate() {
|
|
|
|
return eventRepository.findByCurrentDate();
|
|
|
|
return eventRepository.findByCurrentDate();
|
|
|
|
}
|
|
|
|
}
|
|
|
|