source: src/main/java/mk/ukim/finki/busngo/service/impl/BiletServiceImpl.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: 4.6 KB
Line 
1package mk.ukim.finki.busngo.service.impl;
2
3import mk.ukim.finki.busngo.model.entities.Bilet;
4import mk.ukim.finki.busngo.model.entities.Korisnik;
5import mk.ukim.finki.busngo.model.entities.Patnik;
6import mk.ukim.finki.busngo.model.entities.Tipbilet;
7import mk.ukim.finki.busngo.model.enums.BILET_STATUS;
8import mk.ukim.finki.busngo.model.exceptions.InvalidBiletIdException;
9import mk.ukim.finki.busngo.model.exceptions.InvalidTipBiletIdException;
10import mk.ukim.finki.busngo.repository.BiletRepository;
11import mk.ukim.finki.busngo.repository.KorisnikRepository;
12import mk.ukim.finki.busngo.repository.TipBIletRepository;
13import mk.ukim.finki.busngo.service.BiletService;
14import mk.ukim.finki.busngo.service.KorisnikService;
15import mk.ukim.finki.busngo.service.PatnikService;
16import org.springframework.security.crypto.password.PasswordEncoder;
17import org.springframework.stereotype.Service;
18
19import java.sql.Timestamp;
20import java.time.LocalDateTime;
21import java.util.ArrayList;
22import java.util.List;
23
24@Service
25public class BiletServiceImpl implements BiletService {
26 private final BiletRepository biletRepository;
27 private final KorisnikService korisnikService;
28 private final TipBIletRepository tipBIletRepository;
29 private final PatnikService patnikService;
30 private final PasswordEncoder passwordEncoder;
31 private final KorisnikRepository korisnikRepository;
32
33 public BiletServiceImpl(BiletRepository biletRepository, KorisnikService korisnikService, TipBIletRepository tipBIletRepository, PatnikService patnikService, PasswordEncoder passwordEncoder, KorisnikRepository korisnikRepository) {
34 this.biletRepository = biletRepository;
35 this.korisnikService = korisnikService;
36 this.tipBIletRepository = tipBIletRepository;
37 this.patnikService = patnikService;
38 this.passwordEncoder = passwordEncoder;
39 this.korisnikRepository = korisnikRepository;
40 }
41
42 @Override
43 public List<Bilet> listAll() {
44 return biletRepository.findAll();
45 }
46
47 @Override
48 public List<Bilet> findAllByPatnikId(Long id) {
49 Patnik patnik = patnikService.findById(id);
50 return patnik.getBiletsByKId();
51 }
52
53 @Override
54 public List<Bilet> findAllByPatnikIdAndStatus(Long id, BILET_STATUS status) {
55 Korisnik korisnik = korisnikService.findById(id);
56 return new ArrayList<>();
57 }
58
59 @Override
60 public Bilet buy(Long tipbilet, LocalDateTime now, BILET_STATUS biletStatus, String name) {
61 Tipbilet tipbilet1 = tipBIletRepository.findById(tipbilet).orElseThrow(InvalidTipBiletIdException::new);
62 Patnik korisnik = patnikService.loadUserByEmail(name);
63 Bilet bilet = new Bilet();
64 bilet.setBStatus(biletStatus);
65 bilet.setTipbiletByTbId(tipbilet1);
66 bilet.setBDatumNaKupuvanje(Timestamp.valueOf(now));
67 bilet.setKorisnikByPatnikKId(korisnik);
68 return biletRepository.save(bilet);
69 }
70
71 @Override
72 public List<Bilet> findAllByPatnikEmail(String email) {
73 Patnik patnik = patnikService.loadUserByEmail(email);
74 return patnik.getBiletsByKId();
75 }
76
77 @Override
78 public Bilet findBybIdAndPatnikEmail(Long bId, String email) {
79 Patnik patnik = patnikService.loadUserByEmail(email);
80 return biletRepository.findByBIdAndAndKorisnikByPatnikKId(bId, patnik).orElseThrow(InvalidBiletIdException::new);
81 }
82
83 @Override
84 public Bilet activate(Long bId) {
85 Bilet bilet = this.findById(bId);
86 bilet.setBStatus(BILET_STATUS.ACTIVE);
87 return biletRepository.save(bilet);
88 }
89
90 @Override
91 public Bilet findById(Long bId) {
92 return biletRepository.findById(bId).orElseThrow(RuntimeException::new);
93 }
94
95 @Override
96 public Bilet finish(Long bId) {
97 Bilet bilet = this.findById(bId);
98 bilet.setBStatus(BILET_STATUS.EXPIRED);
99 return biletRepository.save(bilet);
100 }
101
102 @Override
103 public boolean checkExpiration(Long bId) {
104 Bilet bilet = this.findById(bId);
105 LocalDateTime timeBought = bilet.getBDatumNaKupuvanje().toLocalDateTime();
106
107 if(timeBought.plusSeconds(bilet.getTipbiletByTbId().getTbTrajnost()).isBefore(LocalDateTime.now())){
108 bilet.setBStatus(BILET_STATUS.EXPIRED);
109 biletRepository.save(bilet);
110 return true;
111 }
112
113 return false;
114 }
115
116// @Override
117// public void encode(){
118// List<Korisnik> all = korisnikRepository.findAll();
119// all.forEach(p -> p.setKLozinka(passwordEncoder.encode(p.getKLozinka())));
120// korisnikRepository.saveAll(all);
121// System.out.println("DONE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
122// }
123
124
125}
Note: See TracBrowser for help on using the repository browser.