package io.gmss.fiscad.implementations.decoupage; import io.gmss.fiscad.entities.decoupage.SecteurDecoupage; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.decoupage.SecteurDecoupageService; import io.gmss.fiscad.repositories.decoupage.SecteurDecoupageRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; @Service public class SecteurDecoupageServiceImpl implements SecteurDecoupageService { private final SecteurDecoupageRepository secteurDecoupageRepository; public SecteurDecoupageServiceImpl(SecteurDecoupageRepository secteurDecoupageRepository) { this.secteurDecoupageRepository = secteurDecoupageRepository; } @Override public SecteurDecoupage createSecteurDecoupage(SecteurDecoupage secteurDecoupage) throws BadRequestException { if (secteurDecoupage.getId() != null) { throw new BadRequestException("Impossible de créer un nouveau secteur découpage ayant un id non null."); } return secteurDecoupageRepository.save(secteurDecoupage); } @Override public SecteurDecoupage updateSecteurDecoupage(Long id, SecteurDecoupage secteurDecoupage) throws NotFoundException { if (secteurDecoupage.getId() == null) { throw new BadRequestException("Impossible de mettre à jour un nouveau secteur découpage ayant un id null."); } if (!secteurDecoupageRepository.existsById(secteurDecoupage.getId())) { throw new NotFoundException("Impossible de trouver le secteur découpage spécifié."); } return secteurDecoupageRepository.save(secteurDecoupage); } @Override public void deleteSecteurDecoupage(Long id) throws NotFoundException { Optional secteurDecoupageOptional = secteurDecoupageRepository.findById(id); if (secteurDecoupageOptional.isPresent()) { secteurDecoupageRepository.deleteById(secteurDecoupageOptional.get().getId()); } else { throw new NotFoundException("Impossible de trouver le secteur découpage spécifié."); } } @Override public Page getSecteurDecoupageList(Pageable pageable) { return secteurDecoupageRepository.findAll(pageable); } @Override public List getSecteurDecoupageList() { return secteurDecoupageRepository.findAll(); } @Override public Optional getSecteurDecoupageById(Long id) { return secteurDecoupageRepository.findById(id); } }