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

Last change on this file since 9ff45d6 was 9ff45d6, checked in by andrejTavchioski <andrej.tavchioski@…>, 3 years ago

Fixed some functionalities related to parkingSessions and parkingZones

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