UserRequest.java

package cz.vsb.crm.dto;

import cz.vsb.crm.model.User;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;

public record UserRequest(
        @NotBlank @Size(min = 3, max = 255) String username,
        @NotBlank @Pattern(regexp = "Admin|Manager|User",
                message = "role must be one of: Admin, Manager, User") String role,
        @NotBlank @Email String email,
        @NotBlank @Size(min = 8, max = 255) String password) {

    public User toEntity() {
        User user = new User();
        applyTo(user);
        return user;
    }

    public void applyTo(User user) {
        user.setUsername(username);
        user.setRole(role);
        user.setEmail(email);
        user.setPassword(password);
    }
}