85 lines
2.0 KiB
C#
85 lines
2.0 KiB
C#
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<SignupController, SignupDTO, SignupUpdateDTO, Signup, AuditSignup, ISignupAuthentication, SignupService>
|
|
{
|
|
public SignupController(ILogger<SignupController> logger, UserService userService, SignupService service) : base(logger, userService, service)
|
|
{
|
|
}
|
|
|
|
[HttpGet("forEvent/{eventId}")]
|
|
public ActionResult<SignupDTO> getForEvent(ulong eventId)
|
|
{
|
|
MUser? user = getUser(User);
|
|
if (user == null)
|
|
return Unauthorized();
|
|
|
|
IEnumerable<Signup>? result = Service.get(user, e => e.eventId == eventId);
|
|
if (result == null)
|
|
return Forbid();
|
|
|
|
List<SignupDTO> dtos = [];
|
|
|
|
Parallel.ForEach(result, item =>
|
|
{
|
|
SignupDTO dto = new SignupDTO();
|
|
dto.adaptFromModel(item);
|
|
dtos.Add(dto);
|
|
});
|
|
|
|
return Ok(dtos);
|
|
}
|
|
|
|
[HttpPost("autoUser")]
|
|
public ActionResult<SignupDTO> 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();
|
|
}
|
|
}
|
|
}
|