source: sources/app/src/main/java/parkup/services/AdministratorService.java@ 97fbc67

Last change on this file since 97fbc67 was 97fbc67, checked in by andrejTavchioski <andrej.tavchioski@…>, 3 years ago

fixed deleteVraboten and deleteRegistriranParkirac

  • Property mode set to 100644
File size: 6.6 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 private final ConfirmationTokenService confirmationTokenService;
24 private EmailValidator emailValidator;
25
26 @Autowired
27 public AdministratorService(AdministratorRepository administratorRepository, BCryptPasswordEncoder bCryptPasswordEncoder, ConfirmationTokenService confirmationTokenService) {
28 this.administratorRepository = administratorRepository;
29 this.bCryptPasswordEncoder = bCryptPasswordEncoder;
30 this.confirmationTokenService = confirmationTokenService;
31 }
32
33 public List<Administrator> getAllAdministrators() {
34 return this.administratorRepository.findAll();
35 }
36
37 public Administrator findById(int administratorId) {
38 Optional<Administrator> administrator = Optional.ofNullable(this.administratorRepository.findByAdministratorId(administratorId));
39 return administrator.orElse(null);
40 }
41
42 public Optional<Administrator> addAdministrator(Administrator administrator) {
43 Optional<Administrator> administratorOpt = this.administratorRepository.findAdministratorByEmail(administrator.getEmail());
44 if (administratorOpt.isPresent()) {
45 throw new IllegalStateException("Email already taken, try adding an administrator with a different valid email address");
46 } else {
47 if (administrator.getEmail() != null && administrator.getEmail().length() > 1 && administrator.getEmail().contains("@")) {
48 //System.out.println(regPark);
49 this.administratorRepository.save(administrator);
50 }
51 else {
52 throw new IllegalStateException("email not valid");
53 }
54 }
55 return administratorOpt;
56 }
57
58 @Transactional
59 public Administrator updateAdministrator(int administratorId, String firstName, String lastName, String mobile, String email) {
60 Optional<Administrator> administratorOpt = Optional.ofNullable(this.administratorRepository.findByAdministratorId(administratorId));
61 if (administratorOpt.isPresent()) {
62 Administrator administratorNov = this.administratorRepository.findByAdministratorId(administratorId);
63 if (email != null && email.length() > 1 && email.contains("@") && !Objects.equals(administratorNov.getEmail(), email)) {
64 Optional<Administrator> userOpt1 = this.administratorRepository.findAdministratorByEmail(email);
65 if (userOpt1.isPresent()) {
66 throw new IllegalStateException("email taken");
67 }
68 administratorNov.setEmail(email);
69 }else{
70 throw new IllegalStateException("email not valid");
71 }
72
73 if (firstName != null && firstName.length() > 1 && !Objects.equals(administratorNov.getFirstName(), firstName)) {
74 administratorNov.setFirstName(firstName);
75 }
76
77 if (lastName != null && lastName.length() > 1 && !Objects.equals(administratorNov.getLastName(), lastName)) {
78 administratorNov.setLastName(lastName);
79 }
80
81 if (mobile != null && mobile.length() > 0 && !Objects.equals(administratorNov.getMobile(), mobile)) {
82 administratorNov.setMobile(mobile);
83 }
84 return administratorNov;
85 }
86 else {
87 throw new IllegalStateException("Administrator doesn't exist, therefore can't be updated");
88 }
89
90 }
91
92 public Optional<Administrator> deleteAdministrator(int administratorId) {
93 Optional<Administrator> administratorOpt = Optional.ofNullable(this.administratorRepository.findByAdministratorId(administratorId));
94 if (administratorOpt.isPresent()) {
95 this.administratorRepository.deleteByAdministratorId(administratorId);
96 } else {
97 throw new IllegalStateException("Administrator doesn't exist, therefore can't be deleted");
98 }
99 return administratorOpt;
100 }
101
102 @Override
103 public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
104 return administratorRepository.findAdministratorByEmail(email)
105 .orElseThrow(() ->
106 new UsernameNotFoundException("Email not found"));
107
108 }
109
110 //public String register(RegistrationRequest request) {
111 // boolean isValidEmail = emailValidator.test(request.getEmail());
112 // if (!isValidEmail){
113 // throw new IllegalStateException("Email not valid");
114 // }
115 // return "it works";
116 //}
117
118 public String signUpAdministrator(Administrator administrator){
119 boolean administratorExists = administratorRepository
120 .findAdministratorByEmail(administrator.getEmail())
121 .isPresent();
122 if(administratorExists){
123 // TODO check if attributes are the same and
124 // TODO if email not confirmed send confirmation email
125
126 throw new IllegalStateException("Email already taken");
127 }
128
129 String encodedPassword = bCryptPasswordEncoder
130 .encode(administrator.getPassword());
131
132 administrator.setPassword(encodedPassword);
133
134 administratorRepository.save(administrator);
135
136 // TODO: Send confirmation token
137
138 String token = UUID.randomUUID().toString();
139// ConfirmationTokenRP confirmationToken = new ConfirmationTokenRP(
140// token,
141// LocalDateTime.now(),
142// LocalDateTime.now().plusMinutes(15),
143// administrator
144// );
145
146 //confirmationTokenService.saveConfirmationToken(confirmationToken);
147
148 // TODO: SEND EMAIL
149
150 return token;
151 }
152
153 public int enableAdministrator(String email) {
154 return administratorRepository.enableAdministrator(email);
155 }
156}
Note: See TracBrowser for help on using the repository browser.