52 lines
1.9 KiB
C#
52 lines
1.9 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 = InputNormalization.NormalizeSwedishMobile(request.GuardianPhoneNumber);
|
|
|
|
string? normalizedParticipantPhone = null;
|
|
if (!string.IsNullOrWhiteSpace(request.PhoneNumber))
|
|
{
|
|
normalizedParticipantPhone = InputNormalization.NormalizeSwedishMobile(request.PhoneNumber);
|
|
}
|
|
|
|
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.StatusCode == 200 && !result.Message.Contains("401"))
|
|
{
|
|
return Ok();
|
|
}
|
|
|
|
return Unauthorized();
|
|
}
|
|
}
|