|
|
@ -6,12 +6,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import ru.ulstu.activity.common.service.ActivityService;
|
|
|
|
import ru.ulstu.activity.common.service.ActivityService;
|
|
|
|
import ru.ulstu.activity.deadline.model.Deadline;
|
|
|
|
import ru.ulstu.activity.deadline.model.Deadline;
|
|
|
|
import ru.ulstu.activity.deadline.service.DeadlineService;
|
|
|
|
import ru.ulstu.activity.deadline.service.DeadlineService;
|
|
|
|
import ru.ulstu.activity.file.model.FileDataDto;
|
|
|
|
|
|
|
|
import ru.ulstu.activity.file.service.FileService;
|
|
|
|
import ru.ulstu.activity.file.service.FileService;
|
|
|
|
import ru.ulstu.activity.paper.model.Paper;
|
|
|
|
import ru.ulstu.activity.paper.model.Paper;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperDashboardDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperDashboardDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperFilterListDto;
|
|
|
|
|
|
|
|
import ru.ulstu.activity.paper.model.PaperListDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperListDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperStatusDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperStatusDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperTypeDto;
|
|
|
|
import ru.ulstu.activity.paper.model.PaperTypeDto;
|
|
|
@ -23,13 +21,10 @@ import ru.ulstu.core.model.response.PageableItems;
|
|
|
|
import ru.ulstu.user.model.User;
|
|
|
|
import ru.ulstu.user.model.User;
|
|
|
|
import ru.ulstu.user.service.UserService;
|
|
|
|
import ru.ulstu.user.service.UserService;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.persistence.EntityNotFoundException;
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static java.util.stream.Collectors.toList;
|
|
|
|
import static java.util.stream.Collectors.toList;
|
|
|
|
import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty;
|
|
|
|
import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty;
|
|
|
@ -53,9 +48,6 @@ public class PaperService extends ActivityService<PaperListDto, Paper, PaperDto>
|
|
|
|
private final EventService eventService;
|
|
|
|
private final EventService eventService;
|
|
|
|
private final PingService pingService;
|
|
|
|
private final PingService pingService;
|
|
|
|
|
|
|
|
|
|
|
|
private Paper.PaperStatus oldStatus;
|
|
|
|
|
|
|
|
private Set<User> oldAuthors;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public PaperService(PaperRepository paperRepository,
|
|
|
|
public PaperService(PaperRepository paperRepository,
|
|
|
|
FileService fileService,
|
|
|
|
FileService fileService,
|
|
|
|
PaperNotificationService paperNotificationService,
|
|
|
|
PaperNotificationService paperNotificationService,
|
|
|
@ -108,21 +100,14 @@ public class PaperService extends ActivityService<PaperListDto, Paper, PaperDto>
|
|
|
|
return eventService.findByPaper(entity);
|
|
|
|
return eventService.findByPaper(entity);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
@Override
|
|
|
|
public PaperDto update(PaperDto paperDto) {
|
|
|
|
protected void doActionsOnDiffObjects(Paper oldEntity, Paper entity) {
|
|
|
|
Paper paper = findById(paperDto.getId());
|
|
|
|
if (oldEntity.getStatus() != entity.getStatus()) {
|
|
|
|
oldStatus = paper.getStatus();
|
|
|
|
paperNotificationService.statusChangeNotification(entity, oldEntity.getStatus());
|
|
|
|
oldAuthors = new HashSet<>(paper.getAuthors());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!oldEntity.getAuthors().equals(entity.getAuthors())) {
|
|
|
|
//TODO: move to service
|
|
|
|
paperNotificationService.sendCreateNotification(entity, oldEntity.getAuthors());
|
|
|
|
if (paperDto.getFiles() != null) {
|
|
|
|
|
|
|
|
for (FileDataDto file : paperDto.getFiles().stream()
|
|
|
|
|
|
|
|
.filter(f -> f.isDeleted() && f.getId() != null)
|
|
|
|
|
|
|
|
.collect(toList())) {
|
|
|
|
|
|
|
|
fileService.delete(file.getId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return new PaperDto(update(copyFromDto(paper, paperDto)));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected Paper copyFromDto(Paper paper, PaperDto paperDto) {
|
|
|
|
protected Paper copyFromDto(Paper paper, PaperDto paperDto) {
|
|
|
@ -152,13 +137,6 @@ public class PaperService extends ActivityService<PaperListDto, Paper, PaperDto>
|
|
|
|
return paper;
|
|
|
|
return paper;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
|
|
|
|
public boolean delete(Integer paperId) {
|
|
|
|
|
|
|
|
Paper paper = paperRepository.getOne(paperId);
|
|
|
|
|
|
|
|
paperRepository.delete(paper);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<PaperStatusDto> getPaperStatuses() {
|
|
|
|
public List<PaperStatusDto> getPaperStatuses() {
|
|
|
|
return convert(Arrays.asList(Paper.PaperStatus.values()), PaperStatusDto::new);
|
|
|
|
return convert(Arrays.asList(Paper.PaperStatus.values()), PaperStatusDto::new);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -181,12 +159,6 @@ public class PaperService extends ActivityService<PaperListDto, Paper, PaperDto>
|
|
|
|
return create(paper);
|
|
|
|
return create(paper);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<PaperListDto> filter(PaperFilterListDto filterDto) {
|
|
|
|
|
|
|
|
return convert(sortPapers(paperRepository.filter(
|
|
|
|
|
|
|
|
filterDto.getFilterAuthorId() == null ? null : userService.findById(filterDto.getFilterAuthorId()),
|
|
|
|
|
|
|
|
filterDto.getYear())), PaperListDto::new);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<Paper> sortPapers(List<Paper> papers) {
|
|
|
|
private List<Paper> sortPapers(List<Paper> papers) {
|
|
|
|
return papers.stream().sorted((paper1, paper2) -> {
|
|
|
|
return papers.stream().sorted((paper1, paper2) -> {
|
|
|
|
int statusCompareResult =
|
|
|
|
int statusCompareResult =
|
|
|
@ -223,28 +195,7 @@ public class PaperService extends ActivityService<PaperListDto, Paper, PaperDto>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public PaperDto findPaperById(Integer paperId) {
|
|
|
|
|
|
|
|
return new PaperDto(findById(paperId));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Paper findById(Integer paperId) {
|
|
|
|
|
|
|
|
return paperRepository.findById(paperId)
|
|
|
|
|
|
|
|
.orElseThrow(() -> new EntityNotFoundException("Paper with id=" + paperId + " not found"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<PaperDto> findAllNotCompleted() {
|
|
|
|
|
|
|
|
return convert(paperRepository.findByStatusNot(COMPLETED), PaperDto::new);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<PaperDto> findAllSelect(List<Integer> paperIds) {
|
|
|
|
|
|
|
|
return convert(paperRepository.findAllByIdIn(paperIds), PaperDto::new);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<User> getPaperAuthors() {
|
|
|
|
public List<User> getPaperAuthors() {
|
|
|
|
return userService.findAll();
|
|
|
|
return userService.findAll();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<Paper> findAllCompletedByType(Paper.PaperType type) {
|
|
|
|
|
|
|
|
return paperRepository.findByTypeAndStatus(type, Paper.PaperStatus.COMPLETED);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|