source: src/main/java/mk/ukim/finki/busngo/service/impl/VozenjeServiceImpl.java@ bde8b13

Last change on this file since bde8b13 was bde8b13, checked in by ppaunovski <paunovskipavel@…>, 6 months ago

All 3 main use cases implemented.

  1. Starting a commute
  2. Writing a ticket
  3. Starting an instance of a Bus Line
  • Property mode set to 100644
File size: 3.2 KB
Line 
1package mk.ukim.finki.busngo.service.impl;
2
3import mk.ukim.finki.busngo.model.entities.*;
4import mk.ukim.finki.busngo.model.enums.BILET_STATUS;
5import mk.ukim.finki.busngo.model.enums.VOZENJE_STATUS;
6import mk.ukim.finki.busngo.model.exceptions.InvalidVozenjeIdException;
7import mk.ukim.finki.busngo.repository.VozenjeRepository;
8import mk.ukim.finki.busngo.service.*;
9import org.springframework.stereotype.Service;
10
11import java.sql.Timestamp;
12import java.time.LocalDateTime;
13import java.util.List;
14
15@Service
16public class VozenjeServiceImpl implements VozenjeService {
17 private final VozenjeRepository vozenjeRepository;
18 private final PatnikService patnikService;
19 private final BiletService biletService;
20 private final PostojkaNaLinijaService postojkaNaLinijaService;
21 private final InstancaNaLinijaService instancaNaLinijaService;
22
23 public VozenjeServiceImpl(VozenjeRepository vozenjeRepository, PatnikService patnikService, BiletService biletService, PostojkaNaLinijaService postojkaNaLinijaService, InstancaNaLinijaService instancaNaLinijaService) {
24 this.vozenjeRepository = vozenjeRepository;
25 this.patnikService = patnikService;
26 this.biletService = biletService;
27 this.postojkaNaLinijaService = postojkaNaLinijaService;
28 this.instancaNaLinijaService = instancaNaLinijaService;
29 }
30
31 @Override
32 public List<Vozenje> findVozenjaByPatnik(String email) {
33 Patnik patnik = patnikService.loadUserByEmail(email);
34 return vozenjeRepository.findAllByKorisnikByPatnikKId(patnik);
35 }
36
37 @Override
38 public Vozenje start(String email, Long bId, Long pnlId, Long inlId) {
39 Patnik patnik = patnikService.loadUserByEmail(email);
40 Bilet bilet = biletService.findBybIdAndPatnikEmail(bId, email);
41 Postojkanalinija postojkanalinija = postojkaNaLinijaService.findById(pnlId);
42 Instancanalinija instancanalinija = instancaNaLinijaService.findById(inlId);
43
44 Vozenje vozenje = new Vozenje();
45 vozenje.setVozenjeStart(Timestamp.valueOf(LocalDateTime.now()));
46 vozenje.setVozenjeStatus(VOZENJE_STATUS.ACTIVE);
47 vozenje.setInstancanalinijaByInlId(instancanalinija);
48 vozenje.setKorisnikByPatnikKId(patnik);
49 vozenje.setPostojkanalinijaByKacuvaPnlId(postojkanalinija);
50
51 if(bilet.getBStatus().equals(BILET_STATUS.INACTIVE))
52 bilet = biletService.activate(bId);
53 else if(biletService.checkExpiration(bId))
54 throw new RuntimeException("Bilet is expired!");
55 else if(bilet.getBStatus().equals(BILET_STATUS.EXPIRED))
56 throw new RuntimeException("Bilet is expired!");
57
58 vozenje.setBiletByBId(bilet);
59 return vozenjeRepository.save(vozenje);
60 }
61
62 @Override
63 public Vozenje end(Long vozenjeId, Long pnlId) {
64 // TODO : Relacija se simnuva na pnlId
65 Vozenje vozenje = this.findById(vozenjeId);
66 vozenje.setVozenjeEnd(Timestamp.valueOf(LocalDateTime.now()));
67 vozenje.setVozenjeStatus(VOZENJE_STATUS.FINISHED);
68 return vozenjeRepository.save(vozenje);
69 }
70
71 @Override
72 public Vozenje findById(Long id) {
73 return vozenjeRepository.findById(id).orElseThrow(InvalidVozenjeIdException::new);
74 }
75}
Note: See TracBrowser for help on using the repository browser.