diff --git a/Marechai.Data/Dtos/InstructionSetExtensionDto.cs b/Marechai.Data/Dtos/InstructionSetExtensionDto.cs new file mode 100644 index 00000000..07c1f15a --- /dev/null +++ b/Marechai.Data/Dtos/InstructionSetExtensionDto.cs @@ -0,0 +1,36 @@ +/****************************************************************************** +// MARECHAI: Master repository of computing history artifacts information +// ---------------------------------------------------------------------------- +// +// Author(s) : Natalia Portillo +// +// --[ License ] -------------------------------------------------------------- +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// ---------------------------------------------------------------------------- +// Copyright © 2003-2021 Natalia Portillo +*******************************************************************************/ + +using System.ComponentModel.DataAnnotations; +using System.Text.Json.Serialization; + +namespace Marechai.Data.Dtos; + +public class InstructionSetExtensionDto : BaseDto +{ + [JsonPropertyName("extension")] + [Required] + public required string Extension { get; set; } +} \ No newline at end of file diff --git a/Marechai.Server/Controllers/InstructionSetExtensionsController.cs b/Marechai.Server/Controllers/InstructionSetExtensionsController.cs index 254b0bfe..584227cd 100644 --- a/Marechai.Server/Controllers/InstructionSetExtensionsController.cs +++ b/Marechai.Server/Controllers/InstructionSetExtensionsController.cs @@ -28,6 +28,7 @@ using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; +using Marechai.Data.Dtos; using Marechai.Database.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; @@ -44,25 +45,31 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr [AllowAnonymous] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - public Task> GetAsync() => context.InstructionSetExtensions.OrderBy(e => e.Extension) - .Select(e => new InstructionSetExtension - { - Extension = e.Extension, - Id = e.Id - }) - .ToListAsync(); + public Task> GetAsync() + { + return context.InstructionSetExtensions.OrderBy(e => e.Extension) + .Select(e => new InstructionSetExtensionDto + { + Extension = e.Extension, + Id = e.Id + }) + .ToListAsync(); + } [HttpGet("{id:int}")] [AllowAnonymous] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - public Task GetAsync(int id) => context.InstructionSetExtensions.Where(e => e.Id == id) - .Select(e => new InstructionSetExtension - { - Extension = e.Extension, - Id = e.Id - }) - .FirstOrDefaultAsync(); + public Task GetAsync(int id) + { + return context.InstructionSetExtensions.Where(e => e.Id == id) + .Select(e => new InstructionSetExtensionDto + { + Extension = e.Extension, + Id = e.Id + }) + .FirstOrDefaultAsync(); + } [HttpPut("{id:int}")] [Authorize(Roles = "Admin,UberAdmin")] @@ -70,14 +77,14 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] - public async Task UpdateAsync(int id, [FromBody] InstructionSetExtension viewModel) + public async Task UpdateAsync(int id, [FromBody] InstructionSetExtensionDto viewModel) { - string userId = User.FindFirstValue(ClaimTypes.Sid); + var userId = User.FindFirstValue(ClaimTypes.Sid); - if(userId is null) return Unauthorized(); - InstructionSetExtension model = await context.InstructionSetExtensions.FindAsync(viewModel.Id); + if (userId is null) return Unauthorized(); + var model = await context.InstructionSetExtensions.FindAsync(viewModel.Id); - if(model is null) return NotFound(); + if (model is null) return NotFound(); model.Extension = viewModel.Extension; @@ -91,11 +98,11 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] - public async Task> CreateAsync([FromBody] InstructionSetExtension viewModel) + public async Task> CreateAsync([FromBody] InstructionSetExtensionDto viewModel) { - string userId = User.FindFirstValue(ClaimTypes.Sid); + var userId = User.FindFirstValue(ClaimTypes.Sid); - if(userId is null) return Unauthorized(); + if (userId is null) return Unauthorized(); var model = new InstructionSetExtension { @@ -116,12 +123,12 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr [ProducesResponseType(StatusCodes.Status401Unauthorized)] public async Task DeleteAsync(int id) { - string userId = User.FindFirstValue(ClaimTypes.Sid); + var userId = User.FindFirstValue(ClaimTypes.Sid); - if(userId is null) return Unauthorized(); - InstructionSetExtension item = await context.InstructionSetExtensions.FindAsync(id); + if (userId is null) return Unauthorized(); + var item = await context.InstructionSetExtensions.FindAsync(id); - if(item is null) return NotFound(); + if (item is null) return NotFound(); context.InstructionSetExtensions.Remove(item); @@ -134,8 +141,10 @@ public class InstructionSetExtensionsController(MarechaiContext context) : Contr [AllowAnonymous] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] - public bool VerifyUnique(string extension) => - !context.InstructionSetExtensions.Any(i => string.Equals(i.Extension, - extension, - StringComparison.OrdinalIgnoreCase)); + public bool VerifyUnique(string extension) + { + return !context.InstructionSetExtensions.Any(i => string.Equals(i.Extension, + extension, + StringComparison.OrdinalIgnoreCase)); + } } \ No newline at end of file