feat: terminado primer test del form crear inquilino

Signed-off-by: fede <federico.nicolas.polidoro@gmail.com>
This commit is contained in:
2024-10-22 00:07:26 -03:00
parent 4f358d4c2a
commit 93355651c0
10 changed files with 139 additions and 26 deletions

View File

@@ -3,6 +3,7 @@ using System.Text;
using Entidades;
using Entidades.Dto;
using Modelo;
using System.Diagnostics.CodeAnalysis;
namespace AlquilaFacil.Controllers;
@@ -16,29 +17,28 @@ public class InquilinoController: ControllerBase
}
[HttpPost("api/inquilino")]
public IActionResult Post([FromForm] CrearClienteDto cid) {
public IActionResult Post([FromBody] CrearClienteDto cid) {
var ret = verificarCrearUsuario(cid);
if (ret is BadRequestResult) return ret;
if (ret != "") return BadRequest(ret);
bool ret2 = RepositorioUsuarios.Singleton.AltaCliente(cid);
return (ret2) ? Ok() : BadRequest();
return (ret2) ? Ok() : BadRequest(ret);
}
private IActionResult verificarCrearUsuario(CrearClienteDto cid) {
private string verificarCrearUsuario(CrearClienteDto cid) {
string msg = "";
if (cid.Usuario.email == string.Empty) msg += "Falta ingresar el email\n";
if (cid.Usuario.contraseña.Length < 8) msg += "Por lo menos 8 caracteres en la contraseña\n";
if (cid.email == string.Empty) msg += "Falta ingresar el email\n";
if (cid.contraseña.Length < 8) msg += "Por lo menos 8 caracteres en la contraseña\n";
if (cid.Cliente.apellido == string.Empty) msg += "Falta Ingresar apellido\n";
if (cid.Cliente.nombre == string.Empty) msg += "Falta Ingresar nombre\n";
if (cid.Cliente.dni <= 0) msg += "Falta Ingresar dni o elejiste un numero negativo\n";
if (cid.Cliente.celular == string.Empty) msg += "Falta Ingresar Numero de Contacto\n";
if (cid.Cliente.domicilio == string.Empty) msg += "Falta Ingresar Domicilio Legal";
if (cid.apellido == string.Empty) msg += "Falta Ingresar apellido\n";
if (cid.nombre == string.Empty) msg += "Falta Ingresar nombre\n";
if (cid.dni <= 0) msg += "Falta Ingresar dni o elejiste un numero negativo\n";
if (cid.celular == string.Empty) msg += "Falta Ingresar Numero de Contacto\n";
if (cid.domicilio == string.Empty) msg += "Falta Ingresar Domicilio Legal";
if (msg == "") return Ok();
return BadRequest(new {message = msg});
return msg;
}
}

View File

@@ -42,7 +42,6 @@ public partial class AlquilaFacilContext : DbContext
public virtual DbSet<Venta> Ventas { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.
=> optionsBuilder.UseMySQL("Server=fedesrv.ddns.net;Port=30006;Database=AlquilaFacil;Uid=AlquilaFacil;Pwd=.n@9c2ve*0,b1ETv].Kipa/~pR~V;Connection Timeout=5;SslMode=none");
protected override void OnModelCreating(ModelBuilder modelBuilder)
@@ -303,7 +302,7 @@ public partial class AlquilaFacilContext : DbContext
entity.Property(e => e.id).HasColumnType("int(11)");
entity.Property(e => e.contraseña).HasMaxLength(128);
entity.Property(e => e.email).HasMaxLength(50);
entity.Property(e => e.token).HasColumnType("json");
entity.Property(e => e.token).HasColumnType("text");
entity.HasMany(d => d.idgrupos).WithMany(p => p.idusuarios)
.UsingEntity<Dictionary<string, object>>(

View File

@@ -1,6 +1,11 @@
namespace Entidades.Dto;
public class CrearClienteDto {
public Cliente Cliente { get; set; } = new();
public Usuario Usuario { get; set; } = new();
public long dni { get; set; }
public string nombre { get; set; } = null!;
public string apellido { get; set; } = null!;
public string domicilio { get; set; } = null!;
public string celular { get; set; } = null!;
public string email { get; set; } = null!;
public string contraseña { get; set; } = null!;
}

View File

@@ -11,7 +11,7 @@ public partial class Usuario
public byte[] contraseña { get; set; } = null!;
public string token { get; set; } = null!;
public string? token { get; set; }
public virtual ICollection<Cliente> Clientes { get; set; } = new List<Cliente>();

View File

@@ -12,6 +12,9 @@
<Route path="/" component={Login} />
<Route path="/Info" component={InfoPage} />
<Route path="/inqtest" component={InqPage} />
<Route path="/Menu">
<ProteRoute component={MenuPage} />
</Route>

View File

@@ -0,0 +1,15 @@
<script lang="ts">
import { Col } from "@sveltestrap/sveltestrap";
import FormPostInq from "../lib/FormPostCli.svelte";
import NavBarAutocompletable from "../lib/NavBarAutocompletable.svelte";
</script>
<NavBarAutocompletable/>
<div class="container">
<div class="row align-items-start">
<div class="col">
<FormPostInq url="http://127.0.0.1:5007/api/inquilino"/>
</div>
</div>
</div>

View File

@@ -0,0 +1,70 @@
<script lang="ts">
import { Form, FormGroup, Input, Button} from "@sveltestrap/sveltestrap";
export let url: string
let showAlert: boolean = false;
let errorMessage: string
let dni: number
let email: string
let contraseña: string
let nombre: string
let apellido: string
let domicilio: string
let celular: string
async function submitForm(event: any) {
event.preventDefault();
try {
let response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type' : 'application/json',
},
body: JSON.stringify({dni, nombre, apellido, domicilio, celular, email, contraseña})
});
if (!response.ok) {
const errorData = await response.json();
errorMessage = errorData.message;
showAlert = true;
}
} catch (e) {
throw new Error("Fallo al enviar el formulario para crear un inquilino");
}
}
</script>
<Form on:submit={submitForm}>
<FormGroup floating label="Dni">
<Input type="number" min='1' bind:value={dni} required />
</FormGroup>
<FormGroup floating label="Email">
<Input type="email" placeholder="ejemplo@mail.com" bind:value={email} required />
</FormGroup>
<FormGroup floating label="Contraseña">
<Input type="password" placeholder="*********" bind:value={contraseña} required />
</FormGroup>
<FormGroup floating label="Nombre">
<Input type="text" bind:value={nombre} required />
</FormGroup>
<FormGroup floating label="Apellido">
<Input type="text" bind:value={apellido} required />
</FormGroup>
<FormGroup floating label="Domicilio">
<Input type="text" bind:value={domicilio} required />
</FormGroup>
<FormGroup floating label="Celular">
<Input type="tel" bind:value={celular} required />
</FormGroup>
<br>
<FormGroup>
<Button color="primary" type="submit">Ingresar</Button>
</FormGroup>
</Form>
{#if showAlert}
<div class='alert alert-warning alert-dismissible fade show' role='alert'>
<strong>{errorMessage}</strong>
<button type="button" class="btn-close close" aria-label="Close" data-bs-dismiss="alert"></button>
</div>
{/if}

View File

@@ -7,6 +7,7 @@
let errorMessage = ""
let showAlert = false;
// @ts-ignore
async function submitForm(event) {
event.preventDefault();
@@ -40,17 +41,17 @@
</script>
<Card class="position-sticky top-50 start-50 translate-middle-x" style="width: 18rem; height: auto;" theme="auto" color="dark" outline>
<Card class="position-sticky top-50 start-50 translate-middle-x" style="width: 20rem; height: auto;" theme="auto" color="dark" outline>
<CardHeader>
<CardTitle>Iniciar Sesión</CardTitle>
</CardHeader>
<CardBody>
<Form on:submit={submitForm}>
<FormGroup floating label="Email">
<Input type="email" placeholder="ejemplo@mail.com" bind:value={email}/>
<Input type="email" placeholder="ejemplo@mail.com" bind:value={email} required/>
</FormGroup>
<FormGroup floating label="Contraseña">
<Input type="password" placeholder="*********" bind:value={contraseña}/>
<Input type="password" placeholder="*********" bind:value={contraseña} required/>
</FormGroup>
<FormGroup>
<Button color="primary" type="submit">Ingresar</Button>
@@ -59,7 +60,7 @@
{#if errorMessage}
<div class='alert alert-warning alert-dismissible fade show' role='alert'>
<strong>{errorMessage}</strong>
<button type="button" class="btn-close close" aria-label="Close" data-dismiss="alert"></button>
<button type="button" class="btn-close close" aria-label="Close" data-bs-dismiss="alert"></button>
</div>
{/if}
</CardBody>

View File

@@ -22,6 +22,7 @@ public abstract class RepositorioBase<S>
ret = true;
} catch (DbUpdateException ex)
{
Context = new AlquilaFacilContext();
Console.Error.WriteLine(ex.Message);
}
return ret;

View File

@@ -9,8 +9,18 @@ namespace Modelo;
public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
{
public bool AltaCliente(CrearClienteDto cid){
var usu = cid.Usuario;
var cli = cid.Cliente;
var usu = new Usuario {
email = cid.email,
contraseña = Encoding.UTF8.GetBytes(HacerHash(cid.contraseña))
};
var cli = new Cliente {
dni = cid.dni,
nombre = cid.nombre,
domicilio = cid.domicilio,
apellido = cid.apellido,
celular = cid.celular
};
var cant = Context.Usuarios
.GroupBy(u => u.id)
@@ -18,10 +28,19 @@ public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
.ToList();
if (cant.Count < 1) return false;
usu.id = cant[0];
cli.idusuario = cant[0];
usu.id = cant.Count() + 1;
cli.idusuario = cant.Count() + 1;
var grupo = Context.Grupos.Find(2);
if (grupo == null || grupo.id == 0) return false;
Context.Usuarios.Add(usu);
Guardar();
var usut = Context.Usuarios.Find(usu.id);
usut.idgrupos.Add(grupo);
Guardar();
Context.Clientes.Add(cli);
return Guardar();
}