vbytes-lan-registration/src/Registration/Registration.API/Controllers/ParticipantController.cs
2026-02-24 20:15:42 +01:00

47 lines
1.7 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Registration.API.RequestModels;
using Registration.API.Services;
using Registration.API.Validation;
using Registration.Domain.Models;
namespace Registration.API.Controllers;
[Route("api/[controller]")]
[ApiController]
public class ParticipantController(IVbytesParticipantRelayService relayService) : ControllerBase
{
private readonly IVbytesParticipantRelayService _relayService = relayService;
[HttpPost("register")]
public async Task<IActionResult> RegisterForLan([FromBody] ParticipantRegistrationRequest request, CancellationToken cancellationToken)
{
var normalizedGuardianPhone = request.GuardianPhoneNumber.NormalizePhone();
var normalizedParticipantPhone = request.PhoneNumber.NormalizeOptionalPhone();
var participant = new Participant
{
IsMember = request.IsMember!.Value,
FirstName = request.FirstName.Trim(),
SurName = request.SurName.Trim(),
Grade = request.Grade.Trim(),
PhoneNumber = normalizedParticipantPhone,
Email = request.Email?.Trim(),
GuardianName = request.GuardianName.Trim(),
GuardianPhoneNumber = normalizedGuardianPhone,
GuardianEmail = request.GuardianEmail.Trim(),
IsVisitor = request.IsVisitor!.Value,
HasApprovedGdpr = request.HasApprovedGdpr!.Value,
Friends = request.Friends?.Trim(),
SpecialDiet = request.SpecialDiet?.Trim(),
};
var result = await _relayService.RegisterParticipantAsync(participant, cancellationToken);
if (result.Success && !result.Message.Contains("401"))
{
return Ok();
}
return Unauthorized();
}
}