package parkup.services; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.Modifying; import org.springframework.stereotype.Service; import parkup.data.ParkingZoneLocation; import parkup.entities.ParkingSpace; import parkup.entities.ParkingZone; import parkup.entities.Vraboten; import parkup.repositories.ParkingZoneRepository; import javax.transaction.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; @Service public class ParkingZoneService { private final ParkingZoneRepository parkingZoneRepository; @Autowired public ParkingZoneService(ParkingZoneRepository parkingZoneRepository) { this.parkingZoneRepository = parkingZoneRepository; } public List getAllParkingZones() { return parkingZoneRepository.findAll(); } public ParkingZone findById(int parkingZoneId) { Optional parkingZone = Optional.ofNullable(this.parkingZoneRepository.findByPzId(parkingZoneId)); return parkingZone.orElse(null); } public List getAllParkingZoneNames() { List parkingZones = this.parkingZoneRepository.findAll(); List parkingZonesNames = new ArrayList<>(); for (ParkingZone pz : parkingZones){ parkingZonesNames.add(pz.getPzName()); } return parkingZonesNames; } public Optional addParkingZone(ParkingZone parkingZone) { //zavisno vo koj grad ili opstina i napravi proverki pred dodavanje, implementiraj u naredna faza Optional parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzName(parkingZone.getPzName())); if (parkingZoneOpt.isPresent()) { throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name"); } else { System.out.println(parkingZone); parkingZoneRepository.save(parkingZone); } return parkingZoneOpt; } public ParkingZone addParkingZoneNameOnly(String name) { Optional parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzName(name)); if (parkingZoneOpt.isPresent()) { throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name"); } else { ParkingZone parkingZone = new ParkingZone(name.trim()); parkingZoneRepository.save(parkingZone); return parkingZone; } } <<<<<<< HEAD //TODO proveri dali ima odgovorni i dokolku ima dali postojat vo bazata @Transactional public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price, int capacity, String location, int from, int to, String color, List parkingSpaces, ParkingZoneLocation parkingZoneLocation, List odgovorniLica) { for(ParkingSpace space:parkingSpaces){ System.out.println(space); } for(Vraboten v : odgovorniLica){ System.out.println(v.toString()); } ======= //TODO prati niza od objekti ParkingSpaces i prati objekt ParkingZoneLocation @Transactional public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price, int capacity, String location, int from, int to, String color, List parkingSpaces, ParkingZoneLocation parkingZoneLocation) { >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939 Optional parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId)); if (parkingZoneOpt.isPresent()) { ParkingZone parkingZoneNov = parkingZoneRepository.findByPzId(parkingZoneId); if (pzName != null && pzName.length() > 1 && !Objects.equals(parkingZoneNov.getPzName(), pzName)) { Optional parkingZoneOpt1 = Optional.ofNullable(parkingZoneRepository.findByPzName(pzName)); if (parkingZoneOpt1.isPresent()) { throw new IllegalStateException("There is already a ParkingZone with the same name"); } parkingZoneNov.setPzName(pzName); } if (price != 0 && !Objects.equals(parkingZoneNov.getPrice(), price)) { parkingZoneNov.setPrice(price); } if (capacity != 0 && !Objects.equals(parkingZoneNov.getCapacity(), capacity)) { parkingZoneNov.setCapacity(capacity); } if (location != null && location.length() > 0 && !Objects.equals(parkingZoneNov.getLocation(), location)) { parkingZoneNov.setLocation(location); } if (from != 0 && !Objects.equals(parkingZoneNov.getFrom(), from)) { parkingZoneNov.setFrom(from); } if (to != 0 && !Objects.equals(parkingZoneNov.getTo(), to)) { parkingZoneNov.setTo(to); } if (color != null && color.length() > 0 && !Objects.equals(parkingZoneNov.getColor(), color)) { parkingZoneNov.setColor(color); } if(parkingZoneLocation!=null){ parkingZoneNov.setParkingZoneLocation(parkingZoneLocation); } if(!parkingSpaces.isEmpty()){ //TODO kreiraj lista od parkingSpaces, ni gi prakja false isHandicaped i isTaken parkingZoneNov.setParkingSpaces(parkingSpaces); } <<<<<<< HEAD if(!odgovorniLica.isEmpty()){ parkingZoneNov.setOdgovorniLica(odgovorniLica); } ======= >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939 return parkingZoneNov; } else { throw new IllegalStateException("There ParkingZone does not exist"); } } @Transactional public Optional deleteParkingZone(int parkingZoneId) { Optional parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId)); if (parkingZoneOpt.isPresent()) { parkingZoneRepository.deleteByPzId(parkingZoneId); } else { throw new IllegalStateException("ParkingZone doesn't exist, therefore can't be deleted"); } return parkingZoneOpt; } }