From ab9805607529869ca47254cc32776b4e7165341b Mon Sep 17 00:00:00 2001 From: dmolinari Date: Wed, 1 Apr 2026 13:08:51 -0300 Subject: [PATCH] feat: Add Register DTOs and SP for public registration (Refs #2) --- Backend/PruebaGentle.Core/DTOs/RegisterDto.cs | 22 ++++++++++++++++ .../DTOs/RegisterResponseDto.cs | 8 ++++++ Backend/Sql/sp_User_Register.sql | 26 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 Backend/PruebaGentle.Core/DTOs/RegisterDto.cs create mode 100644 Backend/PruebaGentle.Core/DTOs/RegisterResponseDto.cs create mode 100644 Backend/Sql/sp_User_Register.sql diff --git a/Backend/PruebaGentle.Core/DTOs/RegisterDto.cs b/Backend/PruebaGentle.Core/DTOs/RegisterDto.cs new file mode 100644 index 0000000..7df4a72 --- /dev/null +++ b/Backend/PruebaGentle.Core/DTOs/RegisterDto.cs @@ -0,0 +1,22 @@ +using System.ComponentModel.DataAnnotations; + +namespace PruebaGentle.Core.DTOs; + +public class RegisterDto +{ + [Required] + [StringLength(50, MinimumLength = 3)] + public string Username { get; set; } = string.Empty; + + [Required] + [StringLength(100, MinimumLength = 6)] + public string Password { get; set; } = string.Empty; + + [Required] + [EmailAddress] + public string Email { get; set; } = string.Empty; + + [Required] + [StringLength(100)] + public string NombreCompleto { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/Backend/PruebaGentle.Core/DTOs/RegisterResponseDto.cs b/Backend/PruebaGentle.Core/DTOs/RegisterResponseDto.cs new file mode 100644 index 0000000..93a204d --- /dev/null +++ b/Backend/PruebaGentle.Core/DTOs/RegisterResponseDto.cs @@ -0,0 +1,8 @@ +namespace PruebaGentle.Core.DTOs; + +public class RegisterResponseDto +{ + public string Token { get; set; } = string.Empty; + public DateTime ExpiresAt { get; set; } + public int UserId { get; set; } +} \ No newline at end of file diff --git a/Backend/Sql/sp_User_Register.sql b/Backend/Sql/sp_User_Register.sql new file mode 100644 index 0000000..4c59b8d --- /dev/null +++ b/Backend/Sql/sp_User_Register.sql @@ -0,0 +1,26 @@ +CREATE OR ALTER PROCEDURE sp_User_Register + @Username NVARCHAR(50), + @PasswordHash NVARCHAR(255), + @Email NVARCHAR(100), + @NombreCompleto NVARCHAR(100) +AS +BEGIN + SET NOCOUNT ON; + + -- Check if username already exists + IF EXISTS (SELECT 1 FROM Users WHERE Username = @Username) + BEGIN + THROW 50001, 'El nombre de usuario ya existe.', 1; + END + + -- Check if email already exists + IF EXISTS (SELECT 1 FROM Users WHERE Email = @Email) + BEGIN + THROW 50002, 'El email ya existe.', 1; + END + + -- Insert new user + INSERT INTO Users (Username, PasswordHash, Email, NombreCompleto) + OUTPUT INSERTED.Id, INSERTED.Username, INSERTED.Email, INSERTED.NombreCompleto, INSERTED.FechaCreacion + VALUES (@Username, @PasswordHash, @Email, @NombreCompleto); +END \ No newline at end of file