source: sources/app/src/main/java/parkup/services/GuestService.java

Last change on this file was bc20307, checked in by Tasevski2 <39170279+Tasevski2@…>, 2 years ago

Push before video

  • Property mode set to 100644
File size: 2.4 KB
Line 
1package parkup.services;
2
3import java.util.List;
4import java.util.Optional;
5import org.springframework.beans.factory.annotation.Autowired;
6import org.springframework.security.core.userdetails.UserDetails;
7import org.springframework.security.core.userdetails.UserDetailsService;
8import org.springframework.security.core.userdetails.UsernameNotFoundException;
9import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
10import org.springframework.stereotype.Service;
11import parkup.entities.Guest;
12import parkup.repositories.GuestRepository;
13
14@Service
15public class GuestService implements UserDetailsService {
16 private final GuestRepository guestRepository;
17 private final BCryptPasswordEncoder passwordEncoder;
18
19 @Autowired
20 public GuestService(GuestRepository guestRepository, BCryptPasswordEncoder passwordEncoder) {
21 this.guestRepository = guestRepository;
22 this.passwordEncoder = passwordEncoder;
23 }
24
25 public List<Guest> getGuests() {
26 return this.guestRepository.findAll();
27 }
28
29 public Guest findById(int guestId) {
30 Optional<Guest> guest = Optional.ofNullable(this.guestRepository.findByGuestId(guestId));
31 return guest.orElse(null);
32 }
33
34 public Guest addGuest(Guest guest) {
35 Optional<Guest> guestOpt = this.guestRepository.findGuestByEmail(guest.getEmail());
36 if (guestOpt.isPresent()) {
37 throw new IllegalStateException("Email already taken, try adding a guest with a different valid email address");
38 } else {
39 double random = Math.random()*10000;
40 guest.setPassword(passwordEncoder.encode(Integer.toString((int)random)));
41 this.guestRepository.save(guest);
42 guest.setPassword(Integer.toString((int)random));
43 return guest;
44 }
45 }
46
47 public void deleteGuest(int guestId) {
48 Optional<Guest> guest = Optional.ofNullable(this.guestRepository.findByGuestId(guestId));
49 if (guest.isPresent()) {
50 this.guestRepository.deleteByGuestId(guestId);
51 } else {
52 throw new IllegalStateException("Guest doesn't exist, therefore can't be deleted");
53 }
54 }
55
56 @Override
57 public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
58 return guestRepository.findGuestByEmail(s)
59 .orElseThrow(() ->
60 new UsernameNotFoundException("Email not found"));
61 }
62}
Note: See TracBrowser for help on using the repository browser.