package parkup.services; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import parkup.data.Tablicka; import parkup.entities.ParkingSession; import parkup.repositories.ParkingSessionRepository; import javax.transaction.Transactional; import java.util.List; import java.util.Objects; import java.util.Optional; @Service public class ParkingSessionService { private final ParkingSessionRepository parkingSessionRepository; @Autowired public ParkingSessionService(ParkingSessionRepository parkingSessionRepository) { this.parkingSessionRepository = parkingSessionRepository; } public List getAllParkingSessions() { return parkingSessionRepository.findAll(); } public ParkingSession findById(int parkingSessionId) { Optional parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSessionId)); return parkingSessionOpt.orElse(null); } @Transactional public void updateParkingSession(int parkingSessionId, String timeStart, String timeEnd, Tablicka tablicka) { Optional parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSessionId)); if (parkingSessionOpt.isPresent()) { ParkingSession parkingSessionNov = parkingSessionRepository.findByPssId(parkingSessionId); if(!parkingSessionNov.getTimeStart().equals(timeStart) && !parkingSessionNov.getTimeStart().equals(timeEnd)) parkingSessionNov.setTimeStart(timeStart); if(!parkingSessionNov.getTimeEnd().equals(timeEnd) && !parkingSessionNov.getTimeEnd().equals(timeStart)) parkingSessionNov.setTimeEnd(timeEnd); if(tablicka!=null && !Objects.equals(parkingSessionNov.getTablica(),tablicka)){ parkingSessionNov.setTablica(tablicka); } }else{ throw new IllegalStateException("The ParkingSession does not exist"); } } public Optional deleteParkingSession(int parkingSessionId) { Optional parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSessionId)); if (parkingSessionOpt.isPresent()) { parkingSessionRepository.deleteByPssId(parkingSessionId); return parkingSessionOpt; } else { throw new IllegalStateException("ParkingSpace doesn't exist, therefore can't be deleted"); } } public Optional addParkingSession(ParkingSession parkingSession) { Optional parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSession.getPssId())); if (parkingSessionOpt.isPresent()) { throw new IllegalStateException("ID already taken, ParkingSession cannot be added"); } else { System.out.println(parkingSession); parkingSessionRepository.save(parkingSession); return parkingSessionOpt; } } }