package parkup.configs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import parkup.configs.email.EmailSender; import parkup.configs.email.EmailValidator; import parkup.configs.token.ConfirmationTokenRP; import parkup.configs.token.ConfirmationTokenService; import parkup.entities.RegistriranParkirac; import parkup.services.RegistriranParkiracService; import javax.transaction.Transactional; import java.time.LocalDateTime; @Service public class RegistrationServiceRP { private final RegistriranParkiracService registriranParkiracService; private final EmailValidator emailValidator; private final ConfirmationTokenService confirmationTokenService; private final EmailSender emailSender; @Autowired public RegistrationServiceRP(RegistriranParkiracService registriranParkiracService, EmailValidator emailValidator, ConfirmationTokenService confirmationTokenService, EmailSender emailSender) { this.registriranParkiracService = registriranParkiracService; this.emailValidator = emailValidator; this.confirmationTokenService = confirmationTokenService; this.emailSender = emailSender; } public String register(RegistrationRequest request) { boolean isValidEmail = emailValidator. test(request.getEmail()); if (!isValidEmail) { throw new IllegalStateException("email not valid"); } String token = registriranParkiracService.signUpRegistriranParkirac( new RegistriranParkirac( request.getFirstName(), request.getLastName(), request.getEmail(), request.getPassword(), request.getMobile() ) ); String link = "http://localhost:8080/registriranParkirac/registration/confirm?token=" + token; emailSender.send( request.getEmail(), buildEmail(request.getFirstName(), link)); return token; } @Transactional public String confirmToken(String token) { ConfirmationTokenRP confirmationTokenRP = confirmationTokenService .getTokenRP(token) .orElseThrow(() -> new IllegalStateException("token not found")); if (confirmationTokenRP.getConfirmedAt() != null) { throw new IllegalStateException("email already confirmed"); } LocalDateTime expiredAt = confirmationTokenRP.getExpiresAt(); if (expiredAt.isBefore(LocalDateTime.now())) { throw new IllegalStateException("token expired"); } confirmationTokenService.setConfirmedAtRP(token); registriranParkiracService.enableRegistriranParkirac(confirmationTokenRP.getRegistriranParkirac().getEmail()); return "confirmed"; } private String buildEmail(String name, String link) { return "
\n" + "\n" + "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + "
\n" + " \n" + " \n" + " \n" + " \n" + " \n" + "
\n" + " \n" + " \n" + " \n" + " \n" + " \n" + "
\n" + " \n" + " \n" + " Confirm your email\n" + "
\n" + " \n" + "
\n" + " \n" + "
\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "
\n" + " \n" + " \n" + " \n" + " \n" + " \n" + "
\n" + " \n" + "
\n" + "\n" + "\n" + "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "


\n" + " \n" + "

Hi " + name + ",

Thank you for registering. Please click on the below link to activate your account:

Activate Now

\n Link will expire in 15 minutes.

See you soon

" + " \n" + "


\n" + "\n" + "
"; } }