2019-07-20 12:16:08 +04:00

66 lines
2.2 KiB
Java

package ru.ulstu.activity.deadline.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.ulstu.activity.deadline.model.Deadline;
import ru.ulstu.activity.deadline.model.DeadlineDto;
import ru.ulstu.user.service.UserService;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class DeadlineService {
private final DeadlineRepository deadlineRepository;
private final UserService userService;
public DeadlineService(DeadlineRepository deadlineRepository,
UserService userService) {
this.deadlineRepository = deadlineRepository;
this.userService = userService;
}
public List<Deadline> saveOrCreate(List<DeadlineDto> deadlines) {
return deadlines
.stream()
.map(deadline -> {
return deadline.getId() != null ? update(deadline) : create(deadline);
}).collect(Collectors.toList());
}
@Transactional
public Deadline update(DeadlineDto deadlineDto) {
Deadline updateDeadline = deadlineRepository.getOne(deadlineDto.getId());
deadlineRepository.save(copyFromDto(updateDeadline, deadlineDto));
return updateDeadline;
}
@Transactional
public Deadline create(DeadlineDto deadlineDto) {
return deadlineRepository.save(copyFromDto(new Deadline(), deadlineDto));
}
@Transactional
public Deadline create(Deadline deadline) {
return deadlineRepository.save(deadline);
}
@Transactional
public void remove(Integer deadlineId) {
deadlineRepository.deleteById(deadlineId);
}
private Deadline copyFromDto(Deadline deadline, DeadlineDto deadlineDto) {
deadline.setDate(deadlineDto.getDate());
deadline.setDescription(deadlineDto.getDescription());
deadline.setExecutors(userService.findByIds(deadlineDto.getExecutorsIds()));
deadline.setDone(deadlineDto.isDone());
return deadline;
}
public Date findByGrantIdAndDate(Integer id, Date date) {
return deadlineRepository.findByGrantIdAndDate(id, date);
}
}