Add API endpoint to check staff application availability and enforce open/close periods

This commit is contained in:
akastijn 2025-10-17 21:42:32 +02:00
parent 8e9e267fb0
commit 5eaeb3552a
3 changed files with 43 additions and 0 deletions

View File

@ -16,9 +16,12 @@ import com.alttd.altitudeweb.services.mail.StaffApplicationMail;
import com.alttd.altitudeweb.setup.Connection;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
import java.time.Instant;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@ -34,8 +37,24 @@ public class ApplicationController implements ApplicationsApi {
private final StaffApplicationMail staffApplicationMail;
private final StaffApplicationDiscord staffApplicationDiscord;
private final Instant open = Instant.parse("2025-10-18T00:00:00Z");
private final Instant close = Instant.parse("2020-10-26T00:00:00Z");
@Override
public ResponseEntity<Boolean> getStaffApplicationsIsOpen() {
return ResponseEntity.ok(isOpen());
}
private boolean isOpen() {
Instant now = Instant.now();
return !now.isBefore(open) && !now.isAfter(close);
}
@Override
public ResponseEntity<FormResponseDto> submitStaffApplication(StaffApplicationDto staffApplicationDto) {
if (!isOpen()) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
}
UUID userUuid = AuthenticatedUuid.getAuthenticatedUserUuid();
String email = staffApplicationDto.getEmail() == null ? null : staffApplicationDto.getEmail().toLowerCase();

View File

@ -57,6 +57,8 @@ paths:
$ref: './schemas/forms/appeal/appeal.yml#/DiscordAppeal'
/api/apply/staff-application:
$ref: './schemas/forms/staff_apply/staff_apply.yml#/StaffApply'
/api/apply/staff-application-is-open:
$ref: './schemas/forms/staff_apply/staff_apply.yml#/StaffApplicationsIsOpen'
/api/login/requestNewUserLogin/{uuid}:
$ref: './schemas/login/login.yml#/RequestNewUserLogin'
/api/login/userLogin/{code}:

View File

@ -24,6 +24,28 @@ StaffApply:
application/json:
schema:
$ref: '../../generic/errors.yml#/components/schemas/ApiError'
StaffApplicationsIsOpen:
get:
tags:
- applications
summary: Get if staff applications are open
description: Get if staff applications are open
operationId: getStaffApplicationsIsOpen
responses:
'200':
description: If staff applications are open
content:
application/json:
schema:
type: boolean
'403':
description: If staff applications are not open
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '../../generic/errors.yml#/components/schemas/ApiError'
components:
schemas:
StaffApplication: