66 lines
2.2 KiB
Java
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);
|
|
}
|
|
}
|