diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 261755a..57a31f1 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,10 @@
-
+
+
+
-
@@ -132,7 +133,7 @@
"git-widget-placeholder": "master",
"ignore.virus.scanning.warn.message": "true",
"kotlin-language-version-configured": "true",
- "last_opened_file_path": "P:/Code/Plugins/forms",
+ "last_opened_file_path": "P:/Code/Plugins/forms/src/main/java/com/alttd/forms/controlers/event_apply",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@@ -156,6 +157,9 @@
+
+
+
@@ -346,8 +350,8 @@
-
-
+
+
@@ -393,7 +397,8 @@
-
+
+
@@ -691,7 +696,15 @@
1723393877624
-
+
+
+ 1723394857549
+
+
+
+ 1723394857549
+
+
@@ -709,7 +722,6 @@
-
@@ -734,7 +746,8 @@
-
+
+
diff --git a/src/main/java/com/alttd/forms/controlers/event_apply/EventAppController.java b/src/main/java/com/alttd/forms/controlers/event_apply/EventAppController.java
new file mode 100644
index 0000000..0ba5678
--- /dev/null
+++ b/src/main/java/com/alttd/forms/controlers/event_apply/EventAppController.java
@@ -0,0 +1,26 @@
+package com.alttd.forms.controlers.event_apply;
+
+import com.alttd.forms.controlers.FormRequestHandler;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.validation.Valid;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.concurrent.CompletableFuture;
+
+@RestController
+@RequestMapping("/api/event-apply")
+public class EventAppController {
+
+ private static final Logger logger = LoggerFactory.getLogger(EventAppController.class);
+
+ @PostMapping("/eventApplication")
+ public CompletableFuture> submitForm(@Valid @RequestBody EventAppFormData formData, HttpServletRequest request) {
+ logger.debug("submitForm");
+ logger.trace(formData.toString());
+
+ return FormRequestHandler.handleRequestWithVerifyMail(formData, request.getRemoteAddr());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/alttd/forms/controlers/event_apply/EventAppFormData.java b/src/main/java/com/alttd/forms/controlers/event_apply/EventAppFormData.java
new file mode 100644
index 0000000..0ad47a3
--- /dev/null
+++ b/src/main/java/com/alttd/forms/controlers/event_apply/EventAppFormData.java
@@ -0,0 +1,113 @@
+package com.alttd.forms.controlers.event_apply;
+
+import com.alttd.forms.form.Form;
+import com.alttd.forms.mail.mail_forms.Mailable;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import jakarta.validation.constraints.*;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import java.util.Optional;
+
+public class EventAppFormData extends Form implements Mailable {
+
+ public EventAppFormData() {}
+
+ public EventAppFormData(String username, String email, String discord, int age, String pronoun, int avg_time, String event_experience, String discord_vc, String other) {
+ this.username = username;
+ this.email = email;
+ this.discord = discord;
+ this.age = age;
+ this.pronoun = pronoun;
+ this.avg_time = avg_time;
+ this.event_experience = event_experience;
+ this.discord_vc = discord_vc;
+ this.other = other;
+ }
+
+ @NotEmpty(message = "Username is required")
+ @Length(min = 3, max = 16, message = "Username should be between 3 and 16 characters")
+ @Pattern(regexp = "^[a-zA-Z0-9_]*$", message = "Username should only include alphanumeric characters and underscore")
+ public String username;
+
+ @NotEmpty(message = "E-mail address is required")
+ @Email(message = "Invalid email")
+ @Length(min = 3, max = 254, message = "Email should be between 3 and 254 characters")
+ public String email;
+
+ @NotEmpty(message = "Discord name is required")
+ @Length(min = 2, max = 32, message = "Discord name should be between 2 and 32 characters")
+ @Pattern(regexp = "^([a-z0-9._]{2,32})$", message = "Please enter a valid Discord name")
+ public String discord;
+
+ @Min(value = 0, message = "Please enter a valid age")
+ @Max(value = 999, message = "We do not accept players older than 999 years old sorry!")
+ public int age;
+
+ @Length(max = 16, message = "Pronouns can't be longer than 16 characters")
+ public String pronoun;
+
+ @Range(min = 0, max = 168, message = "The only valid values are 0-168")
+ public int avg_time;
+
+ @NotEmpty(message = "Event experience is required")
+ @Length(min = 2, max = 2000, message = "Experience should be between 2 and 2000 characters")
+ public String event_experience;
+
+ @NotEmpty(message = "An answer is required")
+ @Length(min = 2, max = 3, message = "Please answer yes or no")
+ @Pattern(regexp = "(?i)^(yes|no)$", message = "Yes or no")
+ public String discord_vc;
+
+ @Length(max = 2000, message = "Text can't be longer than 2000 characters")
+ public String other;
+
+ @JsonIgnore
+ @Override
+ public String toString() {
+ return "EventAppFormData{" +
+ "username='" + username + '\'' +
+ ", email='" + email + '\'' +
+ ", discord='" + discord + '\'' +
+ ", age=" + age +
+ ", pronoun='" + pronoun + '\'' +
+ ", avg_time=" + avg_time +
+ ", event_experience='" + event_experience + '\'' +
+ ", discord_vc='" + discord_vc + '\'' +
+ ", other='" + other + '\'' +
+ '}';
+ }
+
+ @JsonIgnore
+ @Override
+ public Optional getDiscordBotUrl() {
+ return Optional.empty();
+ }
+
+ @JsonIgnore
+ @Override
+ public String getReceiver() {
+ return "events@alttd.com";
+ }
+
+ @JsonIgnore
+ @Override
+ public String getSubject() {
+ return "Event Application: " + username;
+ }
+
+ @JsonIgnore
+ @Override
+ public String getSender() {
+ return email;
+ }
+
+ @JsonIgnore
+ @Override
+ public String toHtml() {
+ String[] fields = {"Username", "Email", "Discord", "Age", "Pronoun", "Avg time", "Event experience", "Discord VC", "Other"};
+ String[] values = {username, email, discord, String.valueOf(age), pronoun, String.valueOf(avg_time), event_experience, discord_vc, other};
+
+ return toHtml(fields, values);
+ }
+}
diff --git a/src/main/java/com/alttd/forms/verify_mail/FormQuery.java b/src/main/java/com/alttd/forms/verify_mail/FormQuery.java
index b18d7c9..ec71d5f 100644
--- a/src/main/java/com/alttd/forms/verify_mail/FormQuery.java
+++ b/src/main/java/com/alttd/forms/verify_mail/FormQuery.java
@@ -2,6 +2,7 @@ package com.alttd.forms.verify_mail;
import com.alttd.forms.controlers.apply.StaffAppFormData;
import com.alttd.forms.controlers.contact.ContactFormData;
+import com.alttd.forms.controlers.event_apply.EventAppFormData;
import com.alttd.forms.database.DatabaseConnection;
import com.alttd.forms.form.Form;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -76,6 +77,9 @@ public class FormQuery {
case "StaffAppFormData" -> {
return objectMapper.readValue(json, StaffAppFormData.class);
}
+ case "EventAppFormData" -> {
+ return objectMapper.readValue(json, EventAppFormData.class);
+ }
default -> throw new IllegalArgumentException("Invalid form class name: " + className);
}
}
diff --git a/src/main/java/com/alttd/forms/verify_mail/VerifyController.java b/src/main/java/com/alttd/forms/verify_mail/VerifyController.java
index eb991ad..6921667 100644
--- a/src/main/java/com/alttd/forms/verify_mail/VerifyController.java
+++ b/src/main/java/com/alttd/forms/verify_mail/VerifyController.java
@@ -1,6 +1,5 @@
package com.alttd.forms.verify_mail;
-import com.alttd.forms.controlers.apply.StaffAppFormData;
import com.alttd.forms.form.Form;
import com.alttd.forms.mail.mail_forms.MailForm;
import com.alttd.forms.mail.mail_forms.Mailable;