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 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(); } }