import java.util.Objects;

public class FormulirPendaftaran {
    public static void main(String[] args) {
        // Batas sistem: masukan pengguna divalidasi sebelum masuk domain
        Peserta budi = Pendaftaran.daftar("Budi", "Budi@Example.com", 17);
        System.out.println("Terdaftar: " + budi.nama() + " (" + budi.email() + ")");

        try {
            Pendaftaran.daftar("Siti", "bukan-email", 17);
        } catch (IllegalArgumentException e) {
            System.out.println("Ditolak: " + e.getMessage());
        }

        try {
            Pendaftaran.daftar("Dewi", "dewi@example.com", 12);
        } catch (IllegalArgumentException e) {
            System.out.println("Ditolak: " + e.getMessage());
        }
    }
}

record Peserta(String nama, String email, int umur) {
}

class Pendaftaran {
    static Peserta daftar(String nama, String email, int umur) {
        Objects.requireNonNull(nama, "nama tidak boleh null");
        Objects.requireNonNull(email, "email tidak boleh null");
        if (nama.isBlank()) {
            throw new IllegalArgumentException("nama tidak boleh kosong");
        }
        if (!email.contains("@") || email.startsWith("@") || email.endsWith("@")) {
            throw new IllegalArgumentException("format email tidak valid: " + email);
        }
        if (umur < 13) {
            throw new IllegalArgumentException("umur minimal 13: " + umur);
        }
        return new Peserta(nama.trim(), email.toLowerCase(), umur);
    }
}
