finalmente adapte todo a svelte y más
Signed-off-by: fede <federico.nicolas.polidoro@gmail.com>
This commit is contained in:
@@ -6,12 +6,17 @@ namespace AlquilaFacil.Controllers;
|
|||||||
[ApiController]
|
[ApiController]
|
||||||
public class GruposController: ControllerBase {
|
public class GruposController: ControllerBase {
|
||||||
[HttpPost("api/admin/grupos")]
|
[HttpPost("api/admin/grupos")]
|
||||||
public IActionResult CrearPermisos([FromBody] AdminGrupo grupo) {
|
public IActionResult CrearGrupo([FromBody] AdminGrupo grupo) {
|
||||||
if (String.IsNullOrEmpty(grupo.descripcion)) return BadRequest();
|
if (String.IsNullOrEmpty(grupo.descripcion)) return BadRequest();
|
||||||
|
|
||||||
bool ret = RepositorioGrupos.Singleton.CrearGrupo(grupo.descripcion);
|
bool ret = RepositorioGrupos.Singleton.CrearGrupo(grupo.descripcion);
|
||||||
return (ret) ? Ok(ret) : BadRequest();
|
return (ret) ? Ok(ret) : BadRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("api/admin/grupos")]
|
||||||
|
public IActionResult ListarGrupo(){
|
||||||
|
return Ok(RepositorioGrupos.Singleton.Listar());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public record AdminGrupo(string descripcion);
|
public record AdminGrupo(string descripcion);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Entidades;
|
|||||||
using Entidades.Dto;
|
using Entidades.Dto;
|
||||||
using Modelo;
|
using Modelo;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
namespace AlquilaFacil.Controllers;
|
namespace AlquilaFacil.Controllers;
|
||||||
|
|
||||||
@@ -30,7 +31,17 @@ public class InquilinoController: ControllerBase
|
|||||||
var ret = verificarCrearUsuario(cid);
|
var ret = verificarCrearUsuario(cid);
|
||||||
if (ret != "") return BadRequest(ret);
|
if (ret != "") return BadRequest(ret);
|
||||||
|
|
||||||
bool ret2 = RepositorioUsuarios.Singleton.AltaCliente(cid);
|
var cli = new Cliente {
|
||||||
|
Dni = cid.dni,
|
||||||
|
Nombre = cid.nombre,
|
||||||
|
Domicilio = cid.domicilio,
|
||||||
|
Apellido = cid.apellido,
|
||||||
|
Celular = cid.celular,
|
||||||
|
Email = cid.email,
|
||||||
|
Contraseña = Encoding.UTF8.GetBytes(HacerHash(cid.contraseña))
|
||||||
|
};
|
||||||
|
|
||||||
|
bool ret2 = RepositorioUsuarios.Singleton.AltaInquilino(cli);
|
||||||
return (ret2) ? Ok() : BadRequest(ret);
|
return (ret2) ? Ok() : BadRequest(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,5 +59,8 @@ public class InquilinoController: ControllerBase
|
|||||||
|
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
private string HacerHash(string pass){
|
||||||
|
var buf = SHA256.HashData(Encoding.UTF8.GetBytes(pass));
|
||||||
|
return BitConverter.ToString(buf).Replace("-","");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
using System.Text.Json;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Modelo;
|
using Modelo;
|
||||||
namespace AlquilaFacil.Controllers;
|
namespace AlquilaFacil.Controllers;
|
||||||
|
|||||||
59
Aspnet/Controllers/PropietarioController.cs
Normal file
59
Aspnet/Controllers/PropietarioController.cs
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using Entidades;
|
||||||
|
using Entidades.Dto;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Modelo;
|
||||||
|
|
||||||
|
namespace AlquilaFacil.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
public class PropietarioController: ControllerBase {
|
||||||
|
|
||||||
|
[HttpGet("api/propietario")]
|
||||||
|
public IActionResult ListarPropietarios([FromHeader(Name = "Auth")] string Auth) {
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost("api/propietarios")]
|
||||||
|
public IActionResult AltaPropietario([FromBody]CrearClienteDto Propietario,[FromHeader(Name = "Auth")] string Auth) {
|
||||||
|
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
|
||||||
|
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, Request.Path);
|
||||||
|
if (validacion1 == false) return Unauthorized();
|
||||||
|
|
||||||
|
string validacion2 = verificarCrearUsuario(Propietario);
|
||||||
|
if (validacion2 != "") return BadRequest(validacion2);
|
||||||
|
|
||||||
|
var cli = new Cliente {
|
||||||
|
Dni = Propietario.dni,
|
||||||
|
Nombre = Propietario.nombre,
|
||||||
|
Domicilio = Propietario.domicilio,
|
||||||
|
Apellido = Propietario.apellido,
|
||||||
|
Celular = Propietario.celular,
|
||||||
|
Email = Propietario.email,
|
||||||
|
Contraseña = Encoding.UTF8.GetBytes(HacerHash(Propietario.contraseña))
|
||||||
|
};
|
||||||
|
|
||||||
|
bool ret = RepositorioUsuarios.Singleton.AltaPropietario(cli);
|
||||||
|
return ret ?
|
||||||
|
Ok(new {message = "Se añadio el propietario exitosamente"}) : BadRequest();
|
||||||
|
}
|
||||||
|
private string verificarCrearUsuario(CrearClienteDto cid) {
|
||||||
|
string msg = "";
|
||||||
|
|
||||||
|
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.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";
|
||||||
|
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
private string HacerHash(string pass){
|
||||||
|
var buf = SHA256.HashData(Encoding.UTF8.GetBytes(pass));
|
||||||
|
return BitConverter.ToString(buf).Replace("-","");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Entidades;
|
namespace Entidades;
|
||||||
|
|
||||||
@@ -9,5 +10,6 @@ public partial class Permiso
|
|||||||
|
|
||||||
public string? Descripcion { get; set; }
|
public string? Descripcion { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
public virtual ICollection<Grupo> Idgrupos { get; set; } = new List<Grupo>();
|
public virtual ICollection<Grupo> Idgrupos { get; set; } = new List<Grupo>();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,9 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/png" href="/favicon.png" />
|
<link rel="icon" type="image/png" href="/favicon.png" />
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"/>
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"/>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>AlquilaFacil</title>
|
<title>AlquilaFacil</title>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
13
Front/public/home.svg
Normal file
13
Front/public/home.svg
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<!--
|
||||||
|
unicode: "fe2b"
|
||||||
|
version: "3.0"
|
||||||
|
-->
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="currentColor"
|
||||||
|
>
|
||||||
|
<path d="M12.707 2.293l9 9c.63 .63 .184 1.707 -.707 1.707h-1v6a3 3 0 0 1 -3 3h-1v-7a3 3 0 0 0 -2.824 -2.995l-.176 -.005h-2a3 3 0 0 0 -3 3v7h-1a3 3 0 0 1 -3 -3v-6h-1c-.89 0 -1.337 -1.077 -.707 -1.707l9 -9a1 1 0 0 1 1.414 0m.293 11.707a1 1 0 0 1 1 1v7h-4v-7a1 1 0 0 1 .883 -.993l.117 -.007z" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 457 B |
@@ -4,7 +4,8 @@
|
|||||||
import MenuPage from './Menu/page.svelte';
|
import MenuPage from './Menu/page.svelte';
|
||||||
import ProteRoute from './lib/RutaProtegida.svelte';
|
import ProteRoute from './lib/RutaProtegida.svelte';
|
||||||
import InfoPage from './Info/page.svelte';
|
import InfoPage from './Info/page.svelte';
|
||||||
import InqPage from "./Inquilinos/page.svelte";
|
import InqPage from "./Inquilino/page.svelte";
|
||||||
|
import PropPage from "./Propietario/page.svelte";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Router>
|
<Router>
|
||||||
@@ -16,11 +17,17 @@
|
|||||||
|
|
||||||
|
|
||||||
<Route path="/Menu">
|
<Route path="/Menu">
|
||||||
<ProteRoute component={MenuPage} />
|
<ProteRoute componente={MenuPage} />
|
||||||
</Route>
|
</Route>
|
||||||
|
|
||||||
<Route path="/Inquilinos">
|
<!--Crear Cuenta Inquilino-->
|
||||||
<ProteRoute component={InqPage}/>
|
<Route path="/accion/4">
|
||||||
|
<ProteRoute componente={InqPage}/>
|
||||||
|
</Route>
|
||||||
|
|
||||||
|
<!--Crear Cuenta Propietario-->
|
||||||
|
<Route path="/accion/5">
|
||||||
|
<ProteRoute componente={PropPage}/>
|
||||||
</Route>
|
</Route>
|
||||||
</Router>
|
</Router>
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,13 @@
|
|||||||
<script>
|
<script>
|
||||||
import NavBarLogin from "../lib/NavBarLogin.svelte";
|
import NavBarLogin from "../lib/NavBarLogin.svelte";
|
||||||
|
import BarraTexto from "../lib/BarraHorizontalConTexto.svelte";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<NavBarLogin/><br>
|
<NavBarLogin/><br>
|
||||||
<div class="container text-justify">
|
<div class="container text-justify">
|
||||||
<h4>Preguntas Frecuentes:</h4>
|
<h4>Preguntas Frecuentes:</h4>
|
||||||
|
|
||||||
<div class="row">
|
<BarraTexto text="Que es AlquilaFacil" />
|
||||||
<div class="col"><hr></div>
|
|
||||||
<div class="col-auto"><h5>Que es AlquilaFacil</h5></div>
|
|
||||||
<div class="col"><hr></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
Es un sistema el cual desarrolle para la materia de ingenieria de software / trabajo de diploma.
|
Es un sistema el cual desarrolle para la materia de ingenieria de software / trabajo de diploma.
|
||||||
En la cual se pueden publicar propiedades como un propietario y buscar propiedades para alquilar.
|
En la cual se pueden publicar propiedades como un propietario y buscar propiedades para alquilar.
|
||||||
@@ -19,10 +15,8 @@
|
|||||||
los pagos o visualizar los comprobantes de los pagos realizados.
|
los pagos o visualizar los comprobantes de los pagos realizados.
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
<BarraTexto text="Necesito una cuenta?" />
|
||||||
<div class="col"><hr></div>
|
|
||||||
<div class="col-auto"><h5>Necesito una cuenta?</h5></div>
|
Sí es necesario comunicarse con un administrador para que se te creé una cuenta ya sea para inquilino,
|
||||||
<div class="col"><hr></div>
|
propietario o ambas.
|
||||||
</div>
|
|
||||||
Sí es necesario comunicarse con un administrador para poder acceder.
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
35
Front/src/Inquilino/page.svelte
Normal file
35
Front/src/Inquilino/page.svelte
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import FormPostInq from "../lib/FormPostCli.svelte";
|
||||||
|
import NavBarAutocompletable from "../lib/NavBarAutocompletable.svelte";
|
||||||
|
import TextBar from "../lib/BarraHorizontalConTexto.svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<NavBarAutocompletable/>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="row align-items-start">
|
||||||
|
<div class="col">
|
||||||
|
<br><br>
|
||||||
|
<TextBar text="Formulario Alta Inquilino" />
|
||||||
|
Este es un formulario para crear una cuenta de Propietario.
|
||||||
|
Los campos con un asterisco (*) requieren ser completados
|
||||||
|
si o si.
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<TextBar text="¿Porque querria crear una cuenta?" />
|
||||||
|
Crear una cuenta es necesario para poder acceder al menu de
|
||||||
|
inquilino donde se mostrarán los alquileres pendientes de pago
|
||||||
|
y donde podrá buscar propiedades para alquilar.
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<TextBar text="¿Que pasa si ya tengo una cuenta de propietario?" />
|
||||||
|
Si tiene una cuenta de propietario rellene los campos igualmente y
|
||||||
|
se le añadirán las capacidades de buscar propiedades para alquilar
|
||||||
|
y ver el estado de los alquileres donde usted es inquilino.
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<br>
|
||||||
|
<FormPostInq url="http://127.0.0.1:5007/api/inquilino"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
<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>
|
|
||||||
34
Front/src/Propietario/page.svelte
Normal file
34
Front/src/Propietario/page.svelte
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import FormPostInq from "../lib/FormPostCli.svelte";
|
||||||
|
import NavBarAutocompletable from "../lib/NavBarAutocompletable.svelte";
|
||||||
|
import TextBar from "../lib/BarraHorizontalConTexto.svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<NavBarAutocompletable/>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="row align-items-start">
|
||||||
|
<div class="col">
|
||||||
|
<br><br>
|
||||||
|
<TextBar text="Formulario Alta Propietario" />
|
||||||
|
Este es un formulario para crear una cuenta de Inquilino.
|
||||||
|
Los campos con un asterisco (*) requieren ser completados
|
||||||
|
si o si.
|
||||||
|
<br><br>
|
||||||
|
<TextBar text="¿Porque querria crear una cuenta?" />
|
||||||
|
Crear una cuenta es necesario para poder acceder al menu de
|
||||||
|
propietario donde se mostrarán tanto las propiedades sin alquilar
|
||||||
|
como las alquiladas y cual es la situacion con el inquilino.
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<TextBar text="¿Que pasa si ya tengo una cuenta de Inquilino?" />
|
||||||
|
Si tiene una cuenta de Inquilino rellene los campos igualmente y
|
||||||
|
se le añadirán las capacidades de publicar propiedades y ver
|
||||||
|
el estado de los alquileres donde usted es Propietario.
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<br>
|
||||||
|
<FormPostInq url="http://127.0.0.1:5007/api/propietario"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
11
Front/src/lib/BarraHorizontalConTexto.svelte
Normal file
11
Front/src/lib/BarraHorizontalConTexto.svelte
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
let prop = $props();
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col"><hr></div>
|
||||||
|
<div class="col-auto"><h5>{prop.text}</h5></div>
|
||||||
|
<div class="col"><hr></div>
|
||||||
|
</div>
|
||||||
@@ -8,15 +8,15 @@
|
|||||||
let { url }: Props = $props();
|
let { url }: Props = $props();
|
||||||
|
|
||||||
let showAlert: boolean = $state(false);
|
let showAlert: boolean = $state(false);
|
||||||
let errorMessage: string = $state()
|
let errorMessage: string = $state("")
|
||||||
|
|
||||||
let dni: number = $state()
|
let dni: number = $state(0)
|
||||||
let email: string = $state()
|
let email: string = $state("")
|
||||||
let contraseña: string = $state()
|
let contraseña: string = $state("")
|
||||||
let nombre: string = $state()
|
let nombre: string = $state("")
|
||||||
let apellido: string = $state()
|
let apellido: string = $state("")
|
||||||
let domicilio: string = $state()
|
let domicilio: string = $state("")
|
||||||
let celular: string = $state()
|
let celular: string = $state("")
|
||||||
|
|
||||||
async function submitForm(event: any) {
|
async function submitForm(event: any) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -38,34 +38,52 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<Form on:submit={submitForm}>
|
||||||
|
<FormGroup floating label="Dni*">
|
||||||
|
<Input type="number" min='1' bind:value={dni} required />
|
||||||
|
</FormGroup>
|
||||||
|
|
||||||
<Form on:submit={submitForm}>
|
<div class="row">
|
||||||
<FormGroup floating label="Dni">
|
<div class="col">
|
||||||
<Input type="number" min='1' bind:value={dni} required />
|
<FormGroup floating label="Nombre*">
|
||||||
</FormGroup>
|
<Input type="text" bind:value={nombre} required />
|
||||||
<FormGroup floating label="Email">
|
</FormGroup>
|
||||||
<Input type="email" placeholder="ejemplo@mail.com" bind:value={email} required />
|
</div>
|
||||||
</FormGroup>
|
<div class="col">
|
||||||
<FormGroup floating label="Contraseña">
|
<FormGroup floating label="Apellido*">
|
||||||
<Input type="password" placeholder="*********" bind:value={contraseña} required />
|
<Input type="text" bind:value={apellido} required />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup floating label="Nombre">
|
</div>
|
||||||
<Input type="text" bind:value={nombre} required />
|
</div>
|
||||||
</FormGroup>
|
|
||||||
<FormGroup floating label="Apellido">
|
<FormGroup floating label="Email*">
|
||||||
<Input type="text" bind:value={apellido} required />
|
<Input type="email" placeholder="ejemplo@mail.com" bind:value={email} required />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup floating label="Domicilio">
|
<FormGroup floating label="Contraseña*">
|
||||||
<Input type="text" bind:value={domicilio} required />
|
<Input type="password" placeholder="*********" bind:value={contraseña} required />
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
<FormGroup floating label="Celular">
|
|
||||||
<Input type="tel" bind:value={celular} required />
|
<div class="row">
|
||||||
</FormGroup>
|
<div class="col">
|
||||||
<br>
|
<FormGroup floating label="Domicilio*">
|
||||||
<FormGroup>
|
<Input type="text" bind:value={domicilio} required />
|
||||||
<Button color="primary" type="submit">Ingresar</Button>
|
</FormGroup>
|
||||||
</FormGroup>
|
</div>
|
||||||
</Form>
|
<div class="col">
|
||||||
|
<FormGroup floating label="Celular*">
|
||||||
|
<Input type="tel" bind:value={celular} required />
|
||||||
|
</FormGroup>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<FormGroup>
|
||||||
|
<Button color="primary" type="submit">Crear</Button>
|
||||||
|
</FormGroup>
|
||||||
|
</Form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{#if showAlert}
|
{#if showAlert}
|
||||||
<div class='alert alert-warning alert-dismissible fade show' role='alert'>
|
<div class='alert alert-warning alert-dismissible fade show' role='alert'>
|
||||||
<strong>{errorMessage}</strong>
|
<strong>{errorMessage}</strong>
|
||||||
|
|||||||
@@ -46,6 +46,11 @@
|
|||||||
<NavbarBrand href="/">
|
<NavbarBrand href="/">
|
||||||
AlquilaFacil
|
AlquilaFacil
|
||||||
</NavbarBrand>
|
</NavbarBrand>
|
||||||
|
<div class="card">
|
||||||
|
<a href="/Menu">
|
||||||
|
<img src="/home.svg" alt="Volver al Menú"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
<NavbarToggler on:click={() => (isOpen = !isOpen)} />
|
<NavbarToggler on:click={() => (isOpen = !isOpen)} />
|
||||||
<Collapse isOpen={isOpen} navbar expand="md">
|
<Collapse isOpen={isOpen} navbar expand="md">
|
||||||
<Nav class="ms-auto" navbar>
|
<Nav class="ms-auto" navbar>
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import { navigate } from 'svelte-routing';
|
import { navigate } from 'svelte-routing';
|
||||||
import { writable } from 'svelte/store';
|
import { writable } from 'svelte/store';
|
||||||
|
|
||||||
export let component;
|
|
||||||
|
let { componente } = $props();
|
||||||
|
|
||||||
const isAuthenticated = writable(false);
|
const isAuthenticated = writable(false);
|
||||||
const isVerified = writable(false);
|
const isVerified = writable(false);
|
||||||
@@ -45,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
{#if $isAuthenticated}
|
{#if $isAuthenticated}
|
||||||
<svelte:component this={component} />
|
{@render componente()}
|
||||||
{:else}
|
{:else}
|
||||||
{navigate('/')}
|
{navigate('/')}
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
||||||
using Entidades;
|
using Entidades;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Modelo;
|
namespace Modelo;
|
||||||
public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
|
public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
|
||||||
@@ -14,12 +15,14 @@ public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
|
|||||||
Nombre = descripcion,
|
Nombre = descripcion,
|
||||||
};
|
};
|
||||||
con.Grupos.Add(gru);
|
con.Grupos.Add(gru);
|
||||||
|
|
||||||
return Guardar(con);
|
return Guardar(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public object? Listar()
|
||||||
|
{
|
||||||
|
return Context.Grupos.Include(x => x.Idpermisos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -50,7 +50,7 @@ public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
|
|||||||
int mx = con.Permisos.Max(x => x.Id);
|
int mx = con.Permisos.Max(x => x.Id);
|
||||||
|
|
||||||
Permiso per = new Permiso{
|
Permiso per = new Permiso{
|
||||||
Id = mx,
|
Id = mx+1,
|
||||||
Descripcion = descripcion
|
Descripcion = descripcion
|
||||||
};
|
};
|
||||||
con.Permisos.Add(per);
|
con.Permisos.Add(per);
|
||||||
|
|||||||
@@ -9,17 +9,15 @@ namespace Modelo;
|
|||||||
|
|
||||||
public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
|
public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
|
||||||
{
|
{
|
||||||
public bool AltaCliente(CrearClienteDto cid){
|
public bool AltaInquilino(Cliente cli){
|
||||||
var cli = new Cliente {
|
|
||||||
Dni = cid.dni,
|
|
||||||
Nombre = cid.nombre,
|
|
||||||
Domicilio = cid.domicilio,
|
|
||||||
Apellido = cid.apellido,
|
|
||||||
Celular = cid.celular,
|
|
||||||
Email = cid.email,
|
|
||||||
Contraseña = Encoding.UTF8.GetBytes(HacerHash(cid.contraseña))
|
|
||||||
};
|
|
||||||
var con = Context;
|
var con = Context;
|
||||||
|
|
||||||
|
//check por si la cuenta ya existe (puede ser propietario)
|
||||||
|
Cliente? cli2 = con.Clientes.Find(cli.Dni);
|
||||||
|
if (cli2 != null) {
|
||||||
|
cli = cli2;
|
||||||
|
}
|
||||||
|
|
||||||
var grupo = con.Grupos.Find(2);
|
var grupo = con.Grupos.Find(2);
|
||||||
if (grupo == null || grupo.Id == 0) return false;
|
if (grupo == null || grupo.Id == 0) return false;
|
||||||
|
|
||||||
@@ -35,6 +33,31 @@ public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool AltaPropietario(Cliente cli)
|
||||||
|
{
|
||||||
|
var con = Context;
|
||||||
|
|
||||||
|
//check por si la cuenta ya existe (puede ser propietario)
|
||||||
|
Cliente? cli2 = con.Clientes.Find(cli.Dni);
|
||||||
|
if (cli2 != null) {
|
||||||
|
cli = cli2;
|
||||||
|
}
|
||||||
|
|
||||||
|
var grupo = con.Grupos.Find(1);
|
||||||
|
if (grupo == null || grupo.Id == 0) return false;
|
||||||
|
|
||||||
|
con.Clientes.Add(cli);
|
||||||
|
Guardar(con);
|
||||||
|
|
||||||
|
con = Context;
|
||||||
|
cli = con.Clientes.Find(cli.Dni) ?? new();
|
||||||
|
if (cli.Dni == 0) return false;
|
||||||
|
|
||||||
|
cli.Idgrupos.Add(grupo);
|
||||||
|
return Guardar(con);
|
||||||
|
}
|
||||||
|
|
||||||
public bool CheckUsuario(LoginDto logindto) {
|
public bool CheckUsuario(LoginDto logindto) {
|
||||||
|
|
||||||
string Contraseña = HacerHash(logindto.Contraseña);
|
string Contraseña = HacerHash(logindto.Contraseña);
|
||||||
@@ -73,4 +96,5 @@ public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
|
|||||||
Guardar(con);
|
Guardar(con);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user