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

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

guest login

  • Property mode set to 100644
File size: 4.0 KB
Line 
1package parkup.services;
2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Service;
5import parkup.entities.ParkingSpace;
6import parkup.entities.ParkingZone;
7import parkup.repositories.ParkingSpaceRepository;
8import parkup.repositories.ParkingZoneRepository;
9
10import javax.transaction.Transactional;
11import java.util.*;
12import java.util.stream.Collectors;
13
14@Service
15public class ParkingSpaceService {
16 private final ParkingSpaceRepository parkingSpaceRepository;
17 private final ParkingZoneRepository parkingZoneRepository;
18
19 @Autowired
20 public ParkingSpaceService(ParkingSpaceRepository parkingSpaceRepository, ParkingZoneRepository parkingZoneRepository) {
21 this.parkingSpaceRepository = parkingSpaceRepository;
22 this.parkingZoneRepository = parkingZoneRepository;
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
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");
38 } else {
39 System.out.println(parkingSpace);
40 parkingSpaceRepository.save(parkingSpace);
41 }
42 return Optional.of(parkingSpace);
43 }
44
45 @Transactional
46 public ParkingSpace updateParkingSpace(int parkingSpaceId, String psName, boolean taken, float lat, float lng) {
47 Optional<ParkingSpace> ParkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
48 if (ParkingSpaceOpt.isPresent()) {
49 ParkingSpace parkingSpaceNew = parkingSpaceRepository.findByPsId(parkingSpaceId);
50 if (psName != null && psName.length() > 1 && !Objects.equals(parkingSpaceNew.getPsName(), psName)) {
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
56 parkingSpaceNew.setPsName(psName);
57 }
58
59 if (!Objects.equals(parkingSpaceNew.isTaken(), taken)) {
60 parkingSpaceNew.setTaken(taken);
61 }
62
63
64 if(lat!=0 && !Objects.equals(parkingSpaceNew.getLat(), lat)){
65 parkingSpaceNew.setLat(lat);
66 }
67
68 if(lng!=0 && !Objects.equals(parkingSpaceNew.getLng(), lng)){
69 parkingSpaceNew.setLng(lng);
70 }
71 return parkingSpaceNew;
72 }else{
73 throw new IllegalStateException("ParkingSpace does not exist");
74 }
75
76
77 }
78
79 @Transactional
80 public Optional<ParkingSpace> deleteParkingSpace(int parkingSpaceId) {
81 Optional<ParkingSpace> parkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
82 if (parkingSpaceOpt.isPresent()) {
83 for(ParkingZone pz: parkingZoneRepository.findAll()){
84 pz.getParkingSpaces().remove(parkingSpaceOpt.get());
85 parkingZoneRepository.save(pz);
86 }
87 parkingSpaceRepository.deleteByPsId(parkingSpaceId);
88 } else {
89 throw new IllegalStateException("ParkingSpace doesn't exist, therefore can't be deleted");
90 }
91 return parkingSpaceOpt;
92 }
93 public long getNumberOfTakenSpaces(){
94 return parkingSpaceRepository.findAll().stream().filter(ParkingSpace::isTaken).count();
95 }
96}
Note: See TracBrowser for help on using the repository browser.