StammdatenCommandService.java
package de.mirkosertic.powerstaff.shared.command;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Optional;
@Service
public class StammdatenCommandService {
private final HistoryTypeRepository historyTypeRepository;
private final ProjectPositionStatusRepository projectPositionStatusRepository;
private final TagRepository tagRepository;
public StammdatenCommandService(
final HistoryTypeRepository historyTypeRepository,
final ProjectPositionStatusRepository projectPositionStatusRepository,
final TagRepository tagRepository) {
this.historyTypeRepository = historyTypeRepository;
this.projectPositionStatusRepository = projectPositionStatusRepository;
this.tagRepository = tagRepository;
}
public HistoryType saveHistoryType(final HistoryType ht) {
return historyTypeRepository.save(ht);
}
public void deleteHistoryType(final Long id) {
historyTypeRepository.deleteById(id);
}
public Optional<HistoryType> findHistoryTypeById(final Long id) {
return historyTypeRepository.findById(id);
}
@Transactional
public ProjectPositionStatus saveProjectPositionStatus(final ProjectPositionStatus pps) {
if (pps.isDefaultStatus()) {
projectPositionStatusRepository.findByDefaultStatusTrue().ifPresent(existing -> {
if (!existing.getId().equals(pps.getId())) {
existing.setDefaultStatus(false);
projectPositionStatusRepository.save(existing);
}
});
}
return projectPositionStatusRepository.save(pps);
}
public Optional<ProjectPositionStatus> findProjectPositionStatusById(final Long id) {
return projectPositionStatusRepository.findById(id);
}
public Optional<ProjectPositionStatus> findDefaultProjectPositionStatus() {
return projectPositionStatusRepository.findByDefaultStatusTrue();
}
public void deleteProjectPositionStatus(final Long id) {
projectPositionStatusRepository.deleteById(id);
}
public Tag saveTag(final Tag tag) {
return tagRepository.save(tag);
}
public void deleteTag(final Long id) {
tagRepository.deleteById(id);
}
public Optional<Tag> findTagById(final Long id) {
return tagRepository.findById(id);
}
}