From d9b942fbb3031f89683f264d7679ff3251add4fd Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 8 Mar 2025 16:24:11 -0500 Subject: [PATCH] tsk-#76: Added endpoints --- Icarus/Controllers/Managers/SongManager.cs | 5 + .../Controllers/v1/AccessLevelController.cs | 97 +++++++++++++++++++ Icarus/Controllers/v1/SongDataController.cs | 1 - 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 Icarus/Controllers/v1/AccessLevelController.cs diff --git a/Icarus/Controllers/Managers/SongManager.cs b/Icarus/Controllers/Managers/SongManager.cs index db6c50e..da81db3 100644 --- a/Icarus/Controllers/Managers/SongManager.cs +++ b/Icarus/Controllers/Managers/SongManager.cs @@ -157,6 +157,11 @@ public class SongManager : BaseManager DeleteSongFromDatabase(song); coverMgr.DeleteCoverArtFromDatabase(coverArt); + // var accessLevel = new AccessLevel{SongId = song.Id}; + var accessLevelContext = new AccessLevelContext(_config!.GetConnectionString("DefaultConnection")!); + var accessLevel = accessLevelContext.AccessLevels.FirstOrDefault(al => al.SongId == song.Id); + accessLevelContext.AccessLevels.Remove(accessLevel!); + accessLevelContext.SaveChanges(); } catch (Exception ex) { diff --git a/Icarus/Controllers/v1/AccessLevelController.cs b/Icarus/Controllers/v1/AccessLevelController.cs new file mode 100644 index 0000000..40b7fb8 --- /dev/null +++ b/Icarus/Controllers/v1/AccessLevelController.cs @@ -0,0 +1,97 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +// using I +// using Icarus.Database.Contexts; + +namespace Icarus.Controllers.V1; + +[Route("api/v1/accesslevel")] +[ApiController] +[Authorize] +public class AccessLevelController : BaseController +{ + #region Fields + private readonly ILogger? _logger; + private string? _connectionString; + #endregion + + #region Properties + #endregion + + #region Constructors + public AccessLevelController(ILogger logger, IConfiguration config) + { + this._logger = logger; + this._config = config; + _connectionString = this._config.GetConnectionString("DefaultConnection"); + } + #endregion + + #region HTTP Routes + [HttpGet] + public IActionResult GetAccessLevels([FromBody] Icarus.Models.AccessLevel accessLevel) + { + // var id = 0; + // var songId = 0; + var accLevel = new Icarus.Models.AccessLevel { Id = 0 }; + var accessLevelContext = new Icarus.Database.Contexts.AccessLevelContext(_connectionString!); + + if (accessLevel.Id != 0) + { + var id = accessLevel.Id; + accLevel = accessLevelContext.AccessLevels!.FirstOrDefault(al => al.Id == id); + } + else if (accessLevel.SongId != 0) + { + var songId = accessLevel.SongId; + accLevel = accessLevelContext.AccessLevels!.FirstOrDefault(al => al.SongId == songId); + } + + var response = new GetAccessLevelsResponse(); + var subject = ""; + + if (accLevel?.Id > 0) + { + subject = "Successful"; + response.Data = new List(); + response.Data.Add(accLevel); + } + else + { + subject = "Failure"; + } + + response.Subject = subject; + + return Ok(response); + } + + public IActionResult UpdateAccessLevel() + { + return Ok(new UpdateAccessLevelResponse()); + } + #endregion +} + +#region Responses +public class GetAccessLevelsResponse +{ + #region Properties + [Newtonsoft.Json.JsonProperty("subject")] + public string? Subject { get; set; } + [Newtonsoft.Json.JsonProperty("data")] + public List? Data { get; set; } + #endregion +} + +public class UpdateAccessLevelResponse +{ + #region Properties + [Newtonsoft.Json.JsonProperty("subject")] + public string? Subject { get; set; } + [Newtonsoft.Json.JsonProperty("data")] + public List? Data { get; set; } + #endregion +} +#endregion diff --git a/Icarus/Controllers/v1/SongDataController.cs b/Icarus/Controllers/v1/SongDataController.cs index 7626853..b929886 100644 --- a/Icarus/Controllers/v1/SongDataController.cs +++ b/Icarus/Controllers/v1/SongDataController.cs @@ -179,7 +179,6 @@ public class SongDataController : BaseController return Ok(songMetaData); } - } public class UploadSongWithDataForm