Changeset e272096


Ignore:
Timestamp:
02/18/24 22:01:54 (4 months ago)
Author:
ppaunovski <paunovskipavel@…>
Branches:
master
Children:
4251327
Parents:
bde8b13
Message:

All 3 main use cases implemented.

  1. Starting a commute
  2. Writing a ticket
  3. Starting an instance of a Bus Line
Location:
src/main
Files:
2 added
28 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/mk/ukim/finki/busngo/repository/BiletRepository.java

    rbde8b13 re272096  
    1515//    List<Bilet> findAllByKorisnikByPatnikKId(Korisnik korisnik);
    1616    Optional<Bilet> findByBIdAndAndKorisnikByPatnikKId(Long bid, Patnik patnik);
     17//    List<Bilet> findAllByKorisnikByPatnikKIdAndBStatus(Patnik patnik, BILET_STATUS status);
    1718}
  • src/main/java/mk/ukim/finki/busngo/repository/VozenjeRepository.java

    rbde8b13 re272096  
    33import mk.ukim.finki.busngo.model.entities.Patnik;
    44import mk.ukim.finki.busngo.model.entities.Vozenje;
     5import mk.ukim.finki.busngo.model.enums.VOZENJE_STATUS;
    56import org.springframework.data.jpa.repository.JpaRepository;
    67
     
    910public interface VozenjeRepository extends JpaRepository<Vozenje, Long> {
    1011    List<Vozenje> findAllByKorisnikByPatnikKId(Patnik patnik);
     12    List<Vozenje> findAllByKorisnikByPatnikKIdAndAndVozenjeStatus(Patnik patnik, VOZENJE_STATUS vozenjeStatus);
    1113}
  • src/main/java/mk/ukim/finki/busngo/service/AuthService.java

    rbde8b13 re272096  
    22
    33import mk.ukim.finki.busngo.model.entities.Korisnik;
     4import mk.ukim.finki.busngo.model.enums.VrabotenType;
    45
    56public interface AuthService {
    67    Korisnik login(String email, String password);
    78    Korisnik registerPatnik(String ime, String email, String password, String confirmPassword, String address, String telefon);
     9    Korisnik registerVraboten(String ime, String email, String password, String confirmPassword, String address, String telefon, VrabotenType type, Double salary);
    810
    911}
  • src/main/java/mk/ukim/finki/busngo/service/BiletService.java

    rbde8b13 re272096  
    1616
    1717    List<Bilet> findAllByPatnikEmail(String email);
     18//    List<Bilet> findAllByPatnikEmailACTIVE(String email);
    1819    Bilet findBybIdAndPatnikEmail(Long bId, String email);
    1920
  • src/main/java/mk/ukim/finki/busngo/service/InstancaNaLinijaService.java

    rbde8b13 re272096  
    1111    Instancanalinija findById(Long inlId);
    1212    Instancanalinija start(Long liId, String a_registracija, String email);
    13     Instancanalinija end(Long inlId);
     13    Instancanalinija end(Long inlId, String email);
    1414    List<Instancanalinija> findAllActive();
    1515
  • src/main/java/mk/ukim/finki/busngo/service/KaznaService.java

    rbde8b13 re272096  
    88    List<Kazna> findAll();
    99    List<Kazna> findAllByKontrolaId(Long kontrolaId);
     10    Kazna pay(Long kaznaId);
     11    Kazna findById(Long id);
    1012}
  • src/main/java/mk/ukim/finki/busngo/service/KaznaZaRegistriranService.java

    rbde8b13 re272096  
    11package mk.ukim.finki.busngo.service;
    22
     3import mk.ukim.finki.busngo.model.entities.Kazna;
    34import mk.ukim.finki.busngo.model.entities.Kaznazaregistriran;
    45import mk.ukim.finki.busngo.model.exceptions.UserShouldNotBeTicketedException;
     
    1011
    1112    Kaznazaregistriran create(Long kontrolaId, String dokument, Double iznos, Long patnik, String email) throws UserShouldNotBeTicketedException;
     13    Kaznazaregistriran pay(Long kaznaId);
     14    Kaznazaregistriran findById(Long id);
    1215}
  • src/main/java/mk/ukim/finki/busngo/service/VozenjeService.java

    rbde8b13 re272096  
    22
    33import mk.ukim.finki.busngo.model.entities.Vozenje;
     4import mk.ukim.finki.busngo.model.enums.VOZENJE_STATUS;
    45
    56import java.util.List;
     
    78public interface VozenjeService {
    89    List<Vozenje> findVozenjaByPatnik(String email);
     10    List<Vozenje> findVozenjaByPatnikAndStatus(String email, VOZENJE_STATUS status);
    911    Vozenje start(String email, Long bId, Long pnlId, Long inlId);
    1012    Vozenje end(Long vozenjeId, Long pnlId);
  • src/main/java/mk/ukim/finki/busngo/service/impl/AuthServiceImpl.java

    rbde8b13 re272096  
    11package mk.ukim.finki.busngo.service.impl;
    22
     3import mk.ukim.finki.busngo.model.entities.Kondukter;
    34import mk.ukim.finki.busngo.model.entities.Korisnik;
    45import mk.ukim.finki.busngo.model.entities.Patnik;
     6import mk.ukim.finki.busngo.model.entities.Vozac;
     7import mk.ukim.finki.busngo.model.enums.VrabotenType;
    58import mk.ukim.finki.busngo.model.exceptions.InvalidCredentialsException;
    69import mk.ukim.finki.busngo.model.exceptions.UserAlreadyExistsException;
     10import mk.ukim.finki.busngo.repository.KondukterRepository;
    711import mk.ukim.finki.busngo.repository.KorisnikRepository;
    812import mk.ukim.finki.busngo.repository.PatnikRepository;
    9 import mk.ukim.finki.busngo.service.AuthService;
     13import mk.ukim.finki.busngo.repository.VozacRepository;
     14import mk.ukim.finki.busngo.service.*;
    1015import org.springframework.security.crypto.password.PasswordEncoder;
    1116import org.springframework.stereotype.Service;
     17
     18import java.sql.Date;
     19import java.time.LocalDate;
    1220
    1321@Service
     
    1523    private final KorisnikRepository korisnikRepository;
    1624    private final PatnikRepository patnikRepository;
     25    private final VozacRepository vozacRepository;
     26    private final KondukterRepository kondukterRepository;
    1727    private final PasswordEncoder passwordEncoder;
     28    private final PatnikService patnikService;
     29    private final KondukterService kondukterService;
     30    private final VozacService vozacService;
    1831
    19     public AuthServiceImpl(KorisnikRepository korisnikRepository, PatnikRepository patnikRepository, PasswordEncoder passwordEncoder) {
     32    public AuthServiceImpl(KorisnikRepository korisnikRepository, PatnikRepository patnikRepository, VozacRepository vozacRepository, KondukterRepository kondukterRepository, PasswordEncoder passwordEncoder, PatnikService patnikService, KondukterService kondukterService, VozacService vozacService) {
    2033        this.korisnikRepository = korisnikRepository;
    2134        this.patnikRepository = patnikRepository;
     35        this.vozacRepository = vozacRepository;
     36        this.kondukterRepository = kondukterRepository;
    2237        this.passwordEncoder = passwordEncoder;
     38        this.patnikService = patnikService;
     39        this.kondukterService = kondukterService;
     40        this.vozacService = vozacService;
    2341    }
    2442
     
    5270        korisnik.setKIsAdmin(false);
    5371
     72        return patnikRepository.save(korisnik);
     73    }
    5474
    55         return patnikRepository.save(korisnik);
     75    @Override
     76    public Korisnik registerVraboten(String ime, String email, String password, String confirmPassword, String address, String telefon, VrabotenType type, Double salary) {
     77        if (email == null || password == null || email.isEmpty() || password.isEmpty()) {
     78            throw new InvalidCredentialsException();
     79        }
     80
     81        if (!password.equals(confirmPassword)) {
     82            throw new InvalidCredentialsException();
     83        }
     84
     85        if(this.korisnikRepository.findByKEmail(email).isPresent()) {
     86            throw new UserAlreadyExistsException(email);
     87        }
     88
     89
     90        switch (type){
     91            case ADMIN:
     92                Korisnik korisnik = new Korisnik();
     93                korisnik.setKIme(ime);
     94                korisnik.setKAdresa(address);
     95                korisnik.setKLozinka(passwordEncoder.encode(password));
     96                korisnik.setKEmail(email);
     97                korisnik.setKTelefon(telefon);
     98                korisnik.setKIsAdmin(true);
     99                return korisnikRepository.save(korisnik);
     100            case VOZAC:
     101                Vozac vozac = new Vozac();
     102                vozac.setKIme(ime);
     103                vozac.setKAdresa(address);
     104                vozac.setKLozinka(passwordEncoder.encode(password));
     105                vozac.setKEmail(email);
     106                vozac.setKTelefon(telefon);
     107                vozac.setKIsAdmin(false);
     108                vozac.setVPlata(salary);
     109                vozac.setVDatumNaVrabotuvanje(Date.valueOf(LocalDate.now()));
     110                this.korisnikRepository.save(vozac);
     111
     112                return vozacRepository.save(vozac);
     113            case KONDUKTER:
     114                Kondukter kondukter = new Kondukter();
     115                kondukter.setKIme(ime);
     116                kondukter.setKAdresa(address);
     117                kondukter.setKLozinka(passwordEncoder.encode(password));
     118                kondukter.setKEmail(email);
     119                kondukter.setKTelefon(telefon);
     120                kondukter.setKIsAdmin(false);
     121                kondukter.setVPlata(salary);
     122                kondukter.setVDatumNaVrabotuvanje(Date.valueOf(LocalDate.now()));
     123                this.korisnikRepository.save(kondukter);
     124
     125                return kondukterRepository.save(kondukter);
     126        }
     127        return null;
    56128    }
    57129
  • src/main/java/mk/ukim/finki/busngo/service/impl/BiletServiceImpl.java

    rbde8b13 re272096  
    1616import org.springframework.security.crypto.password.PasswordEncoder;
    1717import org.springframework.stereotype.Service;
     18import org.thymeleaf.expression.Lists;
    1819
    1920import java.sql.Timestamp;
     
    7576    }
    7677
     78//    @Override
     79//    public List<Bilet> findAllByPatnikEmailACTIVE(String email) {
     80//        Patnik patnik = patnikService.loadUserByEmail(email);
     81//        List<Bilet> allByKorisnikByPatnikKIdAndBStatus = biletRepository.findAllByKorisnikByPatnikKIdAndBStatus(patnik, BILET_STATUS.ACTIVE);
     82//        List<Bilet> allByKorisnikByPatnikKIdAndBStatus1 = biletRepository.findAllByKorisnikByPatnikKIdAndBStatus(patnik, BILET_STATUS.INACTIVE);
     83//        allByKorisnikByPatnikKIdAndBStatus1.addAll(allByKorisnikByPatnikKIdAndBStatus);
     84//        return allByKorisnikByPatnikKIdAndBStatus1;
     85//    }
     86
    7787    @Override
    7888    public Bilet findBybIdAndPatnikEmail(Long bId, String email) {
  • src/main/java/mk/ukim/finki/busngo/service/impl/InstancaNaLinijaServiceImpl.java

    rbde8b13 re272096  
    5252
    5353    @Override
    54     public Instancanalinija end(Long inlId) {
     54    public Instancanalinija end(Long inlId, String email) {
     55        Vozac vozac = vozacService.findByEmail(email);
    5556        Instancanalinija instancanalinija = this.findById(inlId);
    5657        instancanalinija.setInlDatumEnd(Timestamp.valueOf(LocalDateTime.now()));
  • src/main/java/mk/ukim/finki/busngo/service/impl/KaznaServiceImpl.java

    rbde8b13 re272096  
    88import org.springframework.stereotype.Service;
    99
     10import java.sql.Timestamp;
     11import java.time.LocalDateTime;
    1012import java.util.List;
    1113
     
    3032        return kaznaRepository.findAllByKontroliByKontrolaId(kontroli);
    3133    }
     34
     35    @Override
     36    public Kazna pay(Long kaznaId) {
     37        Kazna kazna = this.findById(kaznaId);
     38        kazna.setKzPlateno(true);
     39        kazna.setKzDatumPlateno(Timestamp.valueOf(LocalDateTime.now()));
     40        return kaznaRepository.save(kazna);
     41    }
     42
     43    @Override
     44    public Kazna findById(Long id) {
     45        return kaznaRepository.findById(id).orElseThrow(RuntimeException::new);
     46    }
    3247}
  • src/main/java/mk/ukim/finki/busngo/service/impl/KaznaZaRegistriranServiceImpl.java

    rbde8b13 re272096  
    5959                kontroli.getInstancanalinijaByInlId().getInlId()));
    6060    }
     61
     62    @Override
     63    public Kaznazaregistriran pay(Long kaznaId) {
     64        Kaznazaregistriran kazna = this.findById(kaznaId);
     65        if(!kazna.getKzPlateno()){
     66            kazna.setKzPlateno(true);
     67            kazna.setKzDatumPlateno(Timestamp.valueOf(LocalDateTime.now()));
     68        }
     69        return kaznaZaRegistriranRepository.save(kazna);
     70    }
     71
     72    @Override
     73    public Kaznazaregistriran findById(Long id) {
     74        return kaznaZaRegistriranRepository.findById(id).orElseThrow(RuntimeException::new);
     75    }
    6176}
  • src/main/java/mk/ukim/finki/busngo/service/impl/VozenjeServiceImpl.java

    rbde8b13 re272096  
    3333        Patnik patnik = patnikService.loadUserByEmail(email);
    3434        return vozenjeRepository.findAllByKorisnikByPatnikKId(patnik);
     35    }
     36
     37    @Override
     38    public List<Vozenje> findVozenjaByPatnikAndStatus(String email, VOZENJE_STATUS status) {
     39        Patnik patnik = patnikService.loadUserByEmail(email);
     40        return vozenjeRepository.findAllByKorisnikByPatnikKIdAndAndVozenjeStatus(patnik, status);
    3541    }
    3642
  • src/main/java/mk/ukim/finki/busngo/web/BiletController.java

    rbde8b13 re272096  
    4141        Patnik patnik = null;
    4242        try{
     43            patnik = patnikService.loadUserByEmail(authentication.getName());
    4344            model.addAttribute("bileti", biletService.findAllByPatnikEmail(authentication.getName()));
    4445        }
  • src/main/java/mk/ukim/finki/busngo/web/InstancaNaLinijaController.java

    rbde8b13 re272096  
    7171
    7272    @PostMapping("/{inlId}/end")
    73     public String endInstanca(@PathVariable Long inlId){
    74         Instancanalinija ended = instancaNaLinijaService.end(inlId);
     73    public String endInstanca(@PathVariable Long inlId,
     74                              Authentication authentication){
     75        Instancanalinija ended = instancaNaLinijaService.end(inlId, authentication.getName());
    7576        return "redirect:/instanca-na-linija/" + ended.getInlId();
    7677    }
  • src/main/java/mk/ukim/finki/busngo/web/KaznaController.java

    rbde8b13 re272096  
    99import org.springframework.ui.Model;
    1010import org.springframework.web.bind.annotation.GetMapping;
     11import org.springframework.web.bind.annotation.PathVariable;
     12import org.springframework.web.bind.annotation.PostMapping;
    1113import org.springframework.web.bind.annotation.RequestMapping;
    1214
     
    3739        return "master-template";
    3840    }
     41
     42    @PostMapping("/{id}/pay")
     43    public String pay(@PathVariable Long id,
     44                      Model model){
     45        kaznaZaRegistriranService.pay(id);
     46        return "redirect:/kazna";
     47    }
     48
    3949}
  • src/main/java/mk/ukim/finki/busngo/web/RegisterController.java

    rbde8b13 re272096  
    22
    33import mk.ukim.finki.busngo.model.entities.Korisnik;
     4import mk.ukim.finki.busngo.model.enums.VrabotenType;
    45import mk.ukim.finki.busngo.model.exceptions.InvalidCredentialsException;
    56import mk.ukim.finki.busngo.model.exceptions.UserAlreadyExistsException;
     
    3435        }
    3536
     37        model.addAttribute("types", VrabotenType.values());
     38
    3639        model.addAttribute("bodyContent", "register");
    3740        return "master-template";
     
    4447                           @RequestParam String confirmPassword,
    4548                           @RequestParam String address,
    46                            @RequestParam String phone
    47     ) {
     49                           @RequestParam String phone,
     50                           @RequestParam(required = false)VrabotenType vrabotenType,
     51                           @RequestParam(required = false) Double salary
     52                           ) {
    4853        try{
    49             Korisnik korisnik = this.authService.registerPatnik(name, email, password, confirmPassword, address, phone);
    50             this.patnikService.save(korisnik);
     54            Korisnik korisnik;
     55            if(vrabotenType != null){
     56                 korisnik = this.authService.registerVraboten(name, email, password, confirmPassword, address, phone, vrabotenType, salary);
     57
     58            }
     59            else
     60                korisnik = this.authService.registerPatnik(name, email, password, confirmPassword, address, phone);
    5161            return "redirect:/login";
    5262        } catch (InvalidCredentialsException | UserAlreadyExistsException exception) {
  • src/main/java/mk/ukim/finki/busngo/web/VozenjeController.java

    rbde8b13 re272096  
    44import mk.ukim.finki.busngo.model.entities.Patnik;
    55import mk.ukim.finki.busngo.model.entities.Vozenje;
     6import mk.ukim.finki.busngo.model.enums.VOZENJE_STATUS;
    67import mk.ukim.finki.busngo.model.exceptions.InvalidPatnikIdException;
    78import mk.ukim.finki.busngo.model.exceptions.InvalidPostojkaNaLinijaIdException;
     
    2930    @GetMapping()
    3031    public String getVozenjePage(Model model,
    31                                  Authentication authentication){
     32                                 Authentication authentication,
     33                                 @RequestParam(required = false) VOZENJE_STATUS status){
    3234        model.addAttribute("bodyContent", "listVozenja");
    3335        Patnik patnik = null;
    3436        try{
    35             model.addAttribute("vozenja", vozenjeService.findVozenjaByPatnik(authentication.getName()));
     37            if(status != null)
     38                model.addAttribute("vozenja", vozenjeService.findVozenjaByPatnikAndStatus(authentication.getName(), status));
     39            else
     40                model.addAttribute("vozenja", vozenjeService.findVozenjaByPatnikAndStatus(authentication.getName(), VOZENJE_STATUS.ACTIVE));
     41            model.addAttribute("vozStatus", VOZENJE_STATUS.values());
    3642        }
    3743        catch (InvalidPatnikIdException e){
  • src/main/resources/templates/fragments/header.html

    rbde8b13 re272096  
    1010      <div class="collapse navbar-collapse justify-content-end" id="navbarsExampleDefault">
    1111        <ul class="navbar-nav m-auto">
    12           <li class="nav-item m-auto">
     12          <li sec:hasRole class="nav-item m-auto">
    1313            <a class="nav-link active" href="/bilet">Bileti</a>
    1414          </li>
     
    4242            <a class="nav-link" href="#"></a>
    4343          </li>
    44           <li class="nav-item">
    45             <a class="btn btn-success btn-sm ml-3" href="/shopping-cart">
    46               <i class="fa fa-shopping-cart"></i> Cart
    47             </a>
    48           </li>
     44
    4945          <li class="nav-item" sec:authorize="isAuthenticated()">
    5046            <a href="#" class="btn btn-light btn-sm ml-3" sec:authentication="name">
  • src/main/resources/templates/kontrola.html

    rbde8b13 re272096  
    11<div xmlns:th="http://www.thymeleaf.org">
    2     <section class="jumbotron text-center">
    3         <div class="container">
    4             <h1 class="jumbotron-heading">WEB PROGRAMMING SHOP</h1>
    5             <h3 class="jumbotron-heading">All products</h3>
    6         </div>
    7     </section>
    82
     3    <div class="container mb-4">
     4        <div class="row">
     5            <div class="col-12" >
    96
    107    <form class="form-signin mt-xl-5" method="post" th:action="@{'/kontrola/{id}/kazni-neregistriran'(id=${kontrola.kontrolaId})}">
     
    129
    1310        <p>
    14             <label for="dokument" class="sr-only">Email</label>
     11            <label for="dokument" >Dokument</label>
    1512            <input class="form-control" name="dokument" id="dokument" type="text">
    1613        </p>
     
    1815
    1916        <p>
    20             <label for="telefon" class="sr-only">Telefon</label>
     17            <label for="telefon" >Telefon</label>
    2118            <input class="form-control" name="telefon" id="telefon" type="text">
    2219        </p>
    2320
    2421        <p>
    25             <label for="ime" class="sr-only">Ime</label>
     22            <label for="ime" >Ime</label>
    2623            <input class="form-control" name="ime" id="ime" type="text">
    2724        </p>
    2825
    2926        <p>
    30             <label for="adresa" class="sr-only">Adresa</label>
     27            <label for="adresa" >Adresa</label>
    3128            <input class="form-control" name="adresa" id="adresa" type="text">
    3229        </p>
     
    3431
    3532        <p>
    36             <label for="iznos" class="sr-only">Iznos</label>
     33            <label for="iznos" >Iznos</label>
    3734            <input class="form-control" name="iznos" id="iznos" type="number">
    3835        </p>
     
    4946
    5047
     48
    5149    <form class="form-signin mt-xl-5" method="post" th:action="@{'/kontrola/{id}/kazni-registriran'(id=${kontrola.kontrolaId})}">
    5250        <h2 class="form-signin-heading">Kazna za regirstiran</h2>
    5351
    5452        <p>
    55             <label for="dk" class="sr-only">Dokument</label>
     53            <label for="dk" >Dokument</label>
    5654            <input class="form-control" name="dokument" id="dk" type="text">
    5755        </p>
    5856
    5957        <p>
    60             <label for="iz" class="sr-only">Iznos</label>
     58            <label for="iz" >Iznos</label>
    6159            <input class="form-control" name="iznos" id="iz" type="number">
    6260        </p>
    6361
    6462        <p>
    65             <label for="patnik" class="sr-only">Patnik</label>
     63            <label for="patnik" >Patnik</label>
    6664            <select id="patnik" name="patnik" class="form-control">
    6765                <option th:each="patnik : ${patnici}"
     
    8280        </div>
    8381    </form>
     82
     83            </div>
     84        </div>
     85    </div>
     86
    8487
    8588
     
    114117
    115118                            <td class="text-right">
    116                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    117                                     <form th:action="@{'/products/delete/{id}' (id=${kazna.kzId})}"
    118                                           th:method="DELETE">
    119                                         <button type="submit"
    120                                                 class="btn btn-sm btn-danger delete-product">
    121                                             <i class="fas fa-trash-alt"></i> Delete
    122                                         </button>
    123                                     </form>
    124                                 </th:block>
     119<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     120<!--                                    <form th:action="@{'/products/delete/{id}' (id=${kazna.kzId})}"-->
     121<!--                                          th:method="DELETE">-->
     122<!--                                        <button type="submit"-->
     123<!--                                                class="btn btn-sm btn-danger delete-product">-->
     124<!--                                            <i class="fas fa-trash-alt"></i> Delete-->
     125<!--                                        </button>-->
     126<!--                                    </form>-->
     127<!--                                </th:block>-->
    125128                            </td>
    126129                            <td>
    127                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    128                                     <a th:href="@{'/products/edit-form/{id}' (id=${kazna.kzId})}"
    129                                        class="btn btn-sm btn-info edit-product">
    130                                         <i class="fas fa-edit"></i> Edit
    131                                     </a>
    132                                 </th:block>
     130<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     131<!--                                    <a th:href="@{'/products/edit-form/{id}' (id=${kazna.kzId})}"-->
     132<!--                                       class="btn btn-sm btn-info edit-product">-->
     133<!--                                        <i class="fas fa-edit"></i> Edit-->
     134<!--                                    </a>-->
     135<!--                                </th:block>-->
    133136                            </td>
    134137                            <td>
    135                                 <form th:action="@{'/shopping-cart/add-product/{id}' (id=${kazna.kzId})}"
    136                                       th:method="POST">
    137                                     <button type="submit" class="btn btn-sm btn-success add-to-cart">
    138                                         <i class="fas fa-shopping-cart"></i> Add to cart
    139                                     </button>
    140                                 </form>
     138
    141139                            </td>
    142140                        </tr>
  • src/main/resources/templates/kupiBilet.html

    rbde8b13 re272096  
    11<div xmlns:th="http://www.thymeleaf.org">
    2     <section class="jumbotron text-center">
    3         <div class="container">
    4             <h1 class="jumbotron-heading">WEB PROGRAMMING SHOP</h1>
    5             <h3 class="jumbotron-heading">All products</h3>
    6         </div>
    7     </section>
     2
    83
    94    <div style="width: 500px">
  • src/main/resources/templates/listBileti.html

    rbde8b13 re272096  
    11<div xmlns:th="http://www.thymeleaf.org">
    2     <section class="jumbotron text-center">
    3         <div class="container">
    4             <h1 class="jumbotron-heading">WEB PROGRAMMING SHOP</h1>
    5             <h3 class="jumbotron-heading">All products</h3>
    6         </div>
    7     </section>
     2
    83
    94    <div class="container mb-4">
     
    3126
    3227                            <td class="text-right">
    33                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    34                                     <form th:action="@{'/products/delete/{id}' (id=${bilet.bId})}"
    35                                           th:method="DELETE">
    36                                         <button type="submit"
    37                                                 class="btn btn-sm btn-danger delete-product">
    38                                             <i class="fas fa-trash-alt"></i> Delete
    39                                         </button>
    40                                     </form>
    41                                 </th:block>
     28<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     29<!--                                    <form th:action="@{'/products/delete/{id}' (id=${bilet.bId})}"-->
     30<!--                                          th:method="DELETE">-->
     31<!--                                        <button type="submit"-->
     32<!--                                                class="btn btn-sm btn-danger delete-product">-->
     33<!--                                            <i class="fas fa-trash-alt"></i> Delete-->
     34<!--                                        </button>-->
     35<!--                                    </form>-->
     36<!--                                </th:block>-->
    4237                            </td>
    4338                            <td>
    44                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    45                                     <a th:href="@{'/products/edit-form/{id}' (id=${bilet.bId})}"
    46                                        class="btn btn-sm btn-info edit-product">
    47                                         <i class="fas fa-edit"></i> Edit
    48                                     </a>
    49                                 </th:block>
     39<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     40<!--                                    <a th:href="@{'/products/edit-form/{id}' (id=${bilet.bId})}"-->
     41<!--                                       class="btn btn-sm btn-info edit-product">-->
     42<!--                                        <i class="fas fa-edit"></i> Edit-->
     43<!--                                    </a>-->
     44<!--                                </th:block>-->
    5045                            </td>
    5146                            <td>
    52                                 <form th:action="@{'/shopping-cart/add-product/{id}' (id=${bilet.bId})}"
    53                                       th:method="POST">
    54                                     <button type="submit" class="btn btn-sm btn-success add-to-cart">
    55                                         <i class="fas fa-shopping-cart"></i> Add to cart
    56                                     </button>
    57                                 </form>
     47
    5848                            </td>
    5949                        </tr>
  • src/main/resources/templates/listInstanci.html

    rbde8b13 re272096  
    11<div xmlns:th="http://www.thymeleaf.org">
    2     <section class="jumbotron text-center">
    3         <div class="container">
    4             <h1 class="jumbotron-heading">WEB PROGRAMMING SHOP</h1>
    5             <h3 class="jumbotron-heading">All products</h3>
    6         </div>
    7     </section>
     2
    83
    94    <div class="container mb-4">
     
    6156                                      th:method="GET">
    6257                                    <button type="submit" class="btn btn-sm btn-success add-to-cart">
    63                                         <i class="fas fa-shopping-cart"></i> Kontrola
     58                                        Kontrola
    6459                                    </button>
    6560                                </form>
  • src/main/resources/templates/listKazni.html

    rbde8b13 re272096  
    11<div xmlns:th="http://www.thymeleaf.org">
    2     <section class="jumbotron text-center">
    3         <div class="container">
    4             <h1 class="jumbotron-heading">WEB PROGRAMMING SHOP</h1>
    5             <h3 class="jumbotron-heading">All products</h3>
    6         </div>
    7     </section>
     2
    83
    94    <div class="container mb-4">
     
    1611                            <th scope="col">#</th>
    1712                            <th scope="col">Iznos</th>
     13                            <th scope="col">Datum</th>
    1814                            <th scope="col">Plateno</th>
     15                            <th scope="col">Datum plateno</th>
    1916                            <th scope="col">Dokument</th>
    2017                            <th scope="col"></th>
     
    2724                            <td th:text="${kazna.kzId}"></td>
    2825                            <td th:text="${kazna.kzIznos}"></td>
     26                            <td th:text="${kazna.kzDatum}"></td>
    2927                            <td th:text="${kazna.kzPlateno}"></td>
     28                            <td th:text="${kazna.kzDatumPlateno}"></td>
    3029                            <td th:text="${kazna.kzDokument}"></td>
    3130
    3231                            <td class="text-right">
    33                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    34                                     <form th:action="@{'/products/delete/{id}' (id=${kazna.kzId})}"
    35                                           th:method="DELETE">
    36                                         <button type="submit"
    37                                                 class="btn btn-sm btn-danger delete-product">
    38                                             <i class="fas fa-trash-alt"></i> Delete
    39                                         </button>
    40                                     </form>
    41                                 </th:block>
     32<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     33<!--                                    <form th:action="@{'/products/delete/{id}' (id=${kazna.kzId})}"-->
     34<!--                                          th:method="DELETE">-->
     35<!--                                        <button type="submit"-->
     36<!--                                                class="btn btn-sm btn-danger delete-product">-->
     37<!--                                            <i class="fas fa-trash-alt"></i> Delete-->
     38<!--                                        </button>-->
     39<!--                                    </form>-->
     40<!--                                </th:block>-->
    4241                            </td>
    4342                            <td>
    44                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    45                                     <a th:href="@{'/products/edit-form/{id}' (id=${kazna.kzId})}"
    46                                        class="btn btn-sm btn-info edit-product">
    47                                         <i class="fas fa-edit"></i> Edit
    48                                     </a>
    49                                 </th:block>
     43<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     44<!--                                    <a th:href="@{'/products/edit-form/{id}' (id=${kazna.kzId})}"-->
     45<!--                                       class="btn btn-sm btn-info edit-product">-->
     46<!--                                        <i class="fas fa-edit"></i> Edit-->
     47<!--                                    </a>-->
     48<!--                                </th:block>-->
    5049                            </td>
    5150                            <td>
    52                                 <form th:action="@{'/shopping-cart/add-product/{id}' (id=${kazna.kzId})}"
     51                                <form th:action="@{'/kazna/{id}/pay' (id=${kazna.kzId})}"
    5352                                      th:method="POST">
    5453                                    <button type="submit" class="btn btn-sm btn-success add-to-cart">
    55                                         <i class="fas fa-shopping-cart"></i> Add to cart
     54                                         Pay
    5655                                    </button>
    5756                                </form>
  • src/main/resources/templates/listVozenja.html

    rbde8b13 re272096  
    66        </div>
    77    </section>
     8
     9    <form method="get" action="/vozenje">
     10        <select name="status">
     11            <option th:each="status : ${vozStatus}" th:value="${status}" th:text="${status.name()}"></option>
     12        </select>
     13
     14        <input type="submit" value="Search">
     15    </form>
    816
    917    <div class="container mb-4">
     
    3341
    3442                            <td class="text-right">
    35                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    36                                     <form th:action="@{'/products/delete/{id}' (id=${vozenje.vozenjeId})}"
    37                                           th:method="DELETE">
     43                                <th:block  >
     44                                    <form th:action="@{'/vozenje/{id}/end' (id=${vozenje.vozenjeId})}"
     45                                          th:hidden="${vozenje.vozenjeStatus.name().equals('FINISHED')} ? 'true' : 'false'"
     46                                          th:method="GET">
    3847                                        <button type="submit"
    3948                                                class="btn btn-sm btn-danger delete-product">
    40                                             <i class="fas fa-trash-alt"></i> Delete
     49                                            <i class="fas fa-trash-alt"></i> End
    4150                                        </button>
    4251                                    </form>
     
    4453                            </td>
    4554                            <td>
    46                                 <th:block sec:authorize="hasRole('ROLE_ADMIN')">
    47                                     <a th:href="@{'/products/edit-form/{id}' (id=${vozenje.vozenjeId})}"
    48                                        class="btn btn-sm btn-info edit-product">
    49                                         <i class="fas fa-edit"></i> Edit
    50                                     </a>
    51                                 </th:block>
     55<!--                                <th:block sec:authorize="hasRole('ROLE_ADMIN')">-->
     56<!--                                    <a th:href="@{'/products/edit-form/{id}' (id=${vozenje.vozenjeId})}"-->
     57<!--                                       class="btn btn-sm btn-info edit-product">-->
     58<!--                                        <i class="fas fa-edit"></i> Edit-->
     59<!--                                    </a>-->
     60<!--                                </th:block>-->
    5261                            </td>
    5362                            <td>
    54                                 <form th:action="@{'/vozenje/{vozenjeId}/end'(vozenjeId=${vozenje.vozenjeId})}"
    55                                       th:method="GET">
    56                                     <button type="submit" class="btn btn-sm btn-success add-to-cart">
    57                                         <i class="fas fa-shopping-cart"></i> End vozenje
    58                                     </button>
    59                                 </form>
     63
    6064                            </td>
    6165                        </tr>
  • src/main/resources/templates/master-template.html

    rbde8b13 re272096  
    2020<header th:replace="fragments/header"/>
    2121
     22<div th:text="${error}"></div>
     23
    2224<section th:include="${bodyContent}">
    2325
  • src/main/resources/templates/register.html

    rbde8b13 re272096  
    11<div xmlns:th="http://www.thymeleaf.org">
    2   <section class="jumbotron text-center">
    3     <div class="container">
    4       <h1 class="jumbotron-heading">WEB PROGRAMMING SHOP</h1>
    5       <h3 class="jumbotron-heading">All products</h3>
    6     </div>
    7   </section>
    82
    93  <div class="container mb-4">
     
    3529      </p>
    3630
     31      <p sec:authorize="hasRole('ROLE_ADMIN')">
     32        <label for="vrabotenType" class="sr-only">Vraboten Type</label>
     33        <select name="vrabotenType" id="vrabotenType">
     34          <option th:each="type : ${types}"
     35                  th:text="${type.name()}"
     36                  th:value="${type}" ></option>
     37        </select>
     38      </p>
     39
     40      <p sec:authorize="hasRole('ROLE_ADMIN')">
     41        <label for="salary" class="sr-only">Salary</label>
     42        <input type="number" id="salary" name="salary">
     43      </p>
     44
     45
    3746
    3847
Note: See TracChangeset for help on using the changeset viewer.