diff --git a/src/main/java/com/example/nto/service/TerminalService.java b/src/main/java/com/example/nto/service/TerminalService.java index ad98f62..6ac7ae0 100644 --- a/src/main/java/com/example/nto/service/TerminalService.java +++ b/src/main/java/com/example/nto/service/TerminalService.java @@ -1,5 +1,16 @@ package com.example.nto.service; -public interface TerminalService { +import com.example.nto.dto.entity.TerminalDTO; +import java.util.List; + +public interface TerminalService { + List getAllTerminal(); + TerminalDTO getById(long terminalId); + + TerminalDTO create(TerminalDTO terminalDTO); + TerminalDTO update(long terminalId, TerminalDTO terminalDTO); + void delete(long terminalId); + + TerminalDTO checkCode(String code); } diff --git a/src/main/java/com/example/nto/service/impl/TerminalServiceImpl.java b/src/main/java/com/example/nto/service/impl/TerminalServiceImpl.java index 2dd7abd..8bb7731 100644 --- a/src/main/java/com/example/nto/service/impl/TerminalServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/TerminalServiceImpl.java @@ -1,6 +1,79 @@ package com.example.nto.service.impl; +import com.example.nto.aspect.annotation.LogExample; +import com.example.nto.domain.entity.Office; +import com.example.nto.domain.entity.Terminal; +import com.example.nto.domain.exception.ResourceNotFoundException; +import com.example.nto.dto.entity.TerminalDTO; +import com.example.nto.dto.mappers.TerminalMapper; +import com.example.nto.repository.OfficeRepository; +import com.example.nto.repository.TerminalRepository; import com.example.nto.service.TerminalService; +import com.example.nto.utils.Utils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor public class TerminalServiceImpl implements TerminalService { + private final TerminalRepository terminalRepository; + private final OfficeRepository officeRepository; + + @Override + @LogExample + public List getAllTerminal() { + return terminalRepository.findAll().stream().map(TerminalMapper::convertToDTO).collect(Collectors.toList()); + } + + @Override + @LogExample + public TerminalDTO getById(long terminalId) { + return terminalRepository.findById(terminalId).map(TerminalMapper::convertToDTO) + .orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + terminalId + ") не найден!")); + } + + @Override + @LogExample + public TerminalDTO create(TerminalDTO terminalDTO) { + Office office = officeRepository.findByName(terminalDTO.getOfficeName()) + .orElseThrow(() -> new ResourceNotFoundException("Офис с названием (" + terminalDTO.getOfficeName() + ") не найден!")); + + Terminal terminal = new Terminal(); + terminal.setName(terminalDTO.getName()); + terminal.setOffice(office); + + return TerminalMapper.convertToDTO(terminalRepository.save(terminal)); + } + + @Override + @LogExample + public TerminalDTO update(long terminalId, TerminalDTO terminalDTO) { + Terminal terminal = terminalRepository.findById(terminalId) + .orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + terminalId + ") не найден!")); + Office office = officeRepository.findByName(terminalDTO.getOfficeName()) + .orElseThrow(() -> new ResourceNotFoundException("Офис с названием (" + terminalDTO.getOfficeName() + ") не найден!")); + + terminal.setName(terminalDTO.getName()); + terminal.setCode(Utils.generateUniqueName()); + terminal.setOffice(office); + + return TerminalMapper.convertToDTO(terminalRepository.save(terminal)); + } + + @Override + @LogExample + public void delete(long terminalId) { + terminalRepository.findById(terminalId).orElseThrow(() -> new ResourceNotFoundException("Терминал с id (" + terminalId + ") не найден!")); + terminalRepository.deleteById(terminalId); + } + + @Override + @LogExample + public TerminalDTO checkCode(String code) { + return terminalRepository.findByCode(code).map(TerminalMapper::convertToDTO) + .orElseThrow(() -> new ResourceNotFoundException("Терминал с кодом (" + code + ") не найден!")); + } }