source: sources/app/src/main/java/parkup/services/ParkingZoneService.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: 7.2 KB
Line 
1package parkup.services;
2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Service;
5import parkup.data.ParkingZoneLocation;
6import parkup.entities.ParkingSession;
7import parkup.entities.ParkingSpace;
8import parkup.entities.ParkingZone;
9import parkup.entities.Vraboten;
10import parkup.repositories.ParkingSessionRepository;
11import parkup.repositories.ParkingSpaceRepository;
12import parkup.repositories.ParkingZoneRepository;
13import parkup.repositories.VrabotenRepository;
14
15import javax.transaction.Transactional;
16import java.util.ArrayList;
17import java.util.List;
18import java.util.Objects;
19import java.util.Optional;
20
21@Service
22public class ParkingZoneService {
23 private final ParkingZoneRepository parkingZoneRepository;
24 private final ParkingSpaceRepository parkingSpaceRepository;
25 private final VrabotenRepository vrabotenRepository;
26 private final ParkingSessionRepository parkingSessionRepository;
27
28 @Autowired
29 public ParkingZoneService(ParkingZoneRepository parkingZoneRepository, ParkingSpaceRepository parkingSpaceRepository, VrabotenRepository vrabotenRepository, ParkingSessionRepository parkingSessionRepository) {
30 this.parkingZoneRepository = parkingZoneRepository;
31 this.parkingSpaceRepository = parkingSpaceRepository;
32 this.parkingSessionRepository = parkingSessionRepository;
33 this.vrabotenRepository = vrabotenRepository;
34 }
35
36 public List<ParkingZone> getAllParkingZones() {
37 return parkingZoneRepository.findAll();
38 }
39
40 public ParkingZone findById(int parkingZoneId) {
41 Optional<ParkingZone> parkingZone = Optional.ofNullable(this.parkingZoneRepository.findByPzId(parkingZoneId));
42 return parkingZone.orElse(null);
43 }
44
45 public List<String> getAllParkingZoneNames() {
46 List<ParkingZone> parkingZones = this.parkingZoneRepository.findAll();
47 List<String> parkingZonesNames = new ArrayList<>();
48 for (ParkingZone pz : parkingZones) {
49 parkingZonesNames.add(pz.getPzName());
50 }
51 return parkingZonesNames;
52 }
53
54 public Optional<ParkingZone> addParkingZone(ParkingZone parkingZone) { //zavisno vo koj grad ili opstina i napravi proverki pred dodavanje, implementiraj u naredna faza
55 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzName(parkingZone.getPzName()));
56 if (parkingZoneOpt.isPresent()) {
57 throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name");
58 } else {
59 System.out.println(parkingZone);
60 parkingZoneRepository.save(parkingZone);
61 }
62 return parkingZoneOpt;
63 }
64
65 public ParkingZone addParkingZoneNameOnly(String name) {
66 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzName(name));
67 if (parkingZoneOpt.isPresent()) {
68 throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name");
69 } else {
70 ParkingZone parkingZone = new ParkingZone(name.trim());
71 parkingZoneRepository.save(parkingZone);
72 return parkingZone;
73 }
74 }
75
76 //TODO proveri dali ima odgovorni i dokolku ima dali postojat vo bazata
77 @Transactional
78 public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price,
79 String location, int from, int to, String color,
80 List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation, List<Integer> odgovorniLica) {
81
82 //TODO prati niza od objekti ParkingSpaces i prati objekt ParkingZoneLocation
83
84 ParkingZone parkingZoneNov = parkingZoneRepository.findByPzId(parkingZoneId);
85 if (parkingZoneNov!=null) {
86 if (pzName != null && pzName.length() > 1) { ;
87 if (parkingZoneNov.getPzName().equals(pzName)&&parkingZoneNov.getId()!=parkingZoneId) {
88 throw new IllegalStateException("There is already a ParkingZone with the same name");
89 }
90
91 parkingZoneNov.setPzName(pzName);
92 }
93
94 if (price != 0 && !Objects.equals(parkingZoneNov.getPrice(), price)) {
95 parkingZoneNov.setPrice(price);
96 }
97
98 if (location != null && location.length() > 0 && !Objects.equals(parkingZoneNov.getAddress(), location)) {
99 parkingZoneNov.setAddress(location);
100 }
101
102 if (from != 0 && !Objects.equals(parkingZoneNov.getFrom(), from)) {
103 parkingZoneNov.setFrom(from);
104 }
105
106 if (to != 0 && !Objects.equals(parkingZoneNov.getTo(), to)) {
107 parkingZoneNov.setTo(to);
108 }
109
110 if (color != null && color.length() > 0 && !Objects.equals(parkingZoneNov.getColor(), color)) {
111 parkingZoneNov.setColor(color);
112 }
113
114 if (parkingZoneLocation != null) {
115 parkingZoneNov.setParkingZoneLocation(parkingZoneLocation);
116 }
117
118 if (!parkingSpaces.isEmpty()) {
119 ParkingZone parkingZone = parkingZoneRepository.findByPzId(parkingZoneId);
120// for(ParkingSpace space :parkingZone.getParkingSpaces()){
121// if(!parkingSpaces.contains(space)){
122// for(ParkingSession session: parkingSessionRepository.findByParkingZonePzName(pzName)){
123// if(session.getParkingSpace().getPsId()==space.getPsId())
124// throw new IllegalStateException("Vlegov vo iffot");
125// }
126// }
127// }
128 //TODO: treba da se opravi
129 parkingZone.setParkingSpaces(null);
130 List<ParkingSpace> spacesToAdd = new ArrayList<>(parkingSpaces);
131 parkingZone.setParkingSpaces(spacesToAdd);
132 }
133 if (!odgovorniLica.isEmpty()) {
134 ParkingZone parkingZone = parkingZoneRepository.findByPzId(parkingZoneId);
135 for (Integer vrabotenId : odgovorniLica) {
136 Vraboten vrabotenToAdd = vrabotenRepository.findByVrabotenId(vrabotenId);
137 if(vrabotenToAdd!=null)
138 vrabotenToAdd.getParkingZones().add(parkingZone);
139 }
140 }
141
142
143 return parkingZoneNov;
144 } else {
145 throw new IllegalStateException("There ParkingZone does not exist");
146 }
147 }
148
149
150 @Transactional
151 public Optional<ParkingZone> deleteParkingZone ( int parkingZoneId){
152 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId));
153 if (parkingZoneOpt.isPresent()) {
154 parkingZoneRepository.deleteByPzId(parkingZoneId);
155 } else {
156 throw new IllegalStateException("ParkingZone doesn't exist, therefore can't be deleted");
157 }
158 return parkingZoneOpt;
159 }
160 }
161
Note: See TracBrowser for help on using the repository browser.