Ignore:
Timestamp:
11/11/21 11:55:43 (3 years ago)
Author:
andrejTavchioski <andrej.tavchioski@…>
Branches:
master
Children:
2ace8f0
Parents:
3a58bd6
Message:

fixed deleteVraboten and deleteRegistriranParkirac

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sources/app/src/main/java/parkup/services/RegistriranParkiracService.java

    r3a58bd6 r97fbc67  
    11package parkup.services;
    22
     3import java.time.LocalDateTime;
    34import java.util.List;
    45import java.util.Objects;
    56import java.util.Optional;
     7import java.util.UUID;
    68import javax.transaction.Transactional;
    79import org.springframework.beans.factory.annotation.Autowired;
     10import org.springframework.data.jpa.repository.Modifying;
     11import org.springframework.security.core.userdetails.UserDetails;
     12import org.springframework.security.core.userdetails.UserDetailsService;
     13import org.springframework.security.core.userdetails.UsernameNotFoundException;
     14import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    815import org.springframework.stereotype.Service;
     16import parkup.configs.email.EmailValidator;
     17import parkup.configs.token.ConfirmationTokenRP;
     18import parkup.configs.token.ConfirmationTokenService;
     19import parkup.data.Tablicka;
    920import parkup.entities.RegistriranParkirac;
    1021import parkup.repositories.RegistriranParkiracRepository;
    1122
    1223@Service
    13 public class RegistriranParkiracService {
     24public class RegistriranParkiracService implements UserDetailsService {
    1425    private final RegistriranParkiracRepository registriranParkiracRepository;
     26    private final BCryptPasswordEncoder bCryptPasswordEncoder;
     27    private final ConfirmationTokenService confirmationTokenService;
     28    private EmailValidator emailValidator;
    1529
    1630    @Autowired
    17     public RegistriranParkiracService(RegistriranParkiracRepository registriranParkiracRepository) {
     31    public RegistriranParkiracService(RegistriranParkiracRepository registriranParkiracRepository, BCryptPasswordEncoder bCryptPasswordEncoder, ConfirmationTokenService confirmationTokenService) {
    1832        this.registriranParkiracRepository = registriranParkiracRepository;
     33        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
     34        this.confirmationTokenService = confirmationTokenService;
    1935    }
    2036
     
    2339    }
    2440
    25     public void addRegPark(RegistriranParkirac regPark) {
     41    public Optional<RegistriranParkirac> addRegPark(RegistriranParkirac regPark) {
    2642        Optional<RegistriranParkirac> regParkOpt = this.registriranParkiracRepository.findRegistriranParkiracByEmail(regPark.getEmail());
    2743        if (regParkOpt.isPresent()) {
    2844            throw new IllegalStateException("Email already taken, try adding a registriranParkirac with a different valid email address");
    2945        } else {
    30             System.out.println(regPark);
    31             this.registriranParkiracRepository.save(regPark);
     46            if (regPark.getEmail() != null && regPark.getEmail().length() > 1 && regPark.getEmail().contains("@")) {
     47                //System.out.println(regPark);
     48                this.registriranParkiracRepository.save(regPark);
     49            }
     50            else {
     51                throw new IllegalStateException("email not valid");
     52            }
    3253        }
     54        return regParkOpt;
    3355    }
    3456
    3557    @Transactional
    36     public void updateRegPark(int regParkId, String name, String surname, String mobile, String email) {
     58    public RegistriranParkirac updateRegPark(int regParkId, String name, String surname, String mobile, String email,List<Tablicka> regTablicki) {
    3759        Optional<RegistriranParkirac> regParkOpt = Optional.ofNullable(this.registriranParkiracRepository.findByRegParkId(regParkId));
    3860        if (regParkOpt.isPresent()) {
     
    5880                regParkNov.setMobile(mobile);
    5981            }
     82            regParkNov.setRegTablicki(regTablicki);
     83            return regParkNov;
     84        }else{
     85            throw new IllegalStateException("RegistriranParkirac doesn't exist, therefore can't be updated");
    6086        }
    6187    }
    6288
    63     public void deleteRegPark(int regParkId) {
     89    @Transactional
     90    @Modifying
     91    public Optional<RegistriranParkirac> deleteRegPark(int regParkId) {
    6492        Optional<RegistriranParkirac> regPark = Optional.ofNullable(this.registriranParkiracRepository.findByRegParkId(regParkId));
    6593        if (regPark.isPresent()) {
     94            //TODO da povikamo metod od ConfirmationTokenService za brisenje na ConfirmationTokenRP *DONE
     95            //TODO da se izbrisat tablicki i da ne se dupliraat istite tablicki pri update ili add na nov registriranParkirac
     96            this.confirmationTokenService.deleteByRegistriranParkirac_RegParkId(regParkId);
    6697            this.registriranParkiracRepository.deleteByRegParkId(regParkId);
    6798        } else {
    6899            throw new IllegalStateException("RegistriranParkirac doesn't exist, therefore can't be deleted");
    69100        }
     101        return regPark;
    70102    }
    71103
     
    74106        return regPark.orElse(null);
    75107    }
     108
     109    @Override
     110    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
     111        return registriranParkiracRepository.findRegistriranParkiracByEmail(email)
     112                .orElseThrow(() ->
     113                        new UsernameNotFoundException("Email not found"));
     114
     115    }
     116
     117    public String signUpRegistriranParkirac(RegistriranParkirac registriranParkirac){
     118        boolean registriranParkiracExists = registriranParkiracRepository
     119                .findRegistriranParkiracByEmail(registriranParkirac.getEmail())
     120                .isPresent();
     121        if(registriranParkiracExists){
     122            // TODO check if attributes are the same and
     123            // TODO if email not confirmed send confirmation email
     124
     125            throw new IllegalStateException("Email already taken");
     126        }
     127
     128        String encodedPassword = bCryptPasswordEncoder
     129                .encode(registriranParkirac.getPassword());
     130
     131        registriranParkirac.setPassword(encodedPassword);
     132
     133        registriranParkiracRepository.save(registriranParkirac);
     134
     135        // TODO: Send confirmation token
     136
     137        String token = UUID.randomUUID().toString();
     138        ConfirmationTokenRP confirmationTokenRP = new ConfirmationTokenRP(
     139                token,
     140                LocalDateTime.now(),
     141                LocalDateTime.now().plusMinutes(15),
     142                registriranParkirac
     143        );
     144
     145        confirmationTokenService.saveConfirmationTokenRP(confirmationTokenRP);
     146
     147        // TODO: SEND EMAIL
     148
     149        return token;
     150    }
     151
     152    public int enableRegistriranParkirac(String email) {
     153        return registriranParkiracRepository.enableRegistriranParkirac(email);
     154    }
    76155}
Note: See TracChangeset for help on using the changeset viewer.