source: sources/app/src/main/java/parkup/services/ParkingSpaceService.java@ e8b1076

Last change on this file since e8b1076 was e8b1076, checked in by DavidTrajkovski <davidtrajkovski11@…>, 2 years ago

guest login

  • Property mode set to 100644
File size: 4.0 KB
RevLine 
[ce6ad22]1package parkup.services;
2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Service;
5import parkup.entities.ParkingSpace;
[9dd526f]6import parkup.entities.ParkingZone;
[ce6ad22]7import parkup.repositories.ParkingSpaceRepository;
[9ff45d6]8import parkup.repositories.ParkingZoneRepository;
[ce6ad22]9
[97fbc67]10import javax.transaction.Transactional;
[e8b1076]11import java.util.*;
[9ff45d6]12import java.util.stream.Collectors;
[ce6ad22]13
14@Service
15public class ParkingSpaceService {
16 private final ParkingSpaceRepository parkingSpaceRepository;
[9ff45d6]17 private final ParkingZoneRepository parkingZoneRepository;
[ce6ad22]18
19 @Autowired
[9ff45d6]20 public ParkingSpaceService(ParkingSpaceRepository parkingSpaceRepository, ParkingZoneRepository parkingZoneRepository) {
[ce6ad22]21 this.parkingSpaceRepository = parkingSpaceRepository;
[9ff45d6]22 this.parkingZoneRepository = parkingZoneRepository;
[ce6ad22]23 }
24
25 public List<ParkingSpace> getAllParkingSpaces() {
26 return parkingSpaceRepository.findAll();
27 }
28
29 public ParkingSpace findById(int parkingSpaceId) {
30 Optional<ParkingSpace> parkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
31 return parkingSpaceOpt.orElse(null);
32 }
33
[9ff45d6]34 public Optional<ParkingSpace> addParkingSpace(ParkingSpace parkingSpace,int parkingZoneId) {
35 List<String> names = parkingZoneRepository.findByPzId(parkingZoneId).getParkingSpaces().stream().map(ParkingSpace::getPsName).collect(Collectors.toList());
36 if (names.contains(parkingSpace.getPsName())) {
37 throw new IllegalStateException("Name already taken, try adding a ParkingSpace with a different name");
[ce6ad22]38 } else {
39 System.out.println(parkingSpace);
40 parkingSpaceRepository.save(parkingSpace);
41 }
[9ff45d6]42 return Optional.of(parkingSpace);
[ce6ad22]43 }
44
[97fbc67]45 @Transactional
[9ff45d6]46 public ParkingSpace updateParkingSpace(int parkingSpaceId, String psName, boolean taken, float lat, float lng) {
[ce6ad22]47 Optional<ParkingSpace> ParkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
48 if (ParkingSpaceOpt.isPresent()) {
[9dd526f]49 ParkingSpace parkingSpaceNew = parkingSpaceRepository.findByPsId(parkingSpaceId);
50 if (psName != null && psName.length() > 1 && !Objects.equals(parkingSpaceNew.getPsName(), psName)) {
[ce6ad22]51 Optional<ParkingSpace> parkingSpaceOpt1 = Optional.ofNullable(parkingSpaceRepository.findByPsName(psName));
52 if (parkingSpaceOpt1.isPresent()) {
53 throw new IllegalStateException("There is already a ParkingSpace with the same name");
54 }
55
[9dd526f]56 parkingSpaceNew.setPsName(psName);
[ce6ad22]57 }
58
[9dd526f]59 if (!Objects.equals(parkingSpaceNew.isTaken(), taken)) {
60 parkingSpaceNew.setTaken(taken);
[ce6ad22]61 }
62
[97fbc67]63
[9dd526f]64 if(lat!=0 && !Objects.equals(parkingSpaceNew.getLat(), lat)){
65 parkingSpaceNew.setLat(lat);
[97fbc67]66 }
67
[9dd526f]68 if(lng!=0 && !Objects.equals(parkingSpaceNew.getLng(), lng)){
69 parkingSpaceNew.setLng(lng);
[97fbc67]70 }
[9dd526f]71 return parkingSpaceNew;
[97fbc67]72 }else{
73 throw new IllegalStateException("ParkingSpace does not exist");
[ce6ad22]74 }
[e8b1076]75
76
[ce6ad22]77 }
78
[97fbc67]79 @Transactional
80 public Optional<ParkingSpace> deleteParkingSpace(int parkingSpaceId) {
[ce6ad22]81 Optional<ParkingSpace> parkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
82 if (parkingSpaceOpt.isPresent()) {
[9dd526f]83 for(ParkingZone pz: parkingZoneRepository.findAll()){
84 pz.getParkingSpaces().remove(parkingSpaceOpt.get());
85 parkingZoneRepository.save(pz);
86 }
[ce6ad22]87 parkingSpaceRepository.deleteByPsId(parkingSpaceId);
88 } else {
89 throw new IllegalStateException("ParkingSpace doesn't exist, therefore can't be deleted");
90 }
[97fbc67]91 return parkingSpaceOpt;
[ce6ad22]92 }
[9ff45d6]93 public long getNumberOfTakenSpaces(){
94 return parkingSpaceRepository.findAll().stream().filter(ParkingSpace::isTaken).count();
95 }
[ce6ad22]96}
Note: See TracBrowser for help on using the repository browser.