From f0388732f33c47126f08273913cdb8df3ab9a18b Mon Sep 17 00:00:00 2001 From: jvyden Date: Sat, 16 Oct 2021 17:39:18 -0400 Subject: [PATCH] Add/Remove level queue endpoints --- .../Controllers/LevelQueueController.cs | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/ProjectLighthouse/Controllers/LevelQueueController.cs b/ProjectLighthouse/Controllers/LevelQueueController.cs index 7fecf4f8..2c31638b 100644 --- a/ProjectLighthouse/Controllers/LevelQueueController.cs +++ b/ProjectLighthouse/Controllers/LevelQueueController.cs @@ -1,6 +1,8 @@ +#nullable enable using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using ProjectLighthouse.Serialization; @@ -23,5 +25,40 @@ namespace ProjectLighthouse.Controllers { return this.Ok(LbpSerializer.TaggedStringElement("slots", response, "total", 1)); } + + [HttpPost("lolcatftw/remove/user/{id:int}")] + public async Task RemoveQueuedLevel(int id) { + await using Database database = new(); + + User? user = await database.UserFromRequest(this.Request); + if(user == null) return this.StatusCode(403, ""); + + QueuedLevel queuedLevel = await database.QueuedLevels.FirstOrDefaultAsync(q => q.UserId == user.UserId && q.SlotId == id); + if(queuedLevel != null) database.QueuedLevels.Remove(queuedLevel); + + await database.SaveChangesAsync(); + + return this.Ok(); + } + + [HttpPost("lolcatftw/add/user/{id:int}")] + public async Task AddQueuedLevel(int id) { + await using Database database = new(); + + User? user = await database.UserFromRequest(this.Request); + if(user == null) return this.StatusCode(403, ""); + + QueuedLevel queuedLevel = await database.QueuedLevels.FirstOrDefaultAsync(q => q.UserId == user.UserId && q.SlotId == id); + if(queuedLevel != null) return this.Ok(); + + database.QueuedLevels.Add(new QueuedLevel { + SlotId = id, + UserId = user.UserId + }); + + await database.SaveChangesAsync(); + + return this.Ok(); + } } } \ No newline at end of file