using API.Authentication.Interfaces; using API.DTO.Base.Update; using API.Services; using DAL.Models; using DAL.Models.Audits; using Microsoft.AspNetCore.Mvc; using MUser = DAL.Models.User; namespace API.Controllers { [ApiController] [Route("api/v1/[controller]")] public class SignupController : CRUDBase { public SignupController(ILogger logger, UserService userService, SignupService service) : base(logger, userService, service) { } [HttpGet("forEvent/{eventId}")] public ActionResult getForEvent(ulong eventId) { MUser? user = getUser(User); if (user == null) return Unauthorized(); IEnumerable? result = Service.get(user, e => e.eventId == eventId); if (result == null) return Forbid(); List dtos = []; Parallel.ForEach(result, item => { SignupDTO dto = new SignupDTO(); dto.adaptFromModel(item); dtos.Add(dto); }); return Ok(dtos); } [HttpPost("autoUser")] public ActionResult add(SignupDTO createDTO) { MUser? user = getUser(User); if (user == null) return Unauthorized(); // todo createDTO.userId = user.id; if (createDTO.userId != user.id) { return Forbid(); } Signup? result = Service.add(createDTO, user); if (result == null) return Forbid(); SignupDTO dto = new SignupDTO(); dto.adaptFromModel(result); return Ok(dto); } [HttpDelete("event/{eventId}")] public ActionResult deleteForEvent(ulong eventId) { MUser? user = getUser(User); if (user == null) return Unauthorized(); Signup? result = Service.getNoAuthentication(x => x.userId == user.id && x.eventId == eventId).FirstOrDefault(); if (result == null) return Forbid(); AuditSignup? auditModel = Service.delete(result, user); if (auditModel == null) return Forbid(); return NoContent(); } } }