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

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

backend refactoring

  • 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;
[ce6ad22]11import java.util.List;
12import java.util.Objects;
13import java.util.Optional;
[9ff45d6]14import java.util.stream.Collectors;
[ce6ad22]15
16@Service
17public class ParkingSpaceService {
18 private final ParkingSpaceRepository parkingSpaceRepository;
[9ff45d6]19 private final ParkingZoneRepository parkingZoneRepository;
[ce6ad22]20
21 @Autowired
[9ff45d6]22 public ParkingSpaceService(ParkingSpaceRepository parkingSpaceRepository, ParkingZoneRepository parkingZoneRepository) {
[ce6ad22]23 this.parkingSpaceRepository = parkingSpaceRepository;
[9ff45d6]24 this.parkingZoneRepository = parkingZoneRepository;
[ce6ad22]25 }
26
27 public List<ParkingSpace> getAllParkingSpaces() {
28 return parkingSpaceRepository.findAll();
29 }
30
31 public ParkingSpace findById(int parkingSpaceId) {
32 Optional<ParkingSpace> parkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
33 return parkingSpaceOpt.orElse(null);
34 }
35
[9ff45d6]36 public Optional<ParkingSpace> addParkingSpace(ParkingSpace parkingSpace,int parkingZoneId) {
37 List<String> names = parkingZoneRepository.findByPzId(parkingZoneId).getParkingSpaces().stream().map(ParkingSpace::getPsName).collect(Collectors.toList());
38 if (names.contains(parkingSpace.getPsName())) {
39 throw new IllegalStateException("Name already taken, try adding a ParkingSpace with a different name");
[ce6ad22]40 } else {
41 System.out.println(parkingSpace);
42 parkingSpaceRepository.save(parkingSpace);
43 }
[9ff45d6]44 return Optional.of(parkingSpace);
[ce6ad22]45 }
46
[97fbc67]47 @Transactional
[9ff45d6]48 public ParkingSpace updateParkingSpace(int parkingSpaceId, String psName, boolean taken, float lat, float lng) {
[ce6ad22]49 Optional<ParkingSpace> ParkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
50 if (ParkingSpaceOpt.isPresent()) {
[9dd526f]51 ParkingSpace parkingSpaceNew = parkingSpaceRepository.findByPsId(parkingSpaceId);
52 if (psName != null && psName.length() > 1 && !Objects.equals(parkingSpaceNew.getPsName(), psName)) {
[ce6ad22]53 Optional<ParkingSpace> parkingSpaceOpt1 = Optional.ofNullable(parkingSpaceRepository.findByPsName(psName));
54 if (parkingSpaceOpt1.isPresent()) {
55 throw new IllegalStateException("There is already a ParkingSpace with the same name");
56 }
57
[9dd526f]58 parkingSpaceNew.setPsName(psName);
[ce6ad22]59 }
60
[9dd526f]61 if (!Objects.equals(parkingSpaceNew.isTaken(), taken)) {
62 parkingSpaceNew.setTaken(taken);
[ce6ad22]63 }
64
[97fbc67]65
[9dd526f]66 if(lat!=0 && !Objects.equals(parkingSpaceNew.getLat(), lat)){
67 parkingSpaceNew.setLat(lat);
[97fbc67]68 }
69
[9dd526f]70 if(lng!=0 && !Objects.equals(parkingSpaceNew.getLng(), lng)){
71 parkingSpaceNew.setLng(lng);
[97fbc67]72 }
[9dd526f]73 return parkingSpaceNew;
[97fbc67]74 }else{
75 throw new IllegalStateException("ParkingSpace does not exist");
[ce6ad22]76 }
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.