- Timestamp:
- 11/04/21 16:59:49 (3 years ago)
- Branches:
- master
- Children:
- 9504a09
- Parents:
- ce6ad22
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sources/app/src/main/java/parkup/services/VrabotenService.java
rce6ad22 rf6bc52d 1 1 package parkup.services; 2 2 3 import java.util.List; 4 import java.util.Objects; 5 import java.util.Optional; 6 import java.util.UUID; 3 import java.time.LocalDateTime; 4 import java.util.*; 7 5 import javax.transaction.Transactional; 8 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.data.jpa.repository.Modifying; 8 import org.springframework.security.core.userdetails.UserDetails; 9 import org.springframework.security.core.userdetails.UserDetailsService; 10 import org.springframework.security.core.userdetails.UsernameNotFoundException; 11 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 9 12 import org.springframework.stereotype.Service; 13 import parkup.configs.token.ConfirmationTokenW; 14 import parkup.configs.token.ConfirmationTokenService; 10 15 import parkup.entities.Vraboten; 11 16 import parkup.repositories.VrabotenRepository; 17 import parkup.data.VrabotenDemo; 12 18 13 19 @Service 14 public class VrabotenService {20 public class VrabotenService implements UserDetailsService { 15 21 private final VrabotenRepository vrabotenRepository; 22 private final BCryptPasswordEncoder bCryptPasswordEncoder; 23 private final ConfirmationTokenService confirmationTokenService; 16 24 17 25 @Autowired 18 public VrabotenService(VrabotenRepository vrabotenRepository ) {26 public VrabotenService(VrabotenRepository vrabotenRepository, BCryptPasswordEncoder bCryptPasswordEncoder, ConfirmationTokenService confirmationTokenService) { 19 27 this.vrabotenRepository = vrabotenRepository; 28 this.bCryptPasswordEncoder = bCryptPasswordEncoder; 29 this.confirmationTokenService = confirmationTokenService; 20 30 } 21 31 … … 29 39 } 30 40 31 public void addVraboten(Vraboten vraboten) { 41 public List<VrabotenDemo> getAllVraboteniDemos() { 42 List<Vraboten> vraboteni = this.vrabotenRepository.findAll(); 43 List<VrabotenDemo> vrabotenDemos = new ArrayList<>(); 44 for (Vraboten v : vraboteni){ 45 VrabotenDemo vd = new VrabotenDemo(v.getFirstName(), v.getLastName(), v.getEmail()); 46 vrabotenDemos.add(vd); 47 } 48 return vrabotenDemos; 49 } 50 51 public Optional<Vraboten> addVraboten(Vraboten vraboten) { 32 52 Optional<Vraboten> vrabotenOpt = this.vrabotenRepository.findVrabotenByEmail(vraboten.getEmail()); 33 53 if (vrabotenOpt.isPresent()) { 34 54 throw new IllegalStateException("Email already taken, try adding a vraboten with a different valid email address"); 35 55 } else { 36 System.out.println(vraboten); 37 this.vrabotenRepository.save(vraboten); 56 if (vraboten.getEmail() != null && vraboten.getEmail().length() > 1 && vraboten.getEmail().contains("@")) { 57 //System.out.println(vraboten); 58 this.vrabotenRepository.save(vraboten); 59 } 60 else{ 61 throw new IllegalStateException("email not valid"); 62 } 38 63 } 64 return vrabotenOpt; 39 65 } 40 66 41 67 @Transactional 42 public void updateVraboten(int vrabotenId, String firstName, String lastName, String mobile, String email) {68 public Vraboten updateVraboten(int vrabotenId, String firstName, String lastName, String mobile, String email, String status) { 43 69 Optional<Vraboten> vrabotenOpt = Optional.ofNullable(this.vrabotenRepository.findByVrabotenId(vrabotenId)); 44 70 if (vrabotenOpt.isPresent()) { … … 49 75 throw new IllegalStateException("email taken"); 50 76 } 51 52 77 vrabotenNov.setEmail(email); 78 } else { 79 throw new IllegalStateException("email not valid"); 53 80 } 54 81 … … 64 91 vrabotenNov.setMobile(mobile); 65 92 } 93 94 if (mobile != null && status.length() > 0 && !Objects.equals(vrabotenNov.getStatus(), status)) { 95 if(status.equals("raboti") || status.equals("ne raboti") || status.equals("na odmor") || status.equals("na boleduvanje")){ 96 vrabotenNov.setStatus(status); 97 }else{ 98 throw new IllegalStateException("Please enter one of the following statuses: 'raboti', 'ne raboti', 'na odmor', 'na boleduvanje'"); 99 } 100 } 101 102 return vrabotenNov; 66 103 } 67 } 104 else{ 105 throw new IllegalStateException("Vraboten doesn't exist, therefore can't be updated"); 106 } 107 }//za menjanje password da se implementira 68 108 69 public void deleteVraboten(int vrabotenId) { 109 @Modifying 110 @Transactional 111 public Optional<Vraboten> deleteVraboten(int vrabotenId) { 70 112 Optional<Vraboten> vrabotenOpt = Optional.ofNullable(this.vrabotenRepository.findByVrabotenId(vrabotenId)); 71 113 if (vrabotenOpt.isPresent()) { 114 //TODO da povikamo metod od ConfirmationTokenService za brisenje na ConfirmationTokenW 115 this.confirmationTokenService.deleteByVraboten_VrabotenId(vrabotenId); 72 116 this.vrabotenRepository.deleteByVrabotenId(vrabotenId); 73 117 } else { 74 118 throw new IllegalStateException("Vraboten doesn't exist, therefore can't be deleted"); 75 119 } 120 return vrabotenOpt; 76 121 } 122 123 @Transactional 124 public void lockVrabotenAcc(int vrabotenId) { 125 Vraboten vrabotenOpt = this.vrabotenRepository.findByVrabotenId(vrabotenId); 126 if (vrabotenOpt!=null) { 127 vrabotenOpt.lockVraboten(); 128 } else { 129 throw new IllegalStateException("Vraboten doesn't exist, therefore his account can't be locked/unlocked"); 130 } 131 }//dali treba da stoi @Transactional gore nad funkcijata? 132 133 @Override 134 public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { 135 return vrabotenRepository.findVrabotenByEmail(email) 136 .orElseThrow(() -> 137 new UsernameNotFoundException("Email not found")); 138 } 139 public String signUpVraboten(Vraboten vraboten){ 140 boolean vrabotenExists = vrabotenRepository 141 .findVrabotenByEmail(vraboten.getEmail()) 142 .isPresent(); 143 if(vrabotenExists){ 144 // TODO check if attributes are the same and 145 // TODO if email not confirmed send confirmation email 146 147 throw new IllegalStateException("Email already taken"); 148 } 149 150 String encodedPassword = bCryptPasswordEncoder 151 .encode(vraboten.getPassword()); 152 153 vraboten.setPassword(encodedPassword); 154 155 vrabotenRepository.save(vraboten); 156 157 // TODO: Send confirmation token 158 159 String token = UUID.randomUUID().toString(); 160 ConfirmationTokenW confirmationTokenW = new ConfirmationTokenW( 161 token, 162 LocalDateTime.now(), 163 LocalDateTime.now().plusMinutes(15), 164 vraboten 165 ); 166 167 confirmationTokenService.saveConfirmationTokenW(confirmationTokenW); 168 169 // TODO: SEND EMAIL 170 171 return token; 172 } 173 174 public int enableVraboten(String email) { 175 return vrabotenRepository.enableVraboten(email); 176 } 177 77 178 }
Note:
See TracChangeset
for help on using the changeset viewer.