Changeset 9ff45d6


Ignore:
Timestamp:
12/24/21 23:31:23 (3 years ago)
Author:
andrejTavchioski <andrej.tavchioski@…>
Branches:
master
Children:
9dd526f
Parents:
8588fcb
Message:

Fixed some functionalities related to parkingSessions and parkingZones

Location:
sources/app
Files:
27 added
1 deleted
42 edited
2 moved

Legend:

Unmodified
Added
Removed
  • sources/app/.idea/vcs.xml

    r8588fcb r9ff45d6  
    22<project version="4">
    33  <component name="VcsDirectoryMappings">
    4     <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
     4    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
    55  </component>
    66</project>
  • sources/app/src/main/java/parkup/configs/RegistrationServiceW.java

    r8588fcb r9ff45d6  
    1 package parkup.configs;
    2 
    3 import org.springframework.beans.factory.annotation.Autowired;
    4 import org.springframework.stereotype.Service;
    5 import parkup.configs.email.EmailSender;
    6 import parkup.configs.email.EmailValidator;
    7 import parkup.configs.token.ConfirmationTokenW;
    8 import parkup.configs.token.ConfirmationTokenService;
    9 import parkup.entities.Vraboten;
    10 import parkup.services.VrabotenService;
    11 
    12 import javax.transaction.Transactional;
    13 import java.time.LocalDateTime;
    14 
    15 @Service
    16 public class RegistrationServiceW {
    17     private final VrabotenService vrabotenService;
    18     private final EmailValidator emailValidator;
    19     private final ConfirmationTokenService confirmationTokenService;
    20     private final EmailSender emailSender;
    21 
    22     @Autowired
    23     public RegistrationServiceW(VrabotenService vrabotenService, EmailValidator emailValidator,
    24                                  ConfirmationTokenService confirmationTokenService, EmailSender emailSender) {
    25         this.vrabotenService = vrabotenService;
    26         this.emailValidator = emailValidator;
    27         this.confirmationTokenService = confirmationTokenService;
    28         this.emailSender = emailSender;
    29     }
    30 
    31     public String register(RegistrationRequest request) {
    32         boolean isValidEmail = emailValidator.
    33                 test(request.getEmail());
    34 
    35         if (!isValidEmail) {
    36             throw new IllegalStateException("email not valid");
    37         }
    38 
    39         String token = vrabotenService.signUpVraboten(
    40                 new Vraboten(
    41                         request.getFirstName(),
    42                         request.getLastName(),
    43                         request.getEmail(),
    44                         request.getPassword(),
    45                         request.getMobile()
    46                 )
    47         );
    48 
    49         String link = "http://localhost:8080/vraboten/registration/confirm?token=" + token;
    50         emailSender.send(
    51                 request.getEmail(),
    52                 buildEmail(request.getFirstName(), link));
    53 
    54         return token;
    55     }
    56 
    57     @Transactional
    58     public String confirmToken(String token) {
    59         ConfirmationTokenW confirmationTokenW = confirmationTokenService
    60                 .getTokenW(token)
    61                 .orElseThrow(() ->
    62                         new IllegalStateException("token not found"));
    63 
    64         if (confirmationTokenW.getConfirmedAt() != null) {
    65             throw new IllegalStateException("email already confirmed");
    66         }
    67 
    68         LocalDateTime expiredAt = confirmationTokenW.getExpiresAt();
    69 
    70         if (expiredAt.isBefore(LocalDateTime.now())) {
    71             throw new IllegalStateException("token expired");
    72         }
    73 
    74         confirmationTokenService.setConfirmedAtW(token);
    75 
    76         vrabotenService.enableVraboten(confirmationTokenW.getRegistriranParkirac().getEmail());
    77         return "confirmed";
    78     }
    79 
    80     private String buildEmail(String name, String link) {
    81         return "<div style=\"font-family:Helvetica,Arial,sans-serif;font-size:16px;margin:0;color:#0b0c0c\">\n" +
    82                 "\n" +
    83                 "<span style=\"display:none;font-size:1px;color:#fff;max-height:0\"></span>\n" +
    84                 "\n" +
    85                 "  <table role=\"presentation\" width=\"100%\" style=\"border-collapse:collapse;min-width:100%;width:100%!important\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n" +
    86                 "    <tbody><tr>\n" +
    87                 "      <td width=\"100%\" height=\"53\" bgcolor=\"#0b0c0c\">\n" +
    88                 "        \n" +
    89                 "        <table role=\"presentation\" width=\"100%\" style=\"border-collapse:collapse;max-width:580px\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\">\n" +
    90                 "          <tbody><tr>\n" +
    91                 "            <td width=\"70\" bgcolor=\"#0b0c0c\" valign=\"middle\">\n" +
    92                 "                <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse\">\n" +
    93                 "                  <tbody><tr>\n" +
    94                 "                    <td style=\"padding-left:10px\">\n" +
    95                 "                  \n" +
    96                 "                    </td>\n" +
    97                 "                    <td style=\"font-size:28px;line-height:1.315789474;Margin-top:4px;padding-left:10px\">\n" +
    98                 "                      <span style=\"font-family:Helvetica,Arial,sans-serif;font-weight:700;color:#ffffff;text-decoration:none;vertical-align:top;display:inline-block\">Confirm your email</span>\n" +
    99                 "                    </td>\n" +
    100                 "                  </tr>\n" +
    101                 "                </tbody></table>\n" +
    102                 "              </a>\n" +
    103                 "            </td>\n" +
    104                 "          </tr>\n" +
    105                 "        </tbody></table>\n" +
    106                 "        \n" +
    107                 "      </td>\n" +
    108                 "    </tr>\n" +
    109                 "  </tbody></table>\n" +
    110                 "  <table role=\"presentation\" class=\"m_-6186904992287805515content\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse;max-width:580px;width:100%!important\" width=\"100%\">\n" +
    111                 "    <tbody><tr>\n" +
    112                 "      <td width=\"10\" height=\"10\" valign=\"middle\"></td>\n" +
    113                 "      <td>\n" +
    114                 "        \n" +
    115                 "                <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse\">\n" +
    116                 "                  <tbody><tr>\n" +
    117                 "                    <td bgcolor=\"#1D70B8\" width=\"100%\" height=\"10\"></td>\n" +
    118                 "                  </tr>\n" +
    119                 "                </tbody></table>\n" +
    120                 "        \n" +
    121                 "      </td>\n" +
    122                 "      <td width=\"10\" valign=\"middle\" height=\"10\"></td>\n" +
    123                 "    </tr>\n" +
    124                 "  </tbody></table>\n" +
    125                 "\n" +
    126                 "\n" +
    127                 "\n" +
    128                 "  <table role=\"presentation\" class=\"m_-6186904992287805515content\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse;max-width:580px;width:100%!important\" width=\"100%\">\n" +
    129                 "    <tbody><tr>\n" +
    130                 "      <td height=\"30\"><br></td>\n" +
    131                 "    </tr>\n" +
    132                 "    <tr>\n" +
    133                 "      <td width=\"10\" valign=\"middle\"><br></td>\n" +
    134                 "      <td style=\"font-family:Helvetica,Arial,sans-serif;font-size:19px;line-height:1.315789474;max-width:560px\">\n" +
    135                 "        \n" +
    136                 "            <p style=\"Margin:0 0 20px 0;font-size:19px;line-height:25px;color:#0b0c0c\">Hi " + name + ",</p><p style=\"Margin:0 0 20px 0;font-size:19px;line-height:25px;color:#0b0c0c\"> Thank you for registering. Please click on the below link to activate your account: </p><blockquote style=\"Margin:0 0 20px 0;border-left:10px solid #b1b4b6;padding:15px 0 0.1px 15px;font-size:19px;line-height:25px\"><p style=\"Margin:0 0 20px 0;font-size:19px;line-height:25px;color:#0b0c0c\"> <a href=\"" + link + "\">Activate Now</a> </p></blockquote>\n Link will expire in 15 minutes. <p>See you soon</p>" +
    137                 "        \n" +
    138                 "      </td>\n" +
    139                 "      <td width=\"10\" valign=\"middle\"><br></td>\n" +
    140                 "    </tr>\n" +
    141                 "    <tr>\n" +
    142                 "      <td height=\"30\"><br></td>\n" +
    143                 "    </tr>\n" +
    144                 "  </tbody></table><div class=\"yj6qo\"></div><div class=\"adL\">\n" +
    145                 "\n" +
    146                 "</div></div>";
    147     }
    148 }
     1//package parkup.configs;
     2//
     3//import org.springframework.beans.factory.annotation.Autowired;
     4//import org.springframework.stereotype.Service;
     5//import parkup.configs.email.EmailSender;
     6//import parkup.configs.email.EmailValidator;
     7//import parkup.configs.token.ConfirmationTokenW;
     8//import parkup.configs.token.ConfirmationTokenService;
     9//import parkup.entities.Vraboten;
     10//import parkup.services.VrabotenService;
     11//
     12//import javax.transaction.Transactional;
     13//import java.time.LocalDateTime;
     14//
     15//@Service
     16//public class RegistrationServiceW {
     17//    private final VrabotenService vrabotenService;
     18//    private final EmailValidator emailValidator;
     19//    private final ConfirmationTokenService confirmationTokenService;
     20//    private final EmailSender emailSender;
     21//
     22//    @Autowired
     23//    public RegistrationServiceW(VrabotenService vrabotenService, EmailValidator emailValidator,
     24//                                 ConfirmationTokenService confirmationTokenService, EmailSender emailSender) {
     25//        this.vrabotenService = vrabotenService;
     26//        this.emailValidator = emailValidator;
     27//        this.confirmationTokenService = confirmationTokenService;
     28//        this.emailSender = emailSender;
     29//    }
     30//
     31//    public String register(RegistrationRequest request) {
     32//        boolean isValidEmail = emailValidator.
     33//                test(request.getEmail());
     34//
     35//        if (!isValidEmail) {
     36//            throw new IllegalStateException("email not valid");
     37//        }
     38//
     39//        String token = vrabotenService.signUpVraboten(
     40//                new Vraboten(
     41//                        request.getFirstName(),
     42//                        request.getLastName(),
     43//                        request.getEmail(),
     44//                        request.getPassword(),
     45//                        request.getMobile()
     46//                )
     47//        );
     48//
     49//        String link = "http://localhost:8080/vraboten/registration/confirm?token=" + token;
     50//        emailSender.send(
     51//                request.getEmail(),
     52//                buildEmail(request.getFirstName(), link));
     53//
     54//        return token;
     55//    }
     56//
     57//    @Transactional
     58//    public String confirmToken(String token) {
     59//        ConfirmationTokenW confirmationTokenW = confirmationTokenService
     60//                .getTokenW(token)
     61//                .orElseThrow(() ->
     62//                        new IllegalStateException("token not found"));
     63//
     64//        if (confirmationTokenW.getConfirmedAt() != null) {
     65//            throw new IllegalStateException("email already confirmed");
     66//        }
     67//
     68//        LocalDateTime expiredAt = confirmationTokenW.getExpiresAt();
     69//
     70//        if (expiredAt.isBefore(LocalDateTime.now())) {
     71//            throw new IllegalStateException("token expired");
     72//        }
     73//
     74//        confirmationTokenService.setConfirmedAtW(token);
     75//
     76//        vrabotenService.enableVraboten(confirmationTokenW.getRegistriranParkirac().getEmail());
     77//        return "confirmed";
     78//    }
     79//
     80//    private String buildEmail(String name, String link) {
     81//        return "<div style=\"font-family:Helvetica,Arial,sans-serif;font-size:16px;margin:0;color:#0b0c0c\">\n" +
     82//                "\n" +
     83//                "<span style=\"display:none;font-size:1px;color:#fff;max-height:0\"></span>\n" +
     84//                "\n" +
     85//                "  <table role=\"presentation\" width=\"100%\" style=\"border-collapse:collapse;min-width:100%;width:100%!important\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n" +
     86//                "    <tbody><tr>\n" +
     87//                "      <td width=\"100%\" height=\"53\" bgcolor=\"#0b0c0c\">\n" +
     88//                "        \n" +
     89//                "        <table role=\"presentation\" width=\"100%\" style=\"border-collapse:collapse;max-width:580px\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\">\n" +
     90//                "          <tbody><tr>\n" +
     91//                "            <td width=\"70\" bgcolor=\"#0b0c0c\" valign=\"middle\">\n" +
     92//                "                <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse\">\n" +
     93//                "                  <tbody><tr>\n" +
     94//                "                    <td style=\"padding-left:10px\">\n" +
     95//                "                  \n" +
     96//                "                    </td>\n" +
     97//                "                    <td style=\"font-size:28px;line-height:1.315789474;Margin-top:4px;padding-left:10px\">\n" +
     98//                "                      <span style=\"font-family:Helvetica,Arial,sans-serif;font-weight:700;color:#ffffff;text-decoration:none;vertical-align:top;display:inline-block\">Confirm your email</span>\n" +
     99//                "                    </td>\n" +
     100//                "                  </tr>\n" +
     101//                "                </tbody></table>\n" +
     102//                "              </a>\n" +
     103//                "            </td>\n" +
     104//                "          </tr>\n" +
     105//                "        </tbody></table>\n" +
     106//                "        \n" +
     107//                "      </td>\n" +
     108//                "    </tr>\n" +
     109//                "  </tbody></table>\n" +
     110//                "  <table role=\"presentation\" class=\"m_-6186904992287805515content\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse;max-width:580px;width:100%!important\" width=\"100%\">\n" +
     111//                "    <tbody><tr>\n" +
     112//                "      <td width=\"10\" height=\"10\" valign=\"middle\"></td>\n" +
     113//                "      <td>\n" +
     114//                "        \n" +
     115//                "                <table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse\">\n" +
     116//                "                  <tbody><tr>\n" +
     117//                "                    <td bgcolor=\"#1D70B8\" width=\"100%\" height=\"10\"></td>\n" +
     118//                "                  </tr>\n" +
     119//                "                </tbody></table>\n" +
     120//                "        \n" +
     121//                "      </td>\n" +
     122//                "      <td width=\"10\" valign=\"middle\" height=\"10\"></td>\n" +
     123//                "    </tr>\n" +
     124//                "  </tbody></table>\n" +
     125//                "\n" +
     126//                "\n" +
     127//                "\n" +
     128//                "  <table role=\"presentation\" class=\"m_-6186904992287805515content\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border-collapse:collapse;max-width:580px;width:100%!important\" width=\"100%\">\n" +
     129//                "    <tbody><tr>\n" +
     130//                "      <td height=\"30\"><br></td>\n" +
     131//                "    </tr>\n" +
     132//                "    <tr>\n" +
     133//                "      <td width=\"10\" valign=\"middle\"><br></td>\n" +
     134//                "      <td style=\"font-family:Helvetica,Arial,sans-serif;font-size:19px;line-height:1.315789474;max-width:560px\">\n" +
     135//                "        \n" +
     136//                "            <p style=\"Margin:0 0 20px 0;font-size:19px;line-height:25px;color:#0b0c0c\">Hi " + name + ",</p><p style=\"Margin:0 0 20px 0;font-size:19px;line-height:25px;color:#0b0c0c\"> Thank you for registering. Please click on the below link to activate your account: </p><blockquote style=\"Margin:0 0 20px 0;border-left:10px solid #b1b4b6;padding:15px 0 0.1px 15px;font-size:19px;line-height:25px\"><p style=\"Margin:0 0 20px 0;font-size:19px;line-height:25px;color:#0b0c0c\"> <a href=\"" + link + "\">Activate Now</a> </p></blockquote>\n Link will expire in 15 minutes. <p>See you soon</p>" +
     137//                "        \n" +
     138//                "      </td>\n" +
     139//                "      <td width=\"10\" valign=\"middle\"><br></td>\n" +
     140//                "    </tr>\n" +
     141//                "    <tr>\n" +
     142//                "      <td height=\"30\"><br></td>\n" +
     143//                "    </tr>\n" +
     144//                "  </tbody></table><div class=\"yj6qo\"></div><div class=\"adL\">\n" +
     145//                "\n" +
     146//                "</div></div>";
     147//    }
     148//}
  • sources/app/src/main/java/parkup/configs/token/ConfirmationTokenService.java

    r8588fcb r9ff45d6  
    1212    private final ConfirmationTokenRepositoryW confirmationTokenRepositoryW;
    1313
    14 <<<<<<< HEAD
     14
    1515    public ConfirmationTokenService(ConfirmationTokenRepositoryRP confirmationTokenRepositoryRP, ConfirmationTokenRepositoryW confirmationTokenRepositoryW, parkup.configs.token.ConfirmationTokenRepositoryW confirmationTokenRepositoryW1) {
    1616        this.confirmationTokenRepositoryRP = confirmationTokenRepositoryRP;
    1717        this.confirmationTokenRepositoryW = confirmationTokenRepositoryW1;
    18 =======
    19     public ConfirmationTokenService(ConfirmationTokenRepositoryRP confirmationTokenRepositoryRP, ConfirmationTokenRepositoryW confirmationTokenRepositoryW) {
    20         this.confirmationTokenRepositoryRP = confirmationTokenRepositoryRP;
    21         this.confirmationTokenRepositoryW = confirmationTokenRepositoryW;
    22 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    2318    }
    24 
    2519    public void saveConfirmationTokenRP(ConfirmationTokenRP token){
    2620        confirmationTokenRepositoryRP.save(token);
  • sources/app/src/main/java/parkup/configs/webConfigs/WebSecurityConfig.java

    r8588fcb r9ff45d6  
    1 package parkup.configs;
     1package parkup.configs.webConfigs;
    22
    33import org.springframework.context.annotation.Bean;
     
    3030                    .csrf().disable()
    3131                    .authorizeRequests()
    32                         .antMatchers("/vraboten/registration/**")
    33                         .permitAll()
    3432                        .antMatchers("/registriranParkirac/registration/**")
    3533                        .permitAll()
    3634                    .anyRequest()
    37                     .authenticated().and().formLogin();
     35                    .authenticated().and().formLogin();//ruta na viktor
    3836        }
    3937
  • sources/app/src/main/java/parkup/controllers/ParkingSessionController.java

    r8588fcb r9ff45d6  
    33import org.springframework.beans.factory.annotation.Autowired;
    44import org.springframework.web.bind.annotation.*;
     5import parkup.data.Tablicka;
    56import parkup.entities.ParkingSession;
    67import parkup.services.ParkingSessionService;
     
    3334    }
    3435
    35     @PostMapping({"/parkingSession"})
    36     public Optional<ParkingSession> addParkingSession(@RequestBody ParkingSession parkingSession) {
    37         //System.out.println("???????");
    38         return this.parkingSessionService.addParkingSession(parkingSession);
     36    @PostMapping({"/parkingSession/{parkingZoneId}"})
     37    public Optional<ParkingSession> startParkingSession(@RequestParam String tablicka, @PathVariable int parkingZoneId) {
     38        return this.parkingSessionService.startParkingSession(tablicka,parkingZoneId);
    3939    }
     40// TODO: vidi kako kje funkcionira update na sesija i nejzino plakjanje so frontot
    4041
    41     @PutMapping({"/parkingSession/{parkingSessionId}"})
    42     public void updateParkingSession(@PathVariable int parkingSessionId, @RequestBody ParkingSession parkingSession) {
    43         parkingSessionService.updateParkingSession(parkingSessionId,
    44                 parkingSession.getTimeStart(), parkingSession.getTimeEnd(), parkingSession.getTablica());
     42//    @PutMapping({"/parkingSession/{parkingSessionId}"})
     43//    public void updateParkingSession(@PathVariable int parkingSessionId, @RequestBody ParkingSession parkingSession) {
     44//        parkingSessionService.updateParkingSession(parkingSessionId,
     45//                parkingSession.getTimeStart(), parkingSession.getTimeEnd(), parkingSession.getTablica());
     46//    }
     47//    @PutMapping({"/parkingSession/pay/{parkingSessionId"})
     48//    public void payParkingSession(@PathVariable int parkingSessionId){
     49//        parkingSessionService.paySession
     50//    }
     51    @PutMapping("/parkingSession/end/{parkingSessionId}")
     52    public ParkingSession endParkingSession(@PathVariable int parkingSessionId){
     53        return this.parkingSessionService.endParkingSession(parkingSessionId);
     54    }
     55    @PutMapping("/parkingSession/verify/{parkingSessionId}")
     56    public ParkingSession verifyParkingSession(@PathVariable int parkingSessionId,@RequestParam String parkingSpaceName,@RequestParam int parkingZoneId){
     57        return this.parkingSessionService.verifyParkingSession(parkingSessionId,parkingSpaceName,parkingZoneId);
     58    }
     59    @GetMapping("/parkingSession/calculate/{parkingSessionId}")
     60    public int calculateParkingSession(@PathVariable int parkingSessionId){
     61        return this.parkingSessionService.calculatePayment(parkingSessionId);
     62    }
     63    @PutMapping("/parkingSession/pay/{parkingSessionId}")
     64    public boolean payParkingSession(@PathVariable int parkingSessionId,@RequestParam String expireDate){
     65        return this.parkingSessionService.payParkingSession(parkingSessionId,expireDate);
    4566    }
    4667
  • sources/app/src/main/java/parkup/controllers/ParkingSpaceController.java

    r8588fcb r9ff45d6  
    3333    }
    3434
    35     @PostMapping({"/parkingSpace"})
    36     public Optional<ParkingSpace> addParkingSpace(@RequestBody ParkingSpace parkingSpace) {
    37 <<<<<<< HEAD
    38         System.out.println("???????");
    39 =======
    40         //System.out.println("???????");
    41 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    42         return this.parkingSpaceService.addParkingSpace(parkingSpace);
     35    @PostMapping({"/parkingSpace/add/{parkingZoneId}"})
     36    public Optional<ParkingSpace> addParkingSpace(@RequestBody ParkingSpace parkingSpace,@PathVariable int parkingZoneId) {
     37        return this.parkingSpaceService.addParkingSpace(parkingSpace,parkingZoneId);
    4338    }
    4439
    4540    @PutMapping({"/parkingSpace/{parkingSpaceId}"})
    4641    public void updateParkingSpace(@PathVariable int parkingSpaceId, @RequestBody ParkingSpace parkingSpace) {
    47         parkingSpaceService.updateParkingSpace(parkingSpaceId, parkingSpace.getPsName(), parkingSpace.isTaken(),
    48                 parkingSpace.isHandicaped(), parkingSpace.getLat(), parkingSpace.getLng());
     42        parkingSpaceService.updateParkingSpace(parkingSpaceId, parkingSpace.getPsName(), parkingSpace.isTaken(), parkingSpace.getLat(), parkingSpace.getLng());
    4943    }
    5044
  • sources/app/src/main/java/parkup/controllers/ParkingZoneController.java

    r8588fcb r9ff45d6  
    33import org.springframework.beans.factory.annotation.Autowired;
    44import org.springframework.web.bind.annotation.*;
     5import parkup.data.ParkingZoneAdminView;
    56import parkup.entities.ParkingZone;
    67import parkup.services.ParkingZoneService;
     
    4950
    5051    @PutMapping({"/parkingZone/{parkingZoneId}"})
    51     public ParkingZone updateParkingZone(@PathVariable int parkingZoneId, @RequestBody ParkingZone parkingZone) {
    52         return this.parkingZoneService.updateParkingZone(parkingZoneId, parkingZone.getPzName(), parkingZone.getPrice(), parkingZone.getCapacity(),
    53                 parkingZone.getLocation(), parkingZone.getFrom(), parkingZone.getTo(), parkingZone.getColor(),
    54 <<<<<<< HEAD
     52    public ParkingZone updateParkingZone(@PathVariable int parkingZoneId, @RequestBody ParkingZoneAdminView parkingZone) {
     53        return this.parkingZoneService.updateParkingZone(parkingZoneId, parkingZone.getPzName(), parkingZone.getPrice(),
     54                parkingZone.getAddress(), parkingZone.getTime_from(), parkingZone.getTime_to(), parkingZone.getColor(),
    5555                parkingZone.getParkingSpaces(), parkingZone.getParkingZoneLocation(),parkingZone.getOdgovorniLica());
    56 =======
    57                 parkingZone.getParkingSpaces(), parkingZone.getParkingZoneLocation());
    58 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
     56
    5957    }
    6058
  • sources/app/src/main/java/parkup/controllers/VrabotenController.java

    r8588fcb r9ff45d6  
    33import java.util.List;
    44import java.util.Optional;
     5import java.util.stream.Collectors;
    56
    67import org.springframework.beans.factory.annotation.Autowired;
    78import org.springframework.web.bind.annotation.*;
    89import parkup.configs.RegistrationRequest;
    9 import parkup.configs.RegistrationServiceW;
     10//import parkup.configs.RegistrationServiceW;
     11import parkup.data.AddUpdateVraboten;
     12import parkup.data.enumarations.EmployeeStatus;
    1013import parkup.entities.Vraboten;
    1114import parkup.services.VrabotenService;
     
    1518public class VrabotenController {
    1619    private final VrabotenService vrabotenService;
    17     private final RegistrationServiceW registrationServiceW;
     20//    private final RegistrationServiceW registrationServiceW;
    1821
    1922    @Autowired
    20     public VrabotenController(VrabotenService vrabotenService, RegistrationServiceW registrationServiceW) {
     23    public VrabotenController(VrabotenService vrabotenService) {
    2124        this.vrabotenService = vrabotenService;
    22         this.registrationServiceW = registrationServiceW;
    2325    }
    2426
     
    4446
    4547    @PostMapping({"/vraboten"})
    46     public Optional<Vraboten> addVraboten(@RequestBody Vraboten vraboten) {
    47         return this.vrabotenService.addVraboten(vraboten);
     48    public Optional<Vraboten> addVraboten(@RequestBody AddUpdateVraboten vraboten) {
     49        return this.vrabotenService.addVraboten(vraboten.getPassword(), vraboten.getConfirmPass(), vraboten.isLocked(),vraboten.getFirstName(), vraboten.getLastName(),
     50                vraboten.getMobileNumber(), vraboten.getEmail(), vraboten.getStatus(),vraboten.getParkingZones());
    4851    }
    4952
    50     @PostMapping({"/vraboten/{vrabotenId}"})
     53    @PutMapping({"/vraboten/lock/{vrabotenId}"})
    5154    public void lockVraboten(@PathVariable int vrabotenId) {
    5255        this.vrabotenService.lockVrabotenAcc(vrabotenId);
    5356    }
    5457
     58//    @PostMapping({"/vraboten/setStatus/{vrabotenId}"})
     59//    public void setVrabotenStatus(@PathVariable int vrabotenId,@RequestParam String vrabotenStatus){
     60//        this.vrabotenService.setVrabotenStatus(vrabotenId,vrabotenStatus);
     61//    }
     62
    5563    @PutMapping({"/vraboten/{vrabotenId}"})
    56     public Vraboten updateVraboten(@PathVariable int vrabotenId, @RequestBody Vraboten vraboten) {
    57         return this.vrabotenService.updateVraboten(vrabotenId, vraboten.getFirstName(), vraboten.getLastName(),
    58                 vraboten.getMobile(), vraboten.getEmail(), vraboten.getStatus());
     64    public Vraboten updateVraboten(@PathVariable int vrabotenId, @RequestBody AddUpdateVraboten vraboten) {
     65        return this.vrabotenService.updateVraboten(vrabotenId,vraboten.getPassword(), vraboten.getConfirmPass(), vraboten.isLocked(),vraboten.getFirstName(), vraboten.getLastName(),
     66                vraboten.getMobileNumber(), vraboten.getEmail(), vraboten.getStatus(),vraboten.getParkingZones());
    5967    }
    6068
     
    6472    }
    6573
    66     @PostMapping({"/vraboten/registration"})
    67     public String register(@RequestBody RegistrationRequest request){
    68         return registrationServiceW.register(request);
    69     }
    70 
    71     @GetMapping(path = "/vraboten/registration/confirm")
    72     public String confirm(@RequestParam("token") String token) {
    73         return registrationServiceW.confirmToken(token);
    74     }
     74//    @PostMapping({"/vraboten/registration"})
     75//    public String register(@RequestBody RegistrationRequest request){
     76//        return registrationServiceW.register(request);
     77//    }
     78//
     79//    @GetMapping(path = "/vraboten/registration/confirm")
     80//    public String confirm(@RequestParam("token") String token) {
     81//        return registrationServiceW.confirmToken(token);
     82//    }
    7583}
  • sources/app/src/main/java/parkup/data/ParkingZoneLocation.java

    r8588fcb r9ff45d6  
    2020    private int parkingZoneLocationId;
    2121
    22     @OneToOne
     22    @OneToOne(cascade = {CascadeType.ALL})
    2323    private Location centre;
    2424
    25     @OneToMany
     25    @OneToMany(cascade = {CascadeType.ALL})
    2626    private List<Location> teminja;
    2727
  • sources/app/src/main/java/parkup/data/VrabotenDemo.java

    r8588fcb r9ff45d6  
    22
    33public class VrabotenDemo {
    4 
     4    private int vrabotenId;
    55    private String firstName;
    66    private String lastName;
     
    99    public VrabotenDemo() {}
    1010
    11     public VrabotenDemo(String firstName, String lastName, String email) {
     11    public VrabotenDemo(int id,String firstName, String lastName, String email) {
     12        this.vrabotenId=id;
    1213        this.firstName = firstName;
    1314        this.lastName = lastName;
    1415        this.email = email;
     16    }
     17
     18    public int getVrabotenId() {
     19        return vrabotenId;
     20    }
     21
     22    public void setVrabotenId(int vrabotenId) {
     23        this.vrabotenId = vrabotenId;
    1524    }
    1625
  • sources/app/src/main/java/parkup/entities/Guest.java

    r8588fcb r9ff45d6  
    3232    @Column(name = "mobile")
    3333    private String mobile;
     34
     35    @OneToOne
     36    private ParkingSession session;
    3437
    3538    public Guest() {}
  • sources/app/src/main/java/parkup/entities/ParkingSession.java

    r8588fcb r9ff45d6  
    11package parkup.entities;
    22
     3import org.springframework.format.annotation.DateTimeFormat;
    34import parkup.data.Tablicka;
     5import parkup.data.enumarations.SessionStatus;
    46
    57import javax.persistence.*;
     8import java.time.LocalDateTime;
    69
    710@Entity
     
    2225    private int pssId;
    2326
     27    @DateTimeFormat(pattern = "yyyy-MM-dd-HH-mm-ss")
    2428    @Column(name = "time_start")
    25     private String timeStart;
     29    private LocalDateTime timeStart;
    2630
     31    @DateTimeFormat(pattern = "yyyy-MM-dd-HH-mm-ss")
    2732    @Column(name = "time_end")
    28     private String timeEnd;
     33    private LocalDateTime timeEnd;
    2934
    3035    @OneToOne(cascade = {CascadeType.ALL})
     
    3237    private Tablicka tablica;
    3338
    34     public ParkingSession() {}
     39    @Column(name="session_status")
     40    @Enumerated
     41    private SessionStatus status;
    3542
    36     public ParkingSession(int pssId, String timeStart, String timeEnd, Tablicka tablica) {
    37         this.pssId = pssId;
    38         this.timeStart = timeStart;
    39         this.timeEnd = timeEnd;
    40         this.tablica = tablica;
     43    @ManyToOne
     44    private ParkingSpace parkingSpace;
     45
     46    @ManyToOne
     47    private ParkingZone parkingZone;
     48
     49
     50//    public ParkingSpace getParkingSpace() {
     51//        return parkingSpace;
     52//    }
     53//
     54//    public void setParkingSpace(ParkingSpace parkingSpace) {
     55//        this.parkingSpace = parkingSpace;
     56//    }
     57
     58    public ParkingSession() {
     59
    4160    }
    4261
    43     public ParkingSession(String timeStart, String timeEnd, Tablicka tablica) {
    44         this.timeStart = timeStart;
    45         this.timeEnd = timeEnd;
    46         this.tablica = tablica;
     62    public ParkingSession(Tablicka tablica){
     63        this.timeStart= LocalDateTime.now();
     64        this.timeEnd=null;
     65        this.tablica=tablica;
     66        this.status=SessionStatus.STARTED_UNVERIFIED;
    4767    }
     68
    4869
    4970    public int getPssId() {
     
    5576    }
    5677
    57     public String getTimeStart() {
    58         return this.timeStart;
     78    public LocalDateTime getTimeStart() {
     79        return timeStart;
    5980    }
    6081
    61     public void setTimeStart(String timeStart) {
     82    public void setTimeStart(LocalDateTime timeStart) {
    6283        this.timeStart = timeStart;
    6384    }
    6485
    65     public String getTimeEnd() {
    66         return this.timeEnd;
     86    public LocalDateTime getTimeEnd() {
     87        return timeEnd;
    6788    }
    6889
    69     public void setTimeEnd(String timeEnd) {
     90    public void setTimeEnd(LocalDateTime timeEnd) {
    7091        this.timeEnd = timeEnd;
    7192    }
     
    7899        this.tablica = tablica;
    79100    }
     101
     102    public SessionStatus getStatus() {
     103        return status;
     104    }
     105
     106    public void setStatus(SessionStatus status) {
     107        this.status = status;
     108    }
     109
     110    public ParkingSpace getParkingSpace() {
     111        return parkingSpace;
     112    }
     113
     114    public ParkingZone getParkingZone() {
     115        return parkingZone;
     116    }
     117
     118    public void setParkingSpace(ParkingSpace parkingSpace) {
     119        this.parkingSpace = parkingSpace;
     120    }
     121
     122    public void setParkingZone(ParkingZone parkingZone) {
     123        this.parkingZone = parkingZone;
     124    }
    80125}
  • sources/app/src/main/java/parkup/entities/ParkingSpace.java

    r8588fcb r9ff45d6  
    22
    33import javax.persistence.*;
     4import java.util.ArrayList;
     5import java.util.List;
    46
    57@Entity
     
    2426
    2527    @Column(name = "isTaken")
    26     private Boolean isTaken;
    27 
    28     @Column(name = "isHandicaped")
    29     private Boolean isHandicaped;
     28    private boolean taken;
    3029
    3130    @Column(name = "latitude")
    3231    private float lat;
    33 <<<<<<< HEAD
     32
    3433
    3534    @Column(name = "longitude")
     
    3938//    @JoinColumn(name = "parking_zona")
    4039//    private ParkingZone parkingZone;
     40//    @ManyToOne(cascade = {CascadeType.ALL})
     41//    @JoinColumn(name = "parking_zona")
     42//    private ParkingZone parkingZone;
     43//
     44//    @OneToMany
     45//    @Column(name="parking_sessions")
     46//    private List<ParkingSession> sessions;
    4147
    4248    public ParkingSpace() {
    43         System.out.println("Default ParkingSpace constructor" + lat);
     49
    4450    }
    4551
    46 =======
    47 
    48     @Column(name = "longitude")
    49     private float lng;
    50 
    51     @OneToOne(cascade = {CascadeType.ALL})
    52     @JoinColumn(name = "parking_zona")
    53     private ParkingZone parkingZone;
    54 
    55     public ParkingSpace() {}
    56 
    57 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    58     public ParkingSpace(int psId, String psName, boolean isTaken, boolean isHandicaped, float lat, float lng) {
     52    public ParkingSpace(int psId, String psName, boolean isTaken,  float lat, float lng) {
    5953        this.psId = psId;
    6054        this.psName = psName;
    61         this.isTaken = isTaken;
    62         this.isHandicaped = isHandicaped;
     55        this.taken = isTaken;
    6356        this.lat = lat;
    6457        this.lng = lng;
    6558    }
    6659
    67     public ParkingSpace(String psName, boolean isTaken, boolean isHandicaped, float lat, float lng) {
     60    public ParkingSpace(String psName, float lat, float lng) {
    6861        this.psName = psName;
    69         this.isTaken = isTaken;
    70         this.isHandicaped = isHandicaped;
     62        this.taken = false;
    7163        this.lat = lat;
    7264        this.lng = lng;
     
    7668        return this.psId;
    7769    }
     70
     71//    public ParkingZone getParkingZone() {
     72//        return parkingZone;
     73//    }
     74//
     75//    public void setParkingZone(ParkingZone parkingZone) {
     76//        this.parkingZone = parkingZone;
     77//    }
     78
    7879
    7980    public void setPsId(int psId) {
     
    9091
    9192    public boolean isTaken() {
    92         return this.isTaken;
     93        return this.taken;
    9394    }
    9495
    9596    public void setTaken(boolean isTaken) {
    96         this.isTaken = isTaken;
    97     }
    98 
    99     public boolean isHandicaped() {
    100         return this.isHandicaped;
    101     }
    102 
    103     public void setHandicaped(boolean isHandicaped) {
    104         this.isHandicaped = isHandicaped;
     97        this.taken = isTaken;
    10598    }
    10699
     
    120113        this.lng = lng;
    121114    }
    122 <<<<<<< HEAD
     115
    123116
    124117    @Override
     
    126119        return "ParkingSpace{" +
    127120                "psName='" + psName + '\'' +
    128                 ", isTaken=" + isTaken +
    129                 ", isHandicaped=" + isHandicaped +
     121                ", isTaken=" + taken +
    130122                ", lat=" + lat +
    131123                ", lng=" + lng+
    132124                '}';
    133125    }
    134 =======
    135 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    136126}
    137127
  • sources/app/src/main/java/parkup/entities/ParkingZone.java

    r8588fcb r9ff45d6  
    3030    private int price;
    3131
     32    @Transient
    3233    @Column(name = "capacity")
    3334    private int capacity;
    34 
    35 <<<<<<< HEAD
    3635    @Column(name = "time_from")  //za rabotni casovi od:
    3736    private int from;
    3837
    3938    @Column(name = "time_to")    //za rabotni casovi do:
    40 =======
    41     @Column(name = "vreme_od")  //za rabotni casovi od:
    42     private int from;
    43 
    44     @Column(name = "vreme_do")    //za rabotni casovi do:
    45 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    4639    private int to;
    4740
    48     @Column(name = "lokacija")
    49     private String location;
     41    @Column(name = "address")
     42    private String address;
    5043
     44    @Transient
    5145    @Column(name = "zafateniMesta")
    52     private int zafateniMesta;
     46    private int takenSpaces;
    5347
    5448    @Column(name = "color")
    5549    private String color;
    5650
    57     @ManyToMany(cascade = {CascadeType.ALL})
    58     @JoinColumn(name="odgovorniLica",nullable = true)
    59     private List<Vraboten> odgovorniLica;
     51//    @ManyToMany(cascade = {CascadeType.ALL})
     52//    private List<Vraboten> odgovorniLica;
    6053
    61     @OneToMany(cascade = {CascadeType.ALL})
     54    @OneToMany(cascade = {CascadeType.MERGE})
    6255    private List<ParkingSpace> parkingSpaces;
     56
     57
    6358
    6459    @OneToOne(cascade = {CascadeType.ALL})
     
    6661
    6762   public ParkingZone() {
    68        this.zafateniMesta = 0;
     63       this.takenSpaces = 0;
    6964       this.parkingSpaces = new ArrayList<ParkingSpace>();
    7065   }
     
    7267    public ParkingZone(String pzName) {
    7368        this.pzName = pzName;
    74         this.zafateniMesta = 0;
     69        this.takenSpaces = 0;
    7570        this.parkingSpaces = new ArrayList<ParkingSpace>();
    7671    }
    7772
    78     public ParkingZone(int pzId, String pzName, int price, int capacity, String location, List<ParkingSpace> parkingSpaces, String color, int from, int to) {
     73    public ParkingZone(int pzId, String pzName, int price, int capacity, String address, List<ParkingSpace> parkingSpaces, String color, int from, int to) {
    7974        this.pzId = pzId;
    8075        this.pzName = pzName;
    8176        this.price = price;
    8277        this.capacity = capacity;
    83         this.location = location;
    84         this.zafateniMesta = 0;
     78        this.address = address;
     79        this.takenSpaces = 0;
    8580        this.parkingSpaces = parkingSpaces;
    8681        this.color = color;
     
    8984    }
    9085
    91     public ParkingZone(String pzName, int price, int capacity, String location, List<ParkingSpace> parkingSpaces, String color, int from, int to) {
     86    public ParkingZone(String pzName, int price, int capacity, String address, List<ParkingSpace> parkingSpaces, String color, int from, int to) {
    9287        this.pzName = pzName;
    9388        this.price = price;
    9489        this.capacity = capacity;
    95         this.location = location;
    96         this.zafateniMesta = 0;
     90        this.address = address;
     91        this.takenSpaces = 0;
    9792        this.parkingSpaces = parkingSpaces;
    9893        this.color = color;
     
    133128    }
    134129
    135     public String getLocation() {
    136         return this.location;
     130    public String getAddress() {
     131        return this.address;
    137132    }
    138133
    139     public void setLocation(String location) {
    140         this.location = location;
     134    public void setAddress(String location) {
     135        this.address = location;
    141136    }
    142137
    143     public int getZafateniMesta() {return zafateniMesta;}
     138    public int getTakenSpaces() {return takenSpaces;}
    144139
    145     public void setZafateniMesta(int zafateniMesta) {this.zafateniMesta = zafateniMesta;}
     140    public void setTakenSpaces(int takenSpaces) {this.takenSpaces = takenSpaces;}
    146141
    147142    public List<ParkingSpace> getParkingSpaces() {return parkingSpaces;}
     
    181176    }
    182177
    183     public List<Vraboten> getOdgovorniLica() {
    184         return odgovorniLica;
    185     }
    186 
    187     public void setOdgovorniLica(List<Vraboten> odgovorniLica) {
    188         this.odgovorniLica = odgovorniLica;
    189     }
     178    //    public List<Vraboten> getOdgovorniLica() {
     179//        return odgovorniLica;
     180//    }
     181//
     182//    public void setOdgovorniLica(List<Vraboten> odgovorniLica) {
     183//        this.odgovorniLica = odgovorniLica;
     184//    }
    190185}
  • sources/app/src/main/java/parkup/entities/RegistriranParkirac.java

    r8588fcb r9ff45d6  
    5151    private String role;
    5252
     53    @OneToOne
     54    private ParkingSession session;
     55
    5356    private boolean locked;
    5457
     
    5861        this.regTablicki = new ArrayList<Tablicka>();
    5962        this.role = "ROLE_REGISTRIRAN_PARKIRAC";
     63        session=null;
    6064    }
    6165
     
    6973        this.mobile = mobile;
    7074        this.role = "ROLE_REGISTRIRAN_PARKIRAC";
     75        session=null;
    7176    }
    7277
     
    7984        this.mobile = mobile;
    8085        this.role = "ROLE_REGISTRIRAN_PARKIRAC";
     86        session=null;
    8187    }
    8288
     
    8894        this.mobile = mobile;
    8995        this.role = "ROLE_REGISTRIRAN_PARKIRAC";
    90     }
     96        session=null;
     97    }
     98
     99    public ParkingSession getSession() {
     100        return session;
     101    }
     102
     103    public void setSession(ParkingSession session) {
     104        this.session = session;
     105    }
     106
     107    public boolean isLocked() {
     108        return locked;
     109    }
     110
     111    public void setLocked(boolean locked) {
     112        this.locked = locked;
     113    }
     114
     115    public void setEnabled(boolean enabled) {
     116        this.enabled = enabled;
     117    }
     118
    91119
    92120    public int getRegParkId() {
  • sources/app/src/main/java/parkup/entities/Vraboten.java

    r8588fcb r9ff45d6  
    44import org.springframework.security.core.userdetails.UserDetails;
    55import parkup.data.VrabotenDemo;
     6import parkup.data.enumarations.EmployeeStatus;
    67
    78import javax.persistence.*;
     
    5758
    5859    @ManyToMany(cascade = {CascadeType.ALL})
    59     @JoinColumn(name = "zona", nullable = false)
    6060    private List<ParkingZone> parkingZones;
    6161
    6262    @Column(name = "status")
    63     private String status;
     63    private EmployeeStatus status;
     64
     65    public void setLocked(boolean locked) {
     66        this.locked = locked;
     67    }
    6468
    6569    @Column(name="locked")
     
    7377        this.role = "ROLE_VRABOTEN";
    7478        this.parkingZones = new ArrayList<ParkingZone>();
    75         this.enabled = false;
    76         this.status = "neRaboti";
     79        this.enabled = true;
     80        this.status = EmployeeStatus.NOT_WORKING;
    7781    }
    7882
     
    8690        this.parkingZones = parkingZones;
    8791        this.role = "ROLE_VRABOTEN";
    88         this.enabled = false;
    89         this.status = "neRaboti";
     92        this.enabled = true;
     93        this.status = EmployeeStatus.NOT_WORKING;
    9094    }
    9195
     
    98102        this.parkingZones = parkingZones;
    99103        this.role = "ROLE_VRABOTEN";
    100         this.enabled = false;
    101         this.status = "neRaboti";
     104        this.enabled = true;
     105        this.status = EmployeeStatus.NOT_WORKING;
    102106    }
    103107
     
    109113        this.mobile=mobile;
    110114        this.parkingZones=new ArrayList<>();
    111         this.enabled=false;
    112         this.status="neRaboti";
    113115        this.role="ROLE_VRABOTEN";
     116        this.enabled=true;
     117        this.status = EmployeeStatus.NOT_WORKING;
    114118    }
    115119
     
    204208    public void setParkingZones(List<ParkingZone> parkingZones) {this.parkingZones = parkingZones;}
    205209
    206     public String getStatus() {return status;}
    207 
    208     public void setStatus(String status) {this.status = status;}
     210    public EmployeeStatus getStatus() {return status;}
     211
     212    public void setStatus(EmployeeStatus status) {this.status = status;}
    209213
    210214    public boolean isAccount() {return enabled;}
  • sources/app/src/main/java/parkup/repositories/ParkingSessionRepository.java

    r8588fcb r9ff45d6  
    44import parkup.entities.ParkingSession;
    55
     6import java.util.List;
     7
    68public interface ParkingSessionRepository extends JpaRepository<ParkingSession, Integer> {
    79
    810    ParkingSession findByPssId(int parkingSessionId);
    9 
     11    List<ParkingSession> findByParkingZonePzName(String pzName);
    1012    void deleteByPssId(int parkingSessionId);
    1113}
  • sources/app/src/main/java/parkup/repositories/ParkingSpaceRepository.java

    r8588fcb r9ff45d6  
    44import parkup.entities.ParkingSpace;
    55
     6import java.util.List;
     7
    68public interface ParkingSpaceRepository extends JpaRepository<ParkingSpace, Integer> {
    79    ParkingSpace findByPsName(String psName);
    8 
    910    ParkingSpace findByPsId(int parkingSpaceId);
    10 
    1111    void deleteByPsId(int parkingSpaceId);
    1212}
  • sources/app/src/main/java/parkup/repositories/ParkingZoneRepository.java

    r8588fcb r9ff45d6  
    33import org.springframework.data.jpa.repository.JpaRepository;
    44import org.springframework.stereotype.Repository;
     5import parkup.entities.ParkingSpace;
    56import parkup.entities.ParkingZone;
     7
     8import java.util.List;
    69
    710@Repository
     
    1013
    1114    ParkingZone findByPzName(String name);
    12 
    1315    void deleteByPzId(int id);
    1416}
  • sources/app/src/main/java/parkup/services/AdministratorService.java

    r8588fcb r9ff45d6  
    137137
    138138        String token = UUID.randomUUID().toString();
    139 <<<<<<< HEAD
    140 //        ConfirmationTokenRP confirmationToken = new ConfirmationTokenRP(
    141 //                token,
    142 //                LocalDateTime.now(),
    143 //                LocalDateTime.now().plusMinutes(15),
    144 //                administrator
    145 //        );
    146 =======
    147         //ConfirmationTokenRP confirmationToken = new ConfirmationTokenRP(
    148         //        token,
    149         //        LocalDateTime.now(),
    150         //        LocalDateTime.now().plusMinutes(15),
    151         //        administrator
    152         //);
    153 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    154139
    155         //confirmationTokenService.saveConfirmationToken(confirmationToken);
    156140
    157141        // TODO: SEND EMAIL
  • sources/app/src/main/java/parkup/services/ParkingSessionService.java

    r8588fcb r9ff45d6  
    44import org.springframework.stereotype.Service;
    55import parkup.data.Tablicka;
     6import parkup.data.enumarations.SessionStatus;
    67import parkup.entities.ParkingSession;
     8import parkup.entities.ParkingSpace;
     9import parkup.entities.ParkingZone;
    710import parkup.repositories.ParkingSessionRepository;
     11import parkup.repositories.ParkingSpaceRepository;
     12import parkup.repositories.ParkingZoneRepository;
     13import parkup.repositories.TablickaRepository;
    814
    915import javax.transaction.Transactional;
     16import java.time.Duration;
     17import java.time.LocalDateTime;
    1018import java.util.List;
    11 import java.util.Objects;
    1219import java.util.Optional;
     20import java.util.stream.Collectors;
    1321
    1422@Service
    1523public class ParkingSessionService {
    1624    private final ParkingSessionRepository parkingSessionRepository;
     25    private final ParkingZoneRepository parkingZoneRepository;
     26    private final ParkingSpaceRepository parkingSpaceRepository;
     27    private final TablickaRepository tablickaRepository;
    1728
    1829    @Autowired
    19     public ParkingSessionService(ParkingSessionRepository parkingSessionRepository) {
     30    public ParkingSessionService(ParkingSessionRepository parkingSessionRepository, ParkingZoneRepository parkingZoneRepository, ParkingSpaceRepository parkingSpaceRepository, TablickaRepository tablickaRepository) {
    2031        this.parkingSessionRepository = parkingSessionRepository;
     32        this.parkingZoneRepository = parkingZoneRepository;
     33        this.parkingSpaceRepository = parkingSpaceRepository;
     34        this.tablickaRepository = tablickaRepository;
    2135    }
    2236
     37    //TODO add getMethod for paid sessions or all sessions
     38
    2339    public List<ParkingSession> getAllParkingSessions() {
    24         return parkingSessionRepository.findAll();
     40        //Get all sessions that arent paid
     41        return parkingSessionRepository.findAll().stream()
     42                .filter(s->!s.getStatus().equals(SessionStatus.ENDED_PAID))
     43                .collect(Collectors.toList());
    2544    }
    2645
     
    3049    }
    3150
    32     @Transactional
     51   /* @Transactional
    3352    public void updateParkingSession(int parkingSessionId, String timeStart, String timeEnd, Tablicka tablicka) {
    3453        Optional<ParkingSession> parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSessionId));
     
    4867            throw new IllegalStateException("The ParkingSession does not exist");
    4968        }
    50     }
    51 
     69    }*/
     70    @Transactional
    5271    public Optional<ParkingSession> deleteParkingSession(int parkingSessionId) {
    5372        Optional<ParkingSession> parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSessionId));
    5473        if (parkingSessionOpt.isPresent()) {
     74            parkingSessionOpt.get().getParkingSpace().setTaken(false);
    5575            parkingSessionRepository.deleteByPssId(parkingSessionId);
    5676            return parkingSessionOpt;
     
    6080    }
    6181
    62     public Optional<ParkingSession> addParkingSession(ParkingSession parkingSession) {
    63         Optional<ParkingSession> parkingSessionOpt = Optional.ofNullable(parkingSessionRepository.findByPssId(parkingSession.getPssId()));
    64         if (parkingSessionOpt.isPresent()) {
    65             throw new IllegalStateException("ID already taken, ParkingSession cannot be added");
    66         } else {
    67             System.out.println(parkingSession);
    68             parkingSessionRepository.save(parkingSession);
    69             return parkingSessionOpt;
     82    @Transactional
     83    public Optional<ParkingSession> startParkingSession(String tablica, int parkingZoneId) {
     84        ParkingZone parkingZone = parkingZoneRepository.findByPzId(parkingZoneId);
     85        Tablicka tablicka = tablickaRepository.findByTablica(tablica);
     86        if(tablicka==null) {
     87            tablickaRepository.save(new Tablicka(tablica));
    7088        }
     89        tablicka=tablickaRepository.findByTablica(tablica);
     90        ParkingSession sessionToAdd = new ParkingSession(tablicka);
     91        sessionToAdd.setParkingZone(parkingZone);
     92        parkingSessionRepository.save(sessionToAdd);
     93        return Optional.of(sessionToAdd);
     94
     95    }
     96
     97//    public void executePayment(int id){
     98//        ParkingSession session = parkingSessionRepository.findByPssId(id);
     99//        if(session==null){
     100//            throw new IllegalStateException("No such session exists");
     101//        }
     102//        else if(session.getStatus()== SessionStatus.ENDED_UNPAID){
     103//            throw new IllegalStateException("Cannot execute payment on an ended session");
     104//        }
     105//        session.setStatus(SessionStatus.ENDED_PAID);
     106//    }
     107
     108    public int calculatePayment(int id){
     109        ParkingSession session = parkingSessionRepository.findByPssId(id);
     110        if(session==null){
     111            throw new IllegalStateException("No such session exists");
     112        }
     113        else if(session.getStatus()== SessionStatus.ENDED_UNPAID){
     114            throw new IllegalStateException("Cannot calculate payment on an ended session");
     115        }
     116        int price = session.getParkingZone().getPrice();
     117        return (int) (Math.ceil(Duration.between(session.getTimeEnd(),session.getTimeStart()).toMinutes()/60.0)*price);
     118    }
     119    @Transactional
     120    public ParkingSession verifyParkingSession(int id,String parkingSpaceName,int parkingZoneId){
     121        ParkingSession parkingSession = parkingSessionRepository.findByPssId(id);
     122        ParkingZone parkingZone = parkingZoneRepository.findByPzId(parkingZoneId);
     123        if(parkingSession==null){
     124            throw new IllegalStateException("No such session exists");
     125        }
     126        else if(parkingSession.getStatus()==SessionStatus.STARTED_VERIFIED){
     127            throw new IllegalStateException("The session you are trying to verify has already been verified");
     128        }
     129//        else if(parkingSession.getStatus()!=SessionStatus.STARTED_)
     130        if(!parkingZone.getParkingSpaces().contains(parkingSpaceRepository.findByPsName(parkingSpaceName))){
     131            throw new IllegalStateException("Ivalid parking space inserted. Type in a new parking space or let the admin know that they should add the parking space to this zone");
     132        }
     133        parkingSession.setStatus(SessionStatus.STARTED_VERIFIED);
     134        ParkingSpace parkingSpace = parkingZoneRepository.findByPzId(parkingZoneId).getParkingSpaces().stream().filter(ps->ps.getPsName().equals(parkingSpaceName)).findFirst().get();
     135        parkingSpace.setTaken(true);
     136        parkingSession.setParkingSpace(parkingSpace);
     137        return parkingSession;
     138    }
     139    @Transactional
     140    public ParkingSession endParkingSession(int id){
     141        ParkingSession parkingSession = parkingSessionRepository.findByPssId(id);
     142        if(parkingSession==null){
     143            throw new IllegalStateException("No such session exists");
     144        }
     145        else if(parkingSession.getStatus()==SessionStatus.ENDED_UNPAID){
     146            throw new IllegalStateException("The session you are trying to end has already been ended");
     147        }
     148        parkingSession.setStatus(SessionStatus.ENDED_UNPAID);
     149        parkingSession.setTimeEnd(LocalDateTime.now());
     150        return parkingSession;
     151    }
     152    @Transactional
     153    public boolean payParkingSession(int id,String date){
     154        ParkingSession parkingSession = parkingSessionRepository.findByPssId(id);
     155        String expMonthString=date.split("/")[0];
     156        String expYearString=date.split("/")[1];
     157        if(expMonthString.startsWith("0"))
     158            expMonthString=expYearString.substring(1);
     159        if(expYearString.startsWith("0"))
     160            expYearString=expYearString.substring(1);
     161        int expMonth=Integer.parseInt(expMonthString);
     162        int expYear=Integer.parseInt(expYearString);
     163        int month = LocalDateTime.now().getMonth().getValue();
     164        int year = LocalDateTime.now().getYear()%100;
     165        if(year>expYear){
     166            throw new IllegalStateException("Your card has expired or the date that you have entered is incorrect");
     167        }
     168        else if(year==expYear){
     169            if(month>=expMonth)
     170                throw new IllegalStateException("Your card has expired or the date that you have entered is incorrect");
     171        }
     172        if(parkingSession==null){
     173            throw new IllegalStateException("No such session exists");
     174        }
     175        else if(parkingSession.getStatus()==SessionStatus.ENDED_PAID){
     176            throw new IllegalStateException("The session has already been paid for");
     177        }
     178        parkingSession.setStatus(SessionStatus.ENDED_PAID);
     179        parkingSession.getParkingSpace().setTaken(false);
     180        return true;
    71181    }
    72182}
  • sources/app/src/main/java/parkup/services/ParkingSpaceService.java

    r8588fcb r9ff45d6  
    55import parkup.entities.ParkingSpace;
    66import parkup.repositories.ParkingSpaceRepository;
     7import parkup.repositories.ParkingZoneRepository;
    78
    89import javax.transaction.Transactional;
     
    1011import java.util.Objects;
    1112import java.util.Optional;
     13import java.util.stream.Collectors;
    1214
    1315@Service
    1416public class ParkingSpaceService {
    1517    private final ParkingSpaceRepository parkingSpaceRepository;
     18    private final ParkingZoneRepository parkingZoneRepository;
    1619
    1720    @Autowired
    18     public ParkingSpaceService(ParkingSpaceRepository parkingSpaceRepository) {
     21    public ParkingSpaceService(ParkingSpaceRepository parkingSpaceRepository, ParkingZoneRepository parkingZoneRepository) {
    1922        this.parkingSpaceRepository = parkingSpaceRepository;
     23        this.parkingZoneRepository = parkingZoneRepository;
    2024    }
    2125
     
    2933    }
    3034
    31     public Optional<ParkingSpace> addParkingSpace(ParkingSpace parkingSpace) {
    32         Optional<ParkingSpace> parkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsName(parkingSpace.getPsName()));
    33         if (parkingSpaceOpt.isPresent()) {
    34             throw new IllegalStateException("Name already taken, try adding a ParkingZone with a different name");
     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");
    3539        } else {
    3640            System.out.println(parkingSpace);
    3741            parkingSpaceRepository.save(parkingSpace);
    3842        }
    39         return parkingSpaceOpt;
     43        return Optional.of(parkingSpace);
    4044    }
    4145
    4246    @Transactional
    43     public ParkingSpace updateParkingSpace(int parkingSpaceId, String psName, boolean taken, boolean handicaped, float lat, float lng) {
     47    public ParkingSpace updateParkingSpace(int parkingSpaceId, String psName, boolean taken, float lat, float lng) {
    4448        Optional<ParkingSpace> ParkingSpaceOpt = Optional.ofNullable(parkingSpaceRepository.findByPsId(parkingSpaceId));
    4549        if (ParkingSpaceOpt.isPresent()) {
     
    5862            }
    5963
    60             if (!Objects.equals(ParkingSpaceNov.isHandicaped(), handicaped)) {
    61                 ParkingSpaceNov.setHandicaped(handicaped);
    62             }
    6364
    6465            if(lat!=0 && !Objects.equals(ParkingSpaceNov.getLat(), lat)){
     
    8586        return parkingSpaceOpt;
    8687    }
     88    public long getNumberOfTakenSpaces(){
     89        return parkingSpaceRepository.findAll().stream().filter(ParkingSpace::isTaken).count();
     90    }
    8791}
  • sources/app/src/main/java/parkup/services/ParkingZoneService.java

    r8588fcb r9ff45d6  
    22
    33import org.springframework.beans.factory.annotation.Autowired;
    4 import org.springframework.data.jpa.repository.Modifying;
    54import org.springframework.stereotype.Service;
    65import parkup.data.ParkingZoneLocation;
     6import parkup.entities.ParkingSession;
    77import parkup.entities.ParkingSpace;
    88import parkup.entities.ParkingZone;
    99import parkup.entities.Vraboten;
     10import parkup.repositories.ParkingSessionRepository;
     11import parkup.repositories.ParkingSpaceRepository;
    1012import parkup.repositories.ParkingZoneRepository;
     13import parkup.repositories.VrabotenRepository;
    1114
    1215import javax.transaction.Transactional;
     
    1922public class ParkingZoneService {
    2023    private final ParkingZoneRepository parkingZoneRepository;
     24    private final ParkingSpaceRepository parkingSpaceRepository;
     25    private final VrabotenRepository vrabotenRepository;
     26    private final ParkingSessionRepository parkingSessionRepository;
    2127
    2228    @Autowired
    23     public ParkingZoneService(ParkingZoneRepository parkingZoneRepository) {
     29    public ParkingZoneService(ParkingZoneRepository parkingZoneRepository, ParkingSpaceRepository parkingSpaceRepository, VrabotenRepository vrabotenRepository, ParkingSessionRepository parkingSessionRepository) {
    2430        this.parkingZoneRepository = parkingZoneRepository;
     31        this.parkingSpaceRepository = parkingSpaceRepository;
     32        this.parkingSessionRepository = parkingSessionRepository;
     33        this.vrabotenRepository = vrabotenRepository;
    2534    }
    2635
     
    3746        List<ParkingZone> parkingZones = this.parkingZoneRepository.findAll();
    3847        List<String> parkingZonesNames = new ArrayList<>();
    39         for (ParkingZone pz : parkingZones){
     48        for (ParkingZone pz : parkingZones) {
    4049            parkingZonesNames.add(pz.getPzName());
    4150        }
     
    6574    }
    6675
    67 <<<<<<< HEAD
    6876    //TODO proveri dali ima odgovorni i dokolku ima dali postojat vo bazata
    6977    @Transactional
    70     public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price, int capacity,
     78    public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price,
    7179                                         String location, int from, int to, String color,
    72                                          List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation, List<Vraboten> odgovorniLica) {
     80                                         List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation, List<Integer> odgovorniLica) {
    7381
    74         for(ParkingSpace space:parkingSpaces){
    75             System.out.println(space);
    76         }
    77         for(Vraboten v : odgovorniLica){
    78             System.out.println(v.toString());
    79         }
    80 =======
    81     //TODO prati niza od objekti ParkingSpaces i prati objekt ParkingZoneLocation
    82     @Transactional
    83     public ParkingZone updateParkingZone(int parkingZoneId, String pzName, int price, int capacity,
    84                                          String location, int from, int to, String color,
    85                                          List<ParkingSpace> parkingSpaces, ParkingZoneLocation parkingZoneLocation) {
    86 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    87         Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId));
    88         if (parkingZoneOpt.isPresent()) {
     82        //TODO prati niza od objekti ParkingSpaces i prati objekt ParkingZoneLocation
     83
    8984            ParkingZone parkingZoneNov = parkingZoneRepository.findByPzId(parkingZoneId);
    90             if (pzName != null && pzName.length() > 1 && !Objects.equals(parkingZoneNov.getPzName(), pzName)) {
    91                 Optional<ParkingZone> parkingZoneOpt1 = Optional.ofNullable(parkingZoneRepository.findByPzName(pzName));
    92                 if (parkingZoneOpt1.isPresent()) {
    93                     throw new IllegalStateException("There is already a ParkingZone with the same name");
     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);
    9492                }
    9593
    96                 parkingZoneNov.setPzName(pzName);
     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");
    97146            }
     147        }
    98148
    99             if (price != 0 && !Objects.equals(parkingZoneNov.getPrice(), price)) {
    100                 parkingZoneNov.setPrice(price);
     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");
    101157            }
    102 
    103             if (capacity != 0 && !Objects.equals(parkingZoneNov.getCapacity(), capacity)) {
    104                 parkingZoneNov.setCapacity(capacity);
    105             }
    106 
    107             if (location != null && location.length() > 0 && !Objects.equals(parkingZoneNov.getLocation(), location)) {
    108                 parkingZoneNov.setLocation(location);
    109             }
    110 
    111             if (from != 0 && !Objects.equals(parkingZoneNov.getFrom(), from)) {
    112                 parkingZoneNov.setFrom(from);
    113             }
    114 
    115             if (to != 0 && !Objects.equals(parkingZoneNov.getTo(), to)) {
    116                 parkingZoneNov.setTo(to);
    117             }
    118 
    119             if (color != null && color.length() > 0 && !Objects.equals(parkingZoneNov.getColor(), color)) {
    120                 parkingZoneNov.setColor(color);
    121             }
    122 
    123             if(parkingZoneLocation!=null){
    124                 parkingZoneNov.setParkingZoneLocation(parkingZoneLocation);
    125             }
    126 
    127             if(!parkingSpaces.isEmpty()){
    128                 //TODO kreiraj lista od parkingSpaces, ni gi prakja false isHandicaped i isTaken
    129                 parkingZoneNov.setParkingSpaces(parkingSpaces);
    130             }
    131 <<<<<<< HEAD
    132             if(!odgovorniLica.isEmpty()){
    133 
    134                 parkingZoneNov.setOdgovorniLica(odgovorniLica);
    135             }
    136 =======
    137 >>>>>>> 9504a097ce80831ea7e7130dff7215d5fbf8e939
    138 
    139             return parkingZoneNov;
    140         } else {
    141             throw new IllegalStateException("There ParkingZone does not exist");
     158            return parkingZoneOpt;
    142159        }
    143160    }
    144161
    145     @Transactional
    146     public Optional<ParkingZone> deleteParkingZone(int parkingZoneId) {
    147         Optional<ParkingZone> parkingZoneOpt = Optional.ofNullable(parkingZoneRepository.findByPzId(parkingZoneId));
    148         if (parkingZoneOpt.isPresent()) {
    149             parkingZoneRepository.deleteByPzId(parkingZoneId);
    150         } else {
    151             throw new IllegalStateException("ParkingZone doesn't exist, therefore can't be deleted");
    152         }
    153         return parkingZoneOpt;
    154     }
    155 }
  • sources/app/src/main/java/parkup/services/VrabotenService.java

    r8588fcb r9ff45d6  
    33import java.time.LocalDateTime;
    44import java.util.*;
     5import java.util.stream.Collectors;
    56import javax.transaction.Transactional;
    67import org.springframework.beans.factory.annotation.Autowired;
    7 import org.springframework.data.jpa.repository.Modifying;
    88import org.springframework.security.core.userdetails.UserDetails;
    99import org.springframework.security.core.userdetails.UserDetailsService;
     
    1313import parkup.configs.token.ConfirmationTokenW;
    1414import parkup.configs.token.ConfirmationTokenService;
     15import parkup.data.enumarations.EmployeeStatus;
     16import parkup.entities.ParkingZone;
    1517import parkup.entities.Vraboten;
     18import parkup.repositories.ParkingZoneRepository;
    1619import parkup.repositories.VrabotenRepository;
    1720import parkup.data.VrabotenDemo;
     
    2023public class VrabotenService implements UserDetailsService {
    2124    private final VrabotenRepository vrabotenRepository;
     25    private final ParkingZoneRepository parkingZoneRepository;
    2226    private final BCryptPasswordEncoder bCryptPasswordEncoder;
    2327    private final ConfirmationTokenService confirmationTokenService;
    2428
    2529    @Autowired
    26     public VrabotenService(VrabotenRepository vrabotenRepository, BCryptPasswordEncoder bCryptPasswordEncoder, ConfirmationTokenService confirmationTokenService) {
     30    public VrabotenService(VrabotenRepository vrabotenRepository, ParkingZoneRepository parkingZoneRepository, BCryptPasswordEncoder bCryptPasswordEncoder, ConfirmationTokenService confirmationTokenService) {
    2731        this.vrabotenRepository = vrabotenRepository;
     32        this.parkingZoneRepository = parkingZoneRepository;
    2833        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    2934        this.confirmationTokenService = confirmationTokenService;
     
    4348        List<VrabotenDemo> vrabotenDemos = new ArrayList<>();
    4449        for (Vraboten v : vraboteni){
    45             VrabotenDemo vd = new VrabotenDemo(v.getFirstName(), v.getLastName(), v.getEmail());
     50            VrabotenDemo vd = new VrabotenDemo(v.getVrabotenId(),v.getFirstName(), v.getLastName(), v.getEmail());
    4651            vrabotenDemos.add(vd);
    4752        }
     
    4954    }
    5055
    51     public Optional<Vraboten> addVraboten(Vraboten vraboten) {
    52         Optional<Vraboten> vrabotenOpt = this.vrabotenRepository.findVrabotenByEmail(vraboten.getEmail());
    53         if (vrabotenOpt.isPresent()) {
    54             throw new IllegalStateException("Email already taken, try adding a vraboten with a different valid email address");
     56    public Optional<Vraboten> addVraboten(String password,String confirmPass,boolean locked, String firstName, String lastName, String mobile, String email, EmployeeStatus status,List<String> parkingZones) {
     57        Optional<Vraboten> vrabotenOpt = this.vrabotenRepository.findVrabotenByEmail(email);
     58        if (vrabotenOpt.isPresent()){
     59            throw new IllegalArgumentException("User with that mail already exists");
     60        }
     61        Vraboten vrabotenToAdd=new Vraboten();
     62        if (email != null && email.length() > 1 && email.contains("@") ) {
     63            vrabotenToAdd.setEmail(email);
    5564        } else {
    56             if (vraboten.getEmail() != null && vraboten.getEmail().length() > 1 && vraboten.getEmail().contains("@")) {
    57                 //System.out.println(vraboten);
    58                 this.vrabotenRepository.save(vraboten);
    59             }
    60             else{
    61                 throw new IllegalStateException("email not valid");
    62             }
    63         }
    64         return vrabotenOpt;
     65            throw new IllegalStateException("email not valid");
     66        }
     67        if(password.equals(confirmPass)){
     68            vrabotenToAdd.setPassword(bCryptPasswordEncoder.encode(password));
     69        }
     70        vrabotenToAdd.setLocked(locked);
     71
     72        if (firstName != null && firstName.length() > 1) {
     73            vrabotenToAdd.setFirstName(firstName);
     74        }
     75
     76        if (lastName != null && lastName.length() > 1 ) {
     77            vrabotenToAdd.setLastName(lastName);
     78        }
     79
     80        if (mobile != null && mobile.length() > 0 ) {
     81            vrabotenToAdd.setMobile(mobile);
     82        }
     83
     84        vrabotenToAdd.setStatus(status);
     85
     86        if(parkingZones!=null){
     87            List<ParkingZone> parkingZonesAvailable =parkingZoneRepository.findAll();
     88            List<ParkingZone> zonesToAdd= new ArrayList<>();
     89            vrabotenToAdd.setParkingZones(null);
     90            for(String pzName:parkingZones){
     91                for(ParkingZone pz :parkingZonesAvailable){
     92                    if(pzName.equals(pz.getPzName())) {
     93                        zonesToAdd.add(pz);
     94//                            pz.getOdgovorniLica().add(vrabotenRepository.findByVrabotenId(vrabotenId));
     95                    }
     96                }
     97            }
     98            vrabotenToAdd.setParkingZones(zonesToAdd);
     99        }
     100        String token = UUID.randomUUID().toString();
     101        ConfirmationTokenW confirmationTokenW = new ConfirmationTokenW(
     102                token,
     103                LocalDateTime.now(),
     104                LocalDateTime.now().plusMinutes(15),
     105                vrabotenToAdd
     106        );
     107
     108        confirmationTokenService.saveConfirmationTokenW(confirmationTokenW);
     109
     110        return Optional.of(vrabotenToAdd);
     111//        Optional<Vraboten> vrabotenOpt = this.vrabotenRepository.findVrabotenByEmail(vraboten.getEmail());
     112//        if (vrabotenOpt.isPresent()) {
     113//            throw new IllegalStateException("Email already taken, try adding a vraboten with a different valid email address");
     114//        } else {
     115//            if (vraboten.getEmail() != null && vraboten.getEmail().length() > 1 && vraboten.getEmail().contains("@")) {
     116//                //System.out.println(vraboten);
     117//                this.vrabotenRepository.save(vraboten);
     118//            }
     119//            else{
     120//                throw new IllegalStateException("email not valid");
     121//            }
     122//        }
     123//        return vrabotenOpt;
    65124    }
    66125
    67126    @Transactional
    68     public Vraboten updateVraboten(int vrabotenId, String firstName, String lastName, String mobile, String email, String status) {
     127    public Vraboten updateVraboten(int vrabotenId,String password,String confirmPass,boolean locked, String firstName, String lastName, String mobile, String email, EmployeeStatus status,List<String> parkingZones) {
    69128        Optional<Vraboten> vrabotenOpt = Optional.ofNullable(this.vrabotenRepository.findByVrabotenId(vrabotenId));
    70129        if (vrabotenOpt.isPresent()) {
    71             Vraboten vrabotenNov = this.vrabotenRepository.findByVrabotenId(vrabotenId);
    72             if (email != null && email.length() > 1 && email.contains("@") && !Objects.equals(vrabotenNov.getEmail(), email)) {
    73                 Optional<Vraboten> userOpt1 = this.vrabotenRepository.findVrabotenByEmail(email);
    74                 if (userOpt1.isPresent()) {
     130
     131            if (email != null && email.length() > 1 && email.contains("@") ) {
     132                List<String> emails = vrabotenRepository.findAll().stream().map(Vraboten::getEmail).collect(Collectors.toList());
     133                for(String mailToCheck :emails)
     134                if (email.equals(mailToCheck)&&vrabotenOpt.get().getVrabotenId()!=vrabotenId) {
    75135                    throw new IllegalStateException("email taken");
    76136                }
    77                 vrabotenNov.setEmail(email);
     137                vrabotenOpt.get().setEmail(email);
    78138            } else {
    79139                throw new IllegalStateException("email not valid");
    80140            }
    81 
    82             if (firstName != null && firstName.length() > 1 && !Objects.equals(vrabotenNov.getFirstName(), firstName)) {
    83                 vrabotenNov.setFirstName(firstName);
    84             }
    85 
    86             if (lastName != null && lastName.length() > 1 && !Objects.equals(vrabotenNov.getLastName(), lastName)) {
    87                 vrabotenNov.setLastName(lastName);
    88             }
    89 
    90             if (mobile != null && mobile.length() > 0 && !Objects.equals(vrabotenNov.getMobile(), mobile)) {
    91                 vrabotenNov.setMobile(mobile);
    92             }
    93 
    94             if (mobile != null && status.length() > 0 && !Objects.equals(vrabotenNov.getStatus(), status)) {
    95                 if(status.equals("raboti") || status.equals("ne raboti") || status.equals("na odmor") || status.equals("na boleduvanje")){
    96                     vrabotenNov.setStatus(status);
    97                 }else{
    98                     throw new IllegalStateException("Please enter one of the following statuses: 'raboti', 'ne raboti', 'na odmor', 'na boleduvanje'");
     141            if(password.equals(confirmPass)){
     142                vrabotenOpt.get().setPassword(bCryptPasswordEncoder.encode(password));
     143            }
     144            vrabotenOpt.get().setLocked(locked);
     145
     146            if (firstName != null && firstName.length() > 1 && !Objects.equals(vrabotenOpt.get().getFirstName(), firstName)) {
     147                vrabotenOpt.get().setFirstName(firstName);
     148            }
     149
     150            if (lastName != null && lastName.length() > 1 && !Objects.equals(vrabotenOpt.get().getLastName(), lastName)) {
     151                vrabotenOpt.get().setLastName(lastName);
     152            }
     153
     154            if (mobile != null && mobile.length() > 0 && !Objects.equals(vrabotenOpt.get().getMobile(), mobile)) {
     155                vrabotenOpt.get().setMobile(mobile);
     156            }
     157
     158//            if (status != null && status.toString().length() > 0) {
     159//                if(Arrays.stream(EmployeeStatus.values()).toList().contains(EmployeeStatus.valueOf(status))){
     160            vrabotenOpt.get().setStatus(status);
     161//                }else{
     162//                    throw new IllegalStateException("Please enter one of the following statuses: 'raboti', 'ne raboti', 'na odmor', 'na boleduvanje'");
     163//                }
     164//            }
     165            if(parkingZones!=null){
     166                List<ParkingZone> parkingZonesAvailable =parkingZoneRepository.findAll();
     167                List<ParkingZone> zonesToAdd= new ArrayList<>();
     168                vrabotenOpt.get().setParkingZones(null);
     169                for(String pzName:parkingZones){
     170                    for(ParkingZone pz :parkingZonesAvailable){
     171                        if(pzName.equals(pz.getPzName())) {
     172                            zonesToAdd.add(pz);
     173//                            pz.getOdgovorniLica().add(vrabotenRepository.findByVrabotenId(vrabotenId));
     174                        }
     175                    }
    99176                }
    100             }
    101 
    102             return vrabotenNov;
     177                vrabotenOpt.get().setParkingZones(zonesToAdd);
     178            }
     179            return vrabotenOpt.get();
    103180        }
    104181        else{
     
    107184    }//za menjanje password da se implementira
    108185
    109     @Modifying
    110186    @Transactional
    111187    public Optional<Vraboten> deleteVraboten(int vrabotenId) {
    112188        Optional<Vraboten> vrabotenOpt = Optional.ofNullable(this.vrabotenRepository.findByVrabotenId(vrabotenId));
    113189        if (vrabotenOpt.isPresent()) {
    114             //TODO da povikamo metod od ConfirmationTokenService za brisenje na ConfirmationTokenW
    115190            this.confirmationTokenService.deleteByVraboten_VrabotenId(vrabotenId);
    116191            this.vrabotenRepository.deleteByVrabotenId(vrabotenId);
     
    129204            throw new IllegalStateException("Vraboten doesn't exist, therefore his account can't be locked/unlocked");
    130205        }
    131     }//dali treba da stoi @Transactional gore nad funkcijata?
     206    }
    132207
    133208    @Override
     
    176251    }
    177252
     253//    @Transactional
     254//    public void setVrabotenStatus(int vrabotenId,String vrabotenStatus) {
     255//        Vraboten vraboten = vrabotenRepository.findByVrabotenId(vrabotenId);
     256//        if(vraboten!=null && value){
     257//            vraboten.setStatus(valuee);
     258//        }
     259//        else {
     260//            throw new IllegalStateException(String.format("Vraboten with id %d does not exist.",vrabotenId));
     261//        }
     262//    }
    178263}
  • sources/app/src/main/resources/application.properties

    r8588fcb r9ff45d6  
    22spring.datasource.username=postgres
    33spring.datasource.password=1234
    4 spring.jpa.hibernate.ddl-auto=create-drop
     4spring.jpa.hibernate.ddl-auto=update
    55spring.jpa.show-sql=true
    66spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
  • sources/app/target/classes/application.properties

    r8588fcb r9ff45d6  
    22spring.datasource.username=postgres
    33spring.datasource.password=1234
    4 spring.jpa.hibernate.ddl-auto=create-drop
     4spring.jpa.hibernate.ddl-auto=update
    55spring.jpa.show-sql=true
    66spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
Note: See TracChangeset for help on using the changeset viewer.