source: src/main/java/com/project/beautycenter/service/impl/RezervacijaServiceImpl.java

Last change on this file was 850b344, checked in by Tamara Simikj <tamara.simic12@…>, 2 years ago

Initial commit

  • Property mode set to 100644
File size: 4.0 KB
RevLine 
[850b344]1package com.project.beautycenter.service.impl;
2
3import com.project.beautycenter.model.*;
4import com.project.beautycenter.model.exceptions.InvalidAppointmentIdException;
5import com.project.beautycenter.repository.*;
6import com.project.beautycenter.service.RezervacijaService;
7import org.springframework.stereotype.Service;
8
9import javax.transaction.Transactional;
10import java.util.List;
11
12@Service
13public class RezervacijaServiceImpl implements RezervacijaService {
14 private final RezervacijaRepository rezervacijaRepository;
15 private final TerminiRepository terminiRepository;
16 private final KlientiRepository klientiRepository;
17 private final RezervacijaUslugiRepository repository;
18 private final UslugiRepository uslugiRepository;
19
20 public RezervacijaServiceImpl(RezervacijaRepository rezervacijaRepository,
21 TerminiRepository terminiRepository,
22 KlientiRepository klientiRepository,
23 RezervacijaUslugiRepository repository,
24 UslugiRepository uslugiRepository) {
25 this.rezervacijaRepository = rezervacijaRepository;
26 this.terminiRepository = terminiRepository;
27 this.klientiRepository = klientiRepository;
28 this.repository = repository;
29 this.uslugiRepository = uslugiRepository;
30 }
31
32 @Override
33 public List<Rezervacija> listAll() {
34 return this.rezervacijaRepository.findAll();
35 }
36
37 @Override
38 public Rezervacija findbyId(Integer id) {
39 return this.rezervacijaRepository.findById(id).orElseThrow(InvalidAppointmentIdException::new);
40 }
41
42 @Override
43 public Rezervacija create(Klienti klient, Termini termin, Uplata uplata) {
44 Rezervacija rezervacija = new Rezervacija(klient, termin, uplata);
45 return this.rezervacijaRepository.save(rezervacija);
46 }
47
48 @Override
49 public Rezervacija create(Integer klientId, Integer terminId, List<Uslugi> uslugi) {
50 Klienti klient = this.klientiRepository.getById(klientId);
51 Termini termin = this.terminiRepository.getById(terminId);
52 Rezervacija rezervacija = new Rezervacija();
53 rezervacija.setKlienti(klient);
54 rezervacija.setTermini(termin);
55 this.rezervacijaRepository.save(rezervacija);
56 for (int i = 0; i < uslugi.size(); i++) {
57 RezervacijaUslugiId rUid = new RezervacijaUslugiId(rezervacija.getId(), uslugi.get(i).getId());
58 RezervacijaUslugi rezU = new RezervacijaUslugi(rUid, rezervacija, uslugi.get(i));
59 this.repository.save(rezU);
60 }
61 return rezervacija;
62 }
63
64 @Override
65 @Transactional
66 public Rezervacija update(Integer id, List<String> uslugiIds, Integer klientId, Integer terminId) {
67 Rezervacija rezervacija = this.findbyId(id);
68 Klienti klient = this.klientiRepository.getById(klientId);
69 Termini termin = this.terminiRepository.getById(terminId);
70 rezervacija.setKlienti(klient);
71 rezervacija.setTermini(termin);
72 this.repository.deleteAllByBrRez(rezervacija);
73 rezervacija = this.rezervacijaRepository.save(rezervacija);
74 this.addUslugiForRezervacija(rezervacija, uslugiIds);
75 return rezervacija;
76 }
77
78 @Override
79 @Transactional
80 public Rezervacija delete(Integer id) {
81 Rezervacija rezervacija = this.findbyId(id);
82 this.repository.deleteAllByBrRez(rezervacija);
83 this.rezervacijaRepository.delete(rezervacija);
84 return rezervacija;
85 }
86
87 @Transactional
88 protected void addUslugiForRezervacija(Rezervacija rezervacija, List<String> uslugiIds) {
89 if (uslugiIds != null) {
90 uslugiIds.stream()
91 .map(this::findUslugaById)
92 .forEach(usluga -> this.repository
93 .save(new RezervacijaUslugi((new RezervacijaUslugiId(rezervacija.getId(), usluga.getId()))
94 , rezervacija, usluga)));
95 }
96 }
97
98 private Uslugi findUslugaById(String id) {
99 return this.uslugiRepository.getById(id);
100 }
101
102}
Note: See TracBrowser for help on using the repository browser.