diff --git a/Aspnet/Controllers/UsuarioController.cs b/Aspnet/Controllers/UsuarioController.cs index 754ff7d..3c3e102 100644 --- a/Aspnet/Controllers/UsuarioController.cs +++ b/Aspnet/Controllers/UsuarioController.cs @@ -126,4 +126,52 @@ public class UsuarioController : ControllerBase return Ok(new { token = cli.Token }); } + + public record Crearusuario(long Dni, string Nombre, string Apellido, string Domicilio, string Celular, + string Email, string Contraseña, string? EmailRecuperacion, List grupos); + [HttpPost("api/crearusuario")] + public IActionResult CrearUsuario([FromHeader(Name ="Auth")] string Auth, [FromBody] Crearusuario cu) + { + var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 19); + if (!ret) return BadRequest(new { message = "No tienes permisos para Crear un usuario" }); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return BadRequest(new { message = "No hay un usuario por ese token" }); + + string rett = ""; + + if (cu.Dni <= 0) + rett += "No puede haber un documento con numero menor o igual a 0"; + if (cu.Apellido.Length > 20) + rett += "Apellido excede los 20 caracteres. "; + if (cu.Nombre.Length > 20) + rett += "Nombre excede los 20 caracteres. "; + if (cu.Celular.Length > 40) + rett += "Celular excede los 40 caracteres. "; + if (cu.Domicilio.Length > 40) + rett += "Domicilio excede los 40 caracteres. "; + if (cu.Email.Length > 50) + rett += "Email excede los 50 caracteres. "; + if (cu.EmailRecuperacion?.Length > 50) + rett += "Email de recuperación excede los 50 caracteres. "; + + if (rett != "") return BadRequest(new { message = rett }); + + Cliente clii = new Cliente + { + Habilitado = 1, + Dni = cu.Dni, + Nombre = cu.Nombre, + Apellido = cu.Apellido, + Celular = cu.Celular, + Email = cu.Email, + EmailRecuperacion = ((cu.EmailRecuperacion ?? "").Length == 0) ? cu.Email : cu.EmailRecuperacion, + Domicilio = cu.Domicilio + }; + + var rettt = RepositorioUsuarios.Singleton.AltaUsuario(cli.Dni, clii, cu.Contraseña, cu.grupos); + + return rettt + ? Ok(new { message = "Usuario creado exitosamente." }) + : BadRequest(new { message = "Hubo un error al crear el usuario." }); } } diff --git a/Front/src/App.svelte b/Front/src/App.svelte index 8f29e38..842e967 100644 --- a/Front/src/App.svelte +++ b/Front/src/App.svelte @@ -34,6 +34,7 @@ import OtroG from "./paginas/grupos/OtroG.svelte"; import GestionPemisos from "./paginas/GestionPemisos.svelte"; import UsuarioPanel from "./paginas/UsuarioPanel.svelte"; + import CrearUsuario from "./paginas/CrearUsuario.svelte"; @@ -141,6 +142,12 @@ + + + + + + diff --git a/Front/src/paginas/CrearUsuario.svelte b/Front/src/paginas/CrearUsuario.svelte new file mode 100644 index 0000000..04f7d47 --- /dev/null +++ b/Front/src/paginas/CrearUsuario.svelte @@ -0,0 +1,173 @@ + + +{#if modaldata} + !!(modaldata="")}/> +{/if} + + + +
+ +
handleSubmit(e)} class="row g-3 mt-2" id="formcrearusu"> + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ {#each grupos as grupo} + + {/each} +
+
+ + +
+ +
+
+
diff --git a/Front/src/types.d.ts b/Front/src/types.d.ts index 771b839..ab747a1 100644 --- a/Front/src/types.d.ts +++ b/Front/src/types.d.ts @@ -249,3 +249,15 @@ export type IngresosDto = { atrasados:number, sin_realizar:number } + +export type CrearUsuario = { + Dni: number; + Nombre: string; + Apellido: string; + Domicilio: string; + Celular: string; + Email: string; + Contraseña: string; + EmailRecuperacion?: string | null; + grupos: number[]; +} diff --git a/Modelo/RepositorioUsuarios.cs b/Modelo/RepositorioUsuarios.cs index bf76fc5..ecd9262 100644 --- a/Modelo/RepositorioUsuarios.cs +++ b/Modelo/RepositorioUsuarios.cs @@ -11,6 +11,24 @@ namespace Modelo; public class RepositorioUsuarios : RepositorioBase { + + public bool AltaUsuario(long Dni, Cliente clii, string Contraseña, List grupos) + { + var con = Context; + + foreach (int i in grupos) + { + var g = con.Grupos.FirstOrDefault(x => x.Id == i); + clii.Idgrupos.Add(g); + } + + clii.Contraseña = Encoding.UTF8.GetBytes(HacerHash(Contraseña)); + + con.Clientes.Add(clii); + base.GenerarLog(con, Dni, "Creacion de usuario"); + return Guardar(con); + } + public (bool, long) Check2fa(string Email, string Pin) { var con = Context;