Ignore:
Timestamp:
02/02/22 17:25:17 (2 years ago)
Author:
andrejTavchioski <andrej.tavchioski@…>
Branches:
master
Children:
98f448a
Parents:
9dd526f
Message:

updateParkingZone fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sources/app/src/main/java/parkup/services/ParkingZoneService.java

    r9dd526f rdf4089c  
    33import org.springframework.beans.factory.annotation.Autowired;
    44import org.springframework.stereotype.Service;
     5import parkup.data.ParkingZoneAdminView;
    56import parkup.data.ParkingZoneLocation;
     7import parkup.data.WorkerDemo;
    68import parkup.entities.ParkingSpace;
    79import parkup.entities.ParkingZone;
     
    1719import java.util.Objects;
    1820import java.util.Optional;
     21import java.util.stream.Collectors;
    1922
    2023@Service
     
    3639        List<ParkingZone> parkingZones= parkingZoneRepository.findAll();
    3740        for(ParkingZone pz:parkingZones){
    38             setTransientVariables(pz.getId());
     41            setTransientVariables(pz);
    3942        }
    4043        return parkingZones;
    4144    }
    4245
    43     public ParkingZone findById(int parkingZoneId) {
     46    public ParkingZoneAdminView findById(int parkingZoneId) {
    4447        Optional<ParkingZone> parkingZone = Optional.ofNullable(this.parkingZoneRepository.findByPzId(parkingZoneId));
    4548        if (!parkingZone.isPresent()) {
    4649            throw new IllegalStateException("ParkingZone does not exist");
    4750        }
    48         setTransientVariables(parkingZone.get().getId());
    49         return parkingZone.get();
     51        setTransientVariables(parkingZone.get());
     52        return new ParkingZoneAdminView(parkingZone.get(),getResponsibleWorkers(parkingZoneId));
    5053    }
    5154
     
    8386    //TODO proveri dali ima odgovorni i dokolku ima dali postojat vo bazata
    8487    @Transactional
    85     public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price,
     88    public ParkingZoneAdminView updateParkingZone(int parkingZoneId, String pzName, int price,
    8689                                         String location, int from, int to, String color,
    87                                          List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation, List<Integer> odgovorniLica) {
     90                                         List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation, List<WorkerDemo> responsibleWorkers) {
    8891
    8992        //TODO prati niza od objekti ParkingSpaces i prati objekt ParkingZoneLocation
     
    124127
    125128                if (!parkingSpaces.isEmpty()) {
     129                    List<String> psNamesInZone=parkingZoneNov.getParkingSpaces().stream().map(ParkingSpace::getPsName).collect(Collectors.toList());
     130                    List<ParkingSpace> psToAdd=parkingSpaces.stream().filter(ps->!psNamesInZone.contains(ps.getPsName())).collect(Collectors.toList());
     131                    for(ParkingSpace ps:psToAdd){
     132                        parkingZoneNov.getParkingSpaces().add(ps);
     133                    }
     134                }
     135                if (!responsibleWorkers.isEmpty()) {
    126136                    ParkingZone parkingZone = parkingZoneRepository.findByPzId(parkingZoneId);
    127 //                    for(ParkingSpace space :parkingZone.getParkingSpaces()){
    128 //                        if(!parkingSpaces.contains(space)){
    129 //                            for(ParkingSession session: parkingSessionRepository.findByParkingZonePzName(pzName)){
    130 //                                if(session.getParkingSpace().getPsId()==space.getPsId())
    131 //                                    throw new IllegalStateException("Vlegov vo iffot");
    132 //                            }
    133 //                        }
    134 //                    }
    135                     //TODO: treba da se opravi
    136                     parkingZone.setParkingSpaces(null);
    137                     List<ParkingSpace> spacesToAdd = new ArrayList<>(parkingSpaces);
    138                     parkingZone.setParkingSpaces(spacesToAdd);
    139                 }
    140                 if (!odgovorniLica.isEmpty()) {
    141                     ParkingZone parkingZone = parkingZoneRepository.findByPzId(parkingZoneId);
    142                     for (Integer vrabotenId : odgovorniLica) {
    143                         Worker workerToAdd = workerRepository.findByWorkerId(vrabotenId);
     137                    for (Integer workerId : responsibleWorkers.stream().map(WorkerDemo::getWorkerId).collect(Collectors.toList())) {
     138                        Worker workerToAdd = workerRepository.findByWorkerId(workerId);
    144139                        if(workerToAdd !=null)
    145140                        workerToAdd.getParkingZones().add(parkingZone);
     
    147142                }
    148143
    149 
    150                 return parkingZoneNov;
     144                setTransientVariables(parkingZoneNov);
     145                return new ParkingZoneAdminView(parkingZoneNov,getResponsibleWorkers(parkingZoneId));
    151146            } else {
    152147                throw new IllegalStateException("There ParkingZone does not exist");
     
    159154            Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId));
    160155            if (parkingZoneOpt.isPresent()) {
     156                parkingZoneOpt.get().setParkingSpaces(null);
     157                parkingZoneOpt.get().setParkingZoneLocation(null);
    161158                parkingZoneRepository.deleteByPzId(parkingZoneId);
    162159            } else {
     
    174171            return parkingZone.getParkingSpaces().size();
    175172        }
    176         public void setTransientVariables(int pzId){
    177             calculateCapacity(pzId);
    178             calculateTakenSpaces(pzId);
     173        public void setTransientVariables(ParkingZone pz){
     174            pz.setCapacity(calculateCapacity(pz.getId()));
     175            pz.setTakenSpaces(calculateTakenSpaces(pz.getId()));
     176        }
     177        public List<WorkerDemo> getResponsibleWorkers(int pzId){
     178            ParkingZone parkingZone =parkingZoneRepository.findByPzId(pzId);
     179            return workerRepository.findAll().stream().filter(w->w.getParkingZones().contains(parkingZone)).map(WorkerDemo::new).collect(Collectors.toList());
    179180        }
    180181    }
Note: See TracChangeset for help on using the changeset viewer.