source: sources/app/src/main/java/parkup/services/AdministratorService.java@ 9dd526f

Last change on this file since 9dd526f was 9dd526f, checked in by andrejTavchioski <andrej.tavchioski@…>, 2 years ago

backend refactoring

  • Property mode set to 100644
File size: 5.0 KB
Line 
1package parkup.services;
2
3import java.util.List;
4import java.util.Objects;
5import java.util.Optional;
6import java.util.UUID;
7import javax.transaction.Transactional;
8import org.springframework.beans.factory.annotation.Autowired;
9import org.springframework.security.core.userdetails.UserDetails;
10import org.springframework.security.core.userdetails.UserDetailsService;
11import org.springframework.security.core.userdetails.UsernameNotFoundException;
12import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
13import org.springframework.stereotype.Service;
14import parkup.configs.email.EmailValidator;
15import parkup.configs.token.ConfirmationTokenService;
16import parkup.entities.Administrator;
17import parkup.repositories.AdministratorRepository;
18
19@Service
20public class AdministratorService implements UserDetailsService {
21 private final AdministratorRepository administratorRepository;
22 private final BCryptPasswordEncoder bCryptPasswordEncoder;
23
24
25 @Autowired
26 public AdministratorService(AdministratorRepository administratorRepository, BCryptPasswordEncoder bCryptPasswordEncoder) {
27 this.administratorRepository = administratorRepository;
28 this.bCryptPasswordEncoder = bCryptPasswordEncoder;
29 }
30
31 public List<Administrator> getAllAdministrators() {
32 return this.administratorRepository.findAll();
33 }
34
35 public Administrator findById(int administratorId) {
36 Optional<Administrator> administrator = Optional.ofNullable(this.administratorRepository.findByAdministratorId(administratorId));
37 return administrator.orElse(null);
38 }
39
40 public Optional<Administrator> addAdministrator(Administrator administrator) {
41 Optional<Administrator> administratorOpt = this.administratorRepository.findAdministratorByEmail(administrator.getEmail());
42 if (administratorOpt.isPresent()) {
43 throw new IllegalStateException("Email already taken, try adding an administrator with a different valid email address");
44 } else {
45 if (administrator.getEmail() != null && administrator.getEmail().length() > 1 && administrator.getEmail().contains("@")) {
46 administrator.setPassword(bCryptPasswordEncoder.encode(administrator.getPassword()));
47 this.administratorRepository.save(administrator);
48 }
49 else {
50 throw new IllegalStateException("email not valid");
51 }
52 }
53 return administratorOpt;
54 }
55
56 @Transactional
57 public Administrator updateAdministrator(int administratorId, String firstName, String lastName, String mobile, String email) {
58 Optional<Administrator> administratorOpt = Optional.ofNullable(this.administratorRepository.findByAdministratorId(administratorId));
59 if (administratorOpt.isPresent()) {
60 Administrator administratorNov = this.administratorRepository.findByAdministratorId(administratorId);
61 if (email != null && email.length() > 1 && email.contains("@") && !Objects.equals(administratorNov.getEmail(), email)) {
62 Optional<Administrator> userOpt1 = this.administratorRepository.findAdministratorByEmail(email);
63 if (userOpt1.isPresent()) {
64 throw new IllegalStateException("email taken");
65 }
66 administratorNov.setEmail(email);
67 }else{
68 throw new IllegalStateException("email not valid");
69 }
70
71 if (firstName != null && firstName.length() > 1 && !Objects.equals(administratorNov.getFirstName(), firstName)) {
72 administratorNov.setFirstName(firstName);
73 }
74
75 if (lastName != null && lastName.length() > 1 && !Objects.equals(administratorNov.getLastName(), lastName)) {
76 administratorNov.setLastName(lastName);
77 }
78
79 if (mobile != null && mobile.length() > 0 && !Objects.equals(administratorNov.getMobile(), mobile)) {
80 administratorNov.setMobile(mobile);
81 }
82 return administratorNov;
83 }
84 else {
85 throw new IllegalStateException("Administrator doesn't exist, therefore can't be updated");
86 }
87
88 }
89
90 public Optional<Administrator> deleteAdministrator(int administratorId) {
91 Optional<Administrator> administratorOpt = Optional.ofNullable(this.administratorRepository.findByAdministratorId(administratorId));
92 if (administratorOpt.isPresent()) {
93 this.administratorRepository.deleteByAdministratorId(administratorId);
94 } else {
95 throw new IllegalStateException("Administrator doesn't exist, therefore can't be deleted");
96 }
97 return administratorOpt;
98 }
99
100 @Override
101 public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
102 return administratorRepository.findAdministratorByEmail(email)
103 .orElseThrow(() ->
104 new UsernameNotFoundException("Email not found"));
105
106 }
107
108 public int enableAdministrator(String email) {
109 return administratorRepository.enableAdministrator(email);
110 }
111}
Note: See TracBrowser for help on using the repository browser.