diff --git a/Aspnet/Builder/DtoBuilder/VentasDtoBuilder.cs b/Aspnet/Builder/DtoBuilder/VentasDtoBuilder.cs
new file mode 100644
index 0000000..5968bea
--- /dev/null
+++ b/Aspnet/Builder/DtoBuilder/VentasDtoBuilder.cs
@@ -0,0 +1,41 @@
+using Entidades.Dto;
+
+namespace AlquilaFacil.Builder;
+public class VentasDtoBuilder: Builder {
+ public VentasDtoBuilder SetId(long id) {
+ data.Id = id;
+ return this;
+ }
+ public VentasDtoBuilder SetMonto(decimal monto) {
+ data.Monto = monto;
+ return this;
+ }
+ public VentasDtoBuilder SetDivisa(string divisa) {
+ data.Divisa = divisa;
+ return this;
+ }
+ public VentasDtoBuilder SetUbicacion(string ubicacion) {
+ data.Ubicacion = ubicacion;
+ return this;
+ }
+ public VentasDtoBuilder SetNombreVendedor(string nombre) {
+ data.NombreVendedor = nombre;
+ return this;
+ }
+ public VentasDtoBuilder SetIdVendedor(long idVendedor) {
+ data.Id = idVendedor;
+ return this;
+ }
+ public VentasDtoBuilder SetNombreComprador(string nombre) {
+ data.NombreComprador = nombre;
+ return this;
+ }
+ public VentasDtoBuilder SetIdComprador(long Id) {
+ data.IdComprador = Id;
+ return this;
+ }
+ public VentasDtoBuilder SetEstado(string estado) {
+ data.Estado = estado;
+ return this;
+ }
+}
\ No newline at end of file
diff --git a/Aspnet/Controllers/VentaController.cs b/Aspnet/Controllers/VentaController.cs
index 2fa2822..9236327 100644
--- a/Aspnet/Controllers/VentaController.cs
+++ b/Aspnet/Controllers/VentaController.cs
@@ -47,17 +47,74 @@ public class VentaController:ControllerBase {
}
+ */
[HttpGet("/api/venta")]
- public IActionResult ObtenerVenta(long idventa) {
+ public IActionResult ObtenerVenta([FromHeader(Name="Auth")]string Auth, long idventa=0) {
+ var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
+ if (validacion1 == false){
+ validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
+ if (validacion1 == false) {
+ return Unauthorized();
+ }
+ }
+ if (idventa <= 0) return BadRequest(new { message = "No existen ventas validas para la id 0"});
+ Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
+ if (cli == null) return Unauthorized();
+
+ var ventas = RepositorioVentas.Singleton.ObtenerVentaPorId(idventa);
+ if (ventas == null) return BadRequest(new { message ="No hay una venta con ese id"});
+ if (ventas.IdVendedor !=cli.Dni && ventas.IdComprador != cli.Dni) return Unauthorized();
+
+ var v = new VentasDtoBuilder()
+ .SetId(ventas.Id)
+ .SetMonto(ventas.Monto)
+ .SetDivisa(ventas.IddivisaNavigation.Signo)
+ .SetUbicacion(ventas.IdpropiedadNavigation.Ubicacion)
+ .SetNombreVendedor($"{ventas.IdVendedorNavigation.Nombre} {ventas.IdVendedorNavigation.Apellido}")
+ .SetIdVendedor(ventas.IdVendedor??0)
+ .SetNombreComprador($"{ventas.IdCompradorNavigation.Nombre} {ventas.IdCompradorNavigation.Apellido}")
+ .SetIdComprador(ventas.IdComprador??0)
+ .SetEstado(ventas.IdestadoNavigation.Descripcion??"")
+ .Build();
+
+ return Ok(new { data = v, iscomprador = (ventas.IdComprador==cli.Dni)?true:false});
}
[HttpGet("/api/ventas")]
- public IActionResult ObtenerVenta(long idventa) {
+ public IActionResult ObtenerVenta([FromHeader(Name="Auth")]string Auth) {
+ var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
+ if (validacion1 == false){
+ validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
+ if (validacion1 == false) {
+ return Unauthorized();
+ }
+ }
+ Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
+ if (cli == null) return Unauthorized();
+
+ var ventas = RepositorioVentas.Singleton.ObtenerVentasPorDni(cli.Dni);
+ if (ventas == null) return BadRequest(new { message ="no estas involucrado en ninguna venta o compra"});
+
+ List lista = new();
+ foreach (var i in ventas) {
+ var v = new VentasDtoBuilder()
+ .SetId(i.Id)
+ .SetMonto(i.Monto)
+ .SetDivisa(i.IddivisaNavigation.Signo)
+ .SetUbicacion(i.IdpropiedadNavigation.Ubicacion)
+ .SetNombreVendedor($"{i.IdVendedorNavigation.Nombre} {i.IdVendedorNavigation.Apellido}")
+ .SetIdVendedor(i.IdVendedor??0)
+ .SetNombreComprador($"{i.IdCompradorNavigation.Nombre} {i.IdCompradorNavigation.Apellido}")
+ .SetIdComprador(i.IdComprador??0)
+ .SetEstado(i.IdestadoNavigation.Descripcion??"")
+ .Build();
+ lista.Add(v);
+ }
+ return Ok(lista);
}
- */
[HttpGet("/api/opcionventa")]
public IActionResult ObtenerDto([FromHeader(Name="Auth")]string Auth, long idcontrato=0) {
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
diff --git a/Entidades/Dto/VentasDto.cs b/Entidades/Dto/VentasDto.cs
new file mode 100644
index 0000000..5ee9937
--- /dev/null
+++ b/Entidades/Dto/VentasDto.cs
@@ -0,0 +1,12 @@
+namespace Entidades.Dto;
+public class VentasDto {
+ public long Id { get; set; }
+ public decimal Monto { get; set; }
+ public string Divisa { get; set; }="";
+ public string Ubicacion { get; set; }="";
+ public string NombreVendedor { get; set; }="";
+ public long IdVendedor { get; set; }
+ public string NombreComprador { get; set; }="";
+ public long IdComprador { get; set; }
+ public string Estado { get; set; }="";
+}
\ No newline at end of file
diff --git a/Front/src/App.svelte b/Front/src/App.svelte
index 8575022..d5c2f3f 100644
--- a/Front/src/App.svelte
+++ b/Front/src/App.svelte
@@ -21,7 +21,9 @@
import ControlAlquileresPropietario from "./paginas/ControlAlquileresPropietario.svelte";
import ContratosPropietario from "./paginas/ContratosPropietario.svelte";
import ContratoInquilino from "./paginas/ContratoInquilino.svelte";
- import Informes from "./paginas/Informes.svelte";
+ import Informes from "./paginas/Informes.svelte";
+ import CompraYVentas from "./paginas/CompraYVenta.svelte";
+ import Ventas from "./paginas/Ventas.svelte";
@@ -95,6 +97,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Front/src/paginas/CompraYVenta.svelte b/Front/src/paginas/CompraYVenta.svelte
new file mode 100644
index 0000000..17e9c26
--- /dev/null
+++ b/Front/src/paginas/CompraYVenta.svelte
@@ -0,0 +1,75 @@
+
+
+
+
+{#if modaldata}
+ !!(modaldata = "")} />
+{/if}
+
+
+
+ {#each ventas as venta (venta.id)}
+
+
+
+
+
+ Monto: {venta.monto} {venta.divisa}
+ Ubicación: {venta.ubicacion}
+ Estado: {venta.estado}
+
+
+
+
+
+ {/each}
+
+
+
+
\ No newline at end of file
diff --git a/Front/src/paginas/ContratoInquilino.svelte b/Front/src/paginas/ContratoInquilino.svelte
index 8fedbec..372c24c 100644
--- a/Front/src/paginas/ContratoInquilino.svelte
+++ b/Front/src/paginas/ContratoInquilino.svelte
@@ -525,7 +525,7 @@
Ejercer
{#if dtoVenta.fueEjercido}
-
- navigate("/accion/13?idventa="+dtoVenta.id)}>
+ navigate("/Ventas?idventa="+dtoVenta.id)}>
Ir a la pagina de la Venta
diff --git a/Front/src/paginas/Ventas.svelte b/Front/src/paginas/Ventas.svelte
new file mode 100644
index 0000000..e260581
--- /dev/null
+++ b/Front/src/paginas/Ventas.svelte
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/Front/src/types.d.ts b/Front/src/types.d.ts
index 0971a8c..a23eeec 100644
--- a/Front/src/types.d.ts
+++ b/Front/src/types.d.ts
@@ -152,4 +152,16 @@ export type OpcionVentaDto = {
divisa:string,
enOrden:boolean,
fueEjercido:boolean
+}
+
+export type VentasDto = {
+ id:number,
+ monto:numver,
+ divisa:string,
+ ubicacion:string,
+ nombreVendedor:string,
+ idVendedor:number,
+ nombreComprador:string,
+ idComprador:number,
+ estado:string,
}
\ No newline at end of file
diff --git a/Modelo/RepositorioVentas.cs b/Modelo/RepositorioVentas.cs
index 35d85f7..3ce7356 100644
--- a/Modelo/RepositorioVentas.cs
+++ b/Modelo/RepositorioVentas.cs
@@ -11,6 +11,33 @@ public class RepositorioVentas: RepositorioBase {
return c;
}
+ public Venta? ObtenerVentaPorId(long idventa) {
+ var con = Context;
+ var vent = con.Ventas
+ .Include(x=>x.IddivisaNavigation)
+ .Include(x=>x.IdestadoNavigation)
+ .Include(x=>x.IdVendedorNavigation)
+ .Include(x=>x.IdCompradorNavigation)
+ .Include(x=>x.IdpropiedadNavigation)
+ .Where(x=>x.Idestado != 1)
+ .FirstOrDefault(x=>x.Id == idventa);
+ if (vent == null) return null;
+ return vent;
+ }
+
+ public IQueryable? ObtenerVentasPorDni(long dni) {
+ var con = Context;
+ var venta = con.Ventas
+ .Include(x=>x.IddivisaNavigation)
+ .Include(x=>x.IdestadoNavigation)
+ .Include(x=>x.IdVendedorNavigation)
+ .Include(x=>x.IdCompradorNavigation)
+ .Include(x=>x.IdpropiedadNavigation)
+ .Where(x=>(x.IdComprador == dni || x.IdVendedor == dni) && x.Idestado!=1 )
+ .Distinct();
+ return venta;
+ }
+
public bool PatchVenta(Venta venta) {
var con = Context;
var a = con.Ventas.FirstOrDefault(x=>x.Id == venta.Id);