complete refactor
parent
8a245584ca
commit
ad989c6dea
@ -1,7 +0,0 @@
|
||||
package ru.ulstu.activity.file.repostory;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import ru.ulstu.activity.file.model.FileData;
|
||||
|
||||
public interface FileRepository extends JpaRepository<FileData, Integer> {
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package ru.ulstu.activity.file.service;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import ru.ulstu.activity.file.model.FileData;
|
||||
|
||||
interface FileRepository extends JpaRepository<FileData, Integer> {
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package ru.ulstu.activity.paper.repository;
|
||||
package ru.ulstu.activity.paper.service;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
@ -1,10 +1,10 @@
|
||||
package ru.ulstu.activity.students.repository;
|
||||
package ru.ulstu.activity.students.service;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import ru.ulstu.activity.students.model.Scheduler;
|
||||
import ru.ulstu.activity.students.model.Task;
|
||||
|
||||
public interface SchedulerRepository extends JpaRepository<Scheduler, Integer> {
|
||||
interface SchedulerRepository extends JpaRepository<Scheduler, Integer> {
|
||||
|
||||
Scheduler findOneByTask(Task task);
|
||||
|
@ -1,11 +1,11 @@
|
||||
package ru.ulstu.activity.tags.repository;
|
||||
package ru.ulstu.activity.tags.service;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import ru.ulstu.activity.tags.model.Tag;
|
||||
|
||||
public interface TagRepository extends JpaRepository<Tag, Integer> {
|
||||
interface TagRepository extends JpaRepository<Tag, Integer> {
|
||||
|
||||
@Query("SELECT t FROM Tag t WHERE (t.tagName = :tagName)")
|
||||
Tag findByName(@Param("tagName") String tagName);
|
@ -1,170 +1,31 @@
|
||||
package ru.ulstu.activity.timeline.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import ru.ulstu.activity.conference.model.ConferenceDto;
|
||||
import ru.ulstu.activity.grant.model.GrantDto;
|
||||
import ru.ulstu.activity.paper.model.PaperDto;
|
||||
import ru.ulstu.activity.project.model.ProjectDto;
|
||||
import ru.ulstu.activity.students.model.TaskDto;
|
||||
import ru.ulstu.user.model.UserDto;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
||||
|
||||
public class EventDto {
|
||||
private final Integer id;
|
||||
@NotBlank
|
||||
private final String title;
|
||||
private final PeriodEvent period;
|
||||
private final Event.EventStatus status;
|
||||
@NotNull
|
||||
private final Date executeDate;
|
||||
private final Date createDate;
|
||||
private final Date updateDate;
|
||||
private final String description;
|
||||
private final List<UserDto> recipients;
|
||||
private PaperDto paperDto;
|
||||
private ConferenceDto conferenceDto;
|
||||
private GrantDto grantDto;
|
||||
private ProjectDto projectDto;
|
||||
private TaskDto taskDto;
|
||||
|
||||
@JsonCreator
|
||||
public EventDto(@JsonProperty("id") Integer id,
|
||||
@JsonProperty("title") String title,
|
||||
@JsonProperty("status") Event.EventStatus status,
|
||||
@JsonProperty("period") PeriodEvent period,
|
||||
@JsonProperty("executeDate") Date executeDate,
|
||||
@JsonProperty("createDate") Date createDate,
|
||||
@JsonProperty("updateDate") Date updateDate,
|
||||
@JsonProperty("description") String description,
|
||||
@JsonProperty("paperDto") PaperDto paperDto,
|
||||
@JsonProperty("recipients") List<UserDto> recipients,
|
||||
@JsonProperty("conferenceDto") ConferenceDto conferenceDto,
|
||||
@JsonProperty("grantDto") GrantDto grantDto,
|
||||
@JsonProperty("projectDto") ProjectDto projectDto,
|
||||
@JsonProperty("taskDto") TaskDto taskDto) {
|
||||
this.id = id;
|
||||
this.title = title;
|
||||
this.period = period;
|
||||
this.status = status;
|
||||
this.executeDate = executeDate;
|
||||
this.createDate = createDate;
|
||||
this.updateDate = updateDate;
|
||||
this.description = description;
|
||||
this.recipients = recipients;
|
||||
this.paperDto = paperDto;
|
||||
this.conferenceDto = conferenceDto;
|
||||
this.grantDto = grantDto;
|
||||
this.projectDto = projectDto;
|
||||
this.taskDto = taskDto;
|
||||
}
|
||||
|
||||
public EventDto(Event event) {
|
||||
this.id = event.getId();
|
||||
this.title = event.getTitle();
|
||||
this.status = event.getStatus();
|
||||
this.period = event.getPeriod();
|
||||
this.executeDate = event.getExecuteDate();
|
||||
this.createDate = event.getCreateDate();
|
||||
this.updateDate = event.getUpdateDate();
|
||||
this.description = event.getDescription();
|
||||
this.recipients = convert(event.getRecipients(), UserDto::new);
|
||||
if (paperDto != null) {
|
||||
this.paperDto = new PaperDto(event.getPaper());
|
||||
}
|
||||
if (conferenceDto != null) {
|
||||
this.conferenceDto = new ConferenceDto(event.getConference());
|
||||
}
|
||||
if (grantDto != null) {
|
||||
this.grantDto = new GrantDto(event.getGrant());
|
||||
}
|
||||
if (projectDto != null) {
|
||||
this.projectDto = new ProjectDto(event.getProject());
|
||||
}
|
||||
if (taskDto != null) {
|
||||
this.taskDto = new TaskDto(event.getTask());
|
||||
}
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
this.executeDate = event.getExecuteDate();
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public PeriodEvent getPeriod() {
|
||||
return period;
|
||||
}
|
||||
|
||||
public Event.EventStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public Date getCreateDate() {
|
||||
return createDate;
|
||||
}
|
||||
|
||||
public Date getUpdateDate() {
|
||||
return updateDate;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public List<UserDto> getRecipients() {
|
||||
return recipients;
|
||||
}
|
||||
|
||||
public Date getExecuteDate() {
|
||||
return executeDate;
|
||||
}
|
||||
|
||||
public PaperDto getPaperDto() {
|
||||
return paperDto;
|
||||
}
|
||||
|
||||
public void setPaperDto(PaperDto paperDto) {
|
||||
this.paperDto = paperDto;
|
||||
}
|
||||
|
||||
public ConferenceDto getConferenceDto() {
|
||||
return conferenceDto;
|
||||
}
|
||||
|
||||
public void setConferenceDto(ConferenceDto conferenceDto) {
|
||||
this.conferenceDto = conferenceDto;
|
||||
}
|
||||
|
||||
public GrantDto getGrantDto() {
|
||||
return grantDto;
|
||||
}
|
||||
|
||||
public void setGrantDto(GrantDto grantDto) {
|
||||
this.grantDto = grantDto;
|
||||
}
|
||||
|
||||
public ProjectDto getProjectDto() {
|
||||
return projectDto;
|
||||
}
|
||||
|
||||
public void setProjectDto(ProjectDto projectDto) {
|
||||
this.projectDto = projectDto;
|
||||
}
|
||||
|
||||
public TaskDto getTaskDto() {
|
||||
return taskDto;
|
||||
}
|
||||
|
||||
public void setTaskDto(TaskDto taskDto) {
|
||||
this.taskDto = taskDto;
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +0,0 @@
|
||||
package ru.ulstu.activity.timeline.model;
|
||||
|
||||
import java.time.Period;
|
||||
|
||||
public enum PeriodEvent {
|
||||
EVERY_YEAR(Period.ofYears(1), "Каждый год"),
|
||||
EVERY_MONTH(Period.ofMonths(1), "Каждый месяц"),
|
||||
EVERY_WEEK(Period.ofWeeks(1), "Каждую неделю"),
|
||||
EVERY_DAY(Period.ofDays(1), "Каждый день");
|
||||
|
||||
private final Period period;
|
||||
private final String message;
|
||||
|
||||
PeriodEvent(Period period, String message) {
|
||||
this.period = period;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Period getPeriod() {
|
||||
return period;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package ru.ulstu.activity.timeline.model;
|
||||
|
||||
import ru.ulstu.core.model.BaseEntity;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.OneToMany;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
public class Timeline extends BaseEntity {
|
||||
|
||||
@OneToMany(cascade = CascadeType.ALL)
|
||||
@JoinColumn(name = "timeline_id")
|
||||
private List<Event> events = new ArrayList<>();
|
||||
|
||||
public List<Event> getEvents() {
|
||||
return events;
|
||||
}
|
||||
|
||||
public void setEvents(List<Event> events) {
|
||||
this.events = events;
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package ru.ulstu.activity.timeline.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
||||
|
||||
public class TimelineDto {
|
||||
private final Integer id;
|
||||
private final List<EventDto> events;
|
||||
|
||||
@JsonCreator
|
||||
public TimelineDto(@JsonProperty("id") Integer id,
|
||||
@JsonProperty("events") List<EventDto> events) {
|
||||
this.id = id;
|
||||
this.events = events;
|
||||
}
|
||||
|
||||
public TimelineDto(Timeline timeline) {
|
||||
this.id = timeline.getId();
|
||||
this.events = convert(timeline.getEvents(), EventDto::new);
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public List<EventDto> getEvents() {
|
||||
return events;
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package ru.ulstu.activity.timeline.repository;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import ru.ulstu.activity.timeline.model.Timeline;
|
||||
|
||||
public interface TimelineRepository extends JpaRepository<Timeline, Integer> {
|
||||
}
|
@ -1,77 +0,0 @@
|
||||
package ru.ulstu.activity.timeline.service;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.ulstu.activity.timeline.model.Event;
|
||||
import ru.ulstu.activity.timeline.model.PeriodEvent;
|
||||
import ru.ulstu.core.util.DateUtils;
|
||||
import ru.ulstu.user.service.MailService;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class EventScheduler {
|
||||
|
||||
private final Logger log = LoggerFactory.getLogger(EventScheduler.class);
|
||||
private final EventService eventService;
|
||||
private final MailService mailService;
|
||||
|
||||
public EventScheduler(EventService eventService,
|
||||
MailService mailService) {
|
||||
this.eventService = eventService;
|
||||
this.mailService = mailService;
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0 8 * * ?")
|
||||
public void sendNotifications() {
|
||||
List<Event> events = eventService.findByCurrentDate();
|
||||
events.forEach(event -> {
|
||||
Map<String, Object> variables = ImmutableMap.of("description", event.getDescription());
|
||||
event.getRecipients()
|
||||
.forEach(recipient -> mailService.sendEmailFromTemplate(variables, recipient, "eventNotification", event.getTitle()));
|
||||
if (event.getPeriod() == null) {
|
||||
event.setStatus(Event.EventStatus.COMPLETED);
|
||||
eventService.save(event);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Scheduled(cron = "0 0 * * * ?")
|
||||
public void checkPeriodEvents() {
|
||||
log.debug("EventScheduler.checkPeriodEvents started");
|
||||
//TODO: filter
|
||||
for (Event event : eventService.findAll()) {
|
||||
if (halfOfThePeriodHasPassed(event)) {
|
||||
eventService.createBasedOn(event, DateUtils.addDays(event.getExecuteDate(), getShiftInDays(event.getPeriod())));
|
||||
}
|
||||
}
|
||||
|
||||
log.debug("EventScheduler.checkPeriodEvents finished");
|
||||
}
|
||||
|
||||
private int getShiftInDays(PeriodEvent periodEvent) {
|
||||
switch (periodEvent) {
|
||||
case EVERY_DAY:
|
||||
return periodEvent.getPeriod().getDays();
|
||||
case EVERY_WEEK:
|
||||
return periodEvent.getPeriod().getDays();
|
||||
case EVERY_MONTH:
|
||||
return periodEvent.getPeriod().getMonths() * 30;
|
||||
case EVERY_YEAR:
|
||||
return periodEvent.getPeriod().getYears() * 365;
|
||||
default:
|
||||
throw new RuntimeException("period event not exists");
|
||||
}
|
||||
}
|
||||
|
||||
private boolean halfOfThePeriodHasPassed(Event event) {
|
||||
return event.getPeriod() != null && event.getChild() == null
|
||||
&& new Date().after(
|
||||
DateUtils.addDays(event.getExecuteDate(), (int) Math.round((double) getShiftInDays(event.getPeriod()) / 2)));
|
||||
}
|
||||
}
|
@ -1,180 +1,80 @@
|
||||
package ru.ulstu.activity.timeline.service;
|
||||
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import ru.ulstu.activity.common.model.EventSource;
|
||||
import ru.ulstu.activity.conference.model.Conference;
|
||||
import ru.ulstu.activity.deadline.model.Deadline;
|
||||
import ru.ulstu.activity.grant.model.Grant;
|
||||
import ru.ulstu.activity.paper.model.Paper;
|
||||
import ru.ulstu.activity.project.model.Project;
|
||||
import ru.ulstu.activity.students.model.Task;
|
||||
import ru.ulstu.activity.timeline.model.Event;
|
||||
import ru.ulstu.activity.timeline.model.EventDto;
|
||||
import ru.ulstu.activity.timeline.model.Timeline;
|
||||
import ru.ulstu.activity.timeline.repository.EventRepository;
|
||||
import ru.ulstu.user.model.UserDto;
|
||||
import ru.ulstu.core.jpa.OffsetablePageRequest;
|
||||
import ru.ulstu.core.model.response.PageableItems;
|
||||
import ru.ulstu.user.service.UserService;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
||||
import static ru.ulstu.core.util.StreamApiUtils.convertPageable;
|
||||
|
||||
@Service
|
||||
public class EventService {
|
||||
|
||||
private final EventRepository eventRepository;
|
||||
private final TimelineService timelineService;
|
||||
private final UserService userService;
|
||||
private final EventRepository eventRepository;
|
||||
|
||||
public EventService(EventRepository eventRepository,
|
||||
@Lazy TimelineService timelineService,
|
||||
UserService userService) {
|
||||
this.eventRepository = eventRepository;
|
||||
this.timelineService = timelineService;
|
||||
public EventService(UserService userService,
|
||||
EventRepository eventRepository) {
|
||||
this.userService = userService;
|
||||
this.eventRepository = eventRepository;
|
||||
}
|
||||
|
||||
public List<EventDto> findAllDto() {
|
||||
return convert(findAll(), EventDto::new);
|
||||
}
|
||||
|
||||
public List<Event> findAll() {
|
||||
return eventRepository.findAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Integer create(EventDto eventDto) {
|
||||
return eventRepository.save(copyFromDto(new Event(), eventDto)).getId();
|
||||
}
|
||||
|
||||
private Event copyFromDto(Event event, EventDto eventDto) {
|
||||
event.setExecuteDate(eventDto.getExecuteDate());
|
||||
event.setCreateDate(eventDto.getId() == null ? new Date() : eventDto.getCreateDate());
|
||||
event.setDescription(eventDto.getDescription());
|
||||
event.setRecipients(userService.findByIds(convert(eventDto.getRecipients(), UserDto::getId)));
|
||||
event.setTitle(eventDto.getTitle());
|
||||
event.setPeriod(eventDto.getPeriod());
|
||||
event.setStatus(eventDto.getStatus());
|
||||
event.setUpdateDate(new Date());
|
||||
return event;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Integer update(EventDto eventDto) {
|
||||
Event event = eventRepository.getOne(eventDto.getId());
|
||||
return eventRepository.save(copyFromDto(event, eventDto)).getId();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Event save(Event event) {
|
||||
return eventRepository.save(event);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void delete(Integer eventId) {
|
||||
Event event = eventRepository.getOne(eventId);
|
||||
event.setParents(null);
|
||||
eventRepository.delete(event);
|
||||
public PageableItems<EventDto> getAllEvents(int offset, int count) {
|
||||
return createPageable(eventRepository.findAll(new OffsetablePageRequest(offset, count)));
|
||||
}
|
||||
|
||||
public List<Event> findByIds(List<Integer> ids) {
|
||||
return eventRepository.findAllById(ids);
|
||||
public PageableItems<EventDto> getFutureEvents(int offset, int count) {
|
||||
return createPageable(eventRepository.findAllFuture(new OffsetablePageRequest(offset, count)));
|
||||
}
|
||||
|
||||
public void createBasedOn(Event event, Date executeDate) {
|
||||
//backup event id
|
||||
Integer parentEventId = event.getId();
|
||||
|
||||
event.setId(null);
|
||||
event.setStatus(Event.EventStatus.POSSIBLE);
|
||||
event.setExecuteDate(executeDate);
|
||||
event.setCreateDate(new Date());
|
||||
event.setUpdateDate(new Date());
|
||||
event = eventRepository.save(event);
|
||||
|
||||
//set child to parent
|
||||
Event parentEvent = eventRepository.getOne(parentEventId);
|
||||
parentEvent.setChild(event);
|
||||
eventRepository.save(parentEvent);
|
||||
public PageableItems<EventDto> getUserEvents(int userId, int offset, int count) {
|
||||
return createPageable(eventRepository.findByUser(new OffsetablePageRequest(offset, count), userService.findById(userId)));
|
||||
}
|
||||
|
||||
public void createFromPaper(Paper newPaper) {
|
||||
createFromObject(newPaper, Collections.emptyList(), false, "статьи");
|
||||
public PageableItems<EventDto> getUserFutureEvents(int userId, int offset, int count) {
|
||||
return createPageable(eventRepository.findUserFuture(new OffsetablePageRequest(offset, count), userService.findById(userId)));
|
||||
}
|
||||
|
||||
public void createFromObject(EventSource eventSource, List<Event> events, Boolean addCurrentUser, String suffix) {
|
||||
List<Timeline> timelines = timelineService.findAll();
|
||||
Timeline timeline = timelines.isEmpty() ? new Timeline() : timelines.get(0);
|
||||
|
||||
timeline.getEvents().removeAll(events);
|
||||
public void createFromObject(EventSource eventSource) {
|
||||
List<Event> newEvents = new ArrayList<>();
|
||||
for (Deadline deadline : eventSource.getDeadlines()
|
||||
.stream()
|
||||
.filter(d -> d.getDate().after(new Date()) || DateUtils.isSameDay(d.getDate(), new Date()))
|
||||
.collect(Collectors.toList())) {
|
||||
Event newEvent = new Event();
|
||||
newEvent.setTitle("Дедлайн " + suffix);
|
||||
newEvent.setTitle("Дедлайн " + eventSource.getSuffix());
|
||||
newEvent.setStatus(Event.EventStatus.NEW);
|
||||
newEvent.setExecuteDate(deadline.getDate());
|
||||
newEvent.setCreateDate(new Date());
|
||||
newEvent.setUpdateDate(new Date());
|
||||
newEvent.setDescription("Дедлайн '" + deadline.getDescription() + "' " + suffix + " '"
|
||||
newEvent.setDescription("Дедлайн '"
|
||||
+ deadline.getDescription()
|
||||
+ "' " + eventSource.getSuffix() + " '"
|
||||
+ eventSource.getTitle() + "'");
|
||||
if (addCurrentUser) {
|
||||
newEvent.getRecipients().add(userService.getCurrentUser());
|
||||
}
|
||||
newEvent.getRecipients().addAll(eventSource.getRecipients());
|
||||
newEvent.setRecipients(eventSource.getRecipients());
|
||||
eventSource.addObjectToEvent(newEvent);
|
||||
timeline.getEvents().add(eventRepository.save(newEvent));
|
||||
newEvents.add(eventRepository.save(newEvent));
|
||||
}
|
||||
timelineService.save(timeline);
|
||||
eventRepository.saveAll(newEvents);
|
||||
}
|
||||
|
||||
public void updatePaperDeadlines(Paper paper) {
|
||||
List<Event> foundEvents = eventRepository.findAllByPaper(paper);
|
||||
eventRepository.deleteAll(foundEvents);
|
||||
createFromObject(paper, foundEvents, false, "статьи");
|
||||
}
|
||||
|
||||
public List<Event> findByCurrentDate() {
|
||||
return eventRepository.findByCurrentDate();
|
||||
}
|
||||
|
||||
private List<Event> findAllFuture() {
|
||||
return eventRepository.findAllFuture();
|
||||
private PageableItems<EventDto> createPageable(Page<Event> page) {
|
||||
return convertPageable(new PageableItems<>(page.getTotalElements(), page.getContent()), EventDto::new);
|
||||
}
|
||||
|
||||
public List<EventDto> findAllFutureDto() {
|
||||
return convert(findAllFuture(), EventDto::new);
|
||||
}
|
||||
public void deleteByObject(EventSource eventSource) {
|
||||
|
||||
public void updateConferenceDeadlines(Conference conference) {
|
||||
eventRepository.deleteAll(eventRepository.findAllByConference(conference));
|
||||
createFromObject(conference, Collections.emptyList(), false, "конференции");
|
||||
}
|
||||
|
||||
public void updateGrantDeadlines(Grant grant) {
|
||||
eventRepository.deleteAll(eventRepository.findAllByGrant(grant));
|
||||
createFromObject(grant, Collections.emptyList(), false, "гранта");
|
||||
}
|
||||
|
||||
public void updateProjectDeadlines(Project project) {
|
||||
eventRepository.deleteAll(eventRepository.findAllByProject(project));
|
||||
createFromObject(project, Collections.emptyList(), false, "проекта");
|
||||
}
|
||||
|
||||
public void removeConferencesEvent(Conference conference) {
|
||||
List<Event> eventList = eventRepository.findAllByConference(conference);
|
||||
eventList.forEach(event -> eventRepository.deleteById(event.getId()));
|
||||
}
|
||||
|
||||
public void updateTaskDeadlines(Task task) {
|
||||
eventRepository.deleteAll(eventRepository.findAllByTask(task));
|
||||
createFromObject(task, Collections.emptyList(), true, "задачи");
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
package ru.ulstu.activity.timeline.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import ru.ulstu.activity.timeline.model.EventDto;
|
||||
import ru.ulstu.activity.timeline.model.Timeline;
|
||||
import ru.ulstu.activity.timeline.model.TimelineDto;
|
||||
import ru.ulstu.activity.timeline.repository.TimelineRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static ru.ulstu.core.util.StreamApiUtils.convert;
|
||||
|
||||
@Service
|
||||
public class TimelineService {
|
||||
|
||||
private final TimelineRepository timelineRepository;
|
||||
private final EventService eventService;
|
||||
|
||||
public TimelineService(TimelineRepository timelineRepository,
|
||||
EventService eventService) {
|
||||
this.timelineRepository = timelineRepository;
|
||||
this.eventService = eventService;
|
||||
}
|
||||
|
||||
public List<TimelineDto> findAllDto() {
|
||||
return convert(timelineRepository.findAll(), TimelineDto::new);
|
||||
}
|
||||
|
||||
public List<Timeline> findAll() {
|
||||
return timelineRepository.findAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public int create(TimelineDto timelineDto) {
|
||||
return timelineRepository.save(copyFromDto(new Timeline(), timelineDto)).getId();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Timeline save(Timeline timeline) {
|
||||
return timelineRepository.save(timeline);
|
||||
}
|
||||
|
||||
private Timeline copyFromDto(Timeline timeline, TimelineDto timelineDto) {
|
||||
timeline.setEvents(eventService.findByIds(convert(timelineDto.getEvents(), EventDto::getId)));
|
||||
return timeline;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Integer update(TimelineDto timelineDto) {
|
||||
Timeline timeline = timelineRepository.getOne(timelineDto.getId());
|
||||
return timelineRepository.save(copyFromDto(timeline, timelineDto)).getId();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void delete(Integer timelineId) {
|
||||
Timeline timeline = timelineRepository.getOne(timelineId);
|
||||
timelineRepository.delete(timeline);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue