source: sources/app/src/main/java/parkup/services/ParkingZoneService.java@ 9504a09

Last change on this file since 9504a09 was f6bc52d, checked in by DavidTrajkovski <davidtrajkovski11@…>, 3 years ago

fixed delete methods

  • Property mode set to 100644
File size: 5.5 KB
Line 
1package parkup.services;
2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.data.jpa.repository.Modifying;
5import org.springframework.stereotype.Service;
6import parkup.data.ParkingZoneLocation;
7import parkup.entities.ParkingSpace;
8import parkup.entities.ParkingZone;
9import parkup.repositories.ParkingZoneRepository;
10
11import javax.transaction.Transactional;
12import java.util.ArrayList;
13import java.util.List;
14import java.util.Objects;
15import java.util.Optional;
16
17@Service
18public class ParkingZoneService {
19 private final ParkingZoneRepository parkingZoneRepository;
20
21 @Autowired
22 public ParkingZoneService(ParkingZoneRepository parkingZoneRepository) {
23 this.parkingZoneRepository = parkingZoneRepository;
24 }
25
26 public List<ParkingZone> getAllParkingZones() {
27 return parkingZoneRepository.findAll();
28 }
29
30 public ParkingZone findById(int parkingZoneId) {
31 Optional<ParkingZone> parkingZone = Optional.ofNullable(this.parkingZoneRepository.findByPzId(parkingZoneId));
32 return parkingZone.orElse(null);
33 }
34
35 public List<String> getAllParkingZoneNames() {
36 List<ParkingZone> parkingZones = this.parkingZoneRepository.findAll();
37 List<String> parkingZonesNames = new ArrayList<>();
38 for (ParkingZone pz : parkingZones){
39 parkingZonesNames.add(pz.getPzName());
40 }
41 return parkingZonesNames;
42 }
43
44 public Optional<ParkingZone> addParkingZone(ParkingZone parkingZone) { //zavisno vo koj grad ili opstina i napravi proverki pred dodavanje, implementiraj u naredna faza
45 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzName(parkingZone.getPzName()));
46 if (parkingZoneOpt.isPresent()) {
47 throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name");
48 } else {
49 System.out.println(parkingZone);
50 parkingZoneRepository.save(parkingZone);
51 }
52 return parkingZoneOpt;
53 }
54
55 public ParkingZone addParkingZoneNameOnly(String name) {
56 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzName(name));
57 if (parkingZoneOpt.isPresent()) {
58 throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name");
59 } else {
60 ParkingZone parkingZone = new ParkingZone(name.trim());
61 parkingZoneRepository.save(parkingZone);
62 return parkingZone;
63 }
64 }
65
66 //TODO prati niza od objekti ParkingSpaces i prati objekt ParkingZoneLocation
67 @Transactional
68 public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price, int capacity,
69 String location, int from, int to, String color,
70 List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation) {
71 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId));
72 if (parkingZoneOpt.isPresent()) {
73 ParkingZone parkingZoneNov = parkingZoneRepository.findByPzId(parkingZoneId);
74 if (pzName != null && pzName.length() > 1 && !Objects.equals(parkingZoneNov.getPzName(), pzName)) {
75 Optional<ParkingZone> parkingZoneOpt1 = Optional.ofNullable(parkingZoneRepository.findByPzName(pzName));
76 if (parkingZoneOpt1.isPresent()) {
77 throw new IllegalStateException("There is already a ParkingZone with the same name");
78 }
79
80 parkingZoneNov.setPzName(pzName);
81 }
82
83 if (price != 0 && !Objects.equals(parkingZoneNov.getPrice(), price)) {
84 parkingZoneNov.setPrice(price);
85 }
86
87 if (capacity != 0 && !Objects.equals(parkingZoneNov.getCapacity(), capacity)) {
88 parkingZoneNov.setCapacity(capacity);
89 }
90
91 if (location != null && location.length() > 0 && !Objects.equals(parkingZoneNov.getLocation(), location)) {
92 parkingZoneNov.setLocation(location);
93 }
94
95 if (from != 0 && !Objects.equals(parkingZoneNov.getFrom(), from)) {
96 parkingZoneNov.setFrom(from);
97 }
98
99 if (to != 0 && !Objects.equals(parkingZoneNov.getTo(), to)) {
100 parkingZoneNov.setTo(to);
101 }
102
103 if (color != null && color.length() > 0 && !Objects.equals(parkingZoneNov.getColor(), color)) {
104 parkingZoneNov.setColor(color);
105 }
106
107 if(parkingZoneLocation!=null){
108 parkingZoneNov.setParkingZoneLocation(parkingZoneLocation);
109 }
110
111 if(!parkingSpaces.isEmpty()){
112 //TODO kreiraj lista od parkingSpaces, ni gi prakja false isHandicaped i isTaken
113 parkingZoneNov.setParkingSpaces(parkingSpaces);
114 }
115
116 return parkingZoneNov;
117 } else {
118 throw new IllegalStateException("There ParkingZone does not exist");
119 }
120 }
121
122 @Transactional
123 public Optional<ParkingZone> deleteParkingZone(int parkingZoneId) {
124 Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId));
125 if (parkingZoneOpt.isPresent()) {
126 parkingZoneRepository.deleteByPzId(parkingZoneId);
127 } else {
128 throw new IllegalStateException("ParkingZone doesn't exist, therefore can't be deleted");
129 }
130 return parkingZoneOpt;
131 }
132}
Note: See TracBrowser for help on using the repository browser.