package com.example.baziproekt.service.impl; import com.example.baziproekt.model.Kompanija; import com.example.baziproekt.model.Proizvodi; import com.example.baziproekt.model.exceptions.InvalidArgumentsException; import com.example.baziproekt.model.exceptions.InvalidKompanijaException; import com.example.baziproekt.model.exceptions.ProductNotFoundException; import com.example.baziproekt.repository.KompanijaRepository; import com.example.baziproekt.repository.ProizvodiRepository; import com.example.baziproekt.service.ProizvodiService; import org.springframework.stereotype.Service; import java.util.List; import java.util.Random; @Service public class ProizvodiServiceImpl implements ProizvodiService { private final ProizvodiRepository repository; private final KompanijaRepository kompanijaRepository; public ProizvodiServiceImpl(ProizvodiRepository repository, KompanijaRepository kompanijaRepository) { this.repository = repository; this.kompanijaRepository = kompanijaRepository; } @Override public Proizvodi findById(Integer id) { return repository.findByIds(id).orElseThrow(InvalidArgumentsException::new); } @Override public List listAll() { return repository.findAll(); } @Override public List findByName(String name) { if(name==null ||name.isEmpty()) { throw new InvalidArgumentsException(); } return repository.findProizvodiByName(name); } @Override public List findByKompanija(String ime) { if(ime==null ||ime.isEmpty()) { throw new InvalidArgumentsException(); } Kompanija kompanija=kompanijaRepository.findKompanijaByIme(ime); return repository.findProizvodiByIme(kompanija); } @Override public Proizvodi create(Integer kolicina, String name, String boja, String karakteristiki, String kompanijaName) { Kompanija kompanija=kompanijaRepository.findKompanijaByIme(kompanijaName); if(kompanija==null) { throw new InvalidKompanijaException();} Proizvodi proizvod=new Proizvodi(kolicina,name,boja,karakteristiki,kompanija); return repository.save(proizvod); } @Override public Proizvodi update(Integer id, Integer kolicina, String name, String boja, String karakteristiki, String kompanijaName) { Proizvodi proizvod=repository.findByIds(id).orElseThrow(ProductNotFoundException::new); proizvod.setBoja(boja); proizvod.setName(name); proizvod.setKarakteristiki(karakteristiki); proizvod.setKolicina(kolicina); Kompanija kompanija=kompanijaRepository.findKompanijaByIme(kompanijaName); if(kompanija==null) { throw new InvalidKompanijaException();} proizvod.setIme(kompanija); return repository.save(proizvod); } }