Init Commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using MotoresArgentinosV2.Core.Entities;
|
||||
|
||||
namespace MotoresArgentinosV2.Infrastructure.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Contexto de Entity Framework para la base de datos Autos (legacy)
|
||||
/// Servidor: TECNICA3
|
||||
/// Base de Datos: autos
|
||||
/// Propósito: Acceso a operaciones de pago y medios de pago
|
||||
/// </summary>
|
||||
public class AutosDbContext : DbContext
|
||||
{
|
||||
public AutosDbContext(DbContextOptions<AutosDbContext> options) : base(options)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tabla de operaciones de pago
|
||||
/// </summary>
|
||||
public DbSet<Operacion> Operaciones { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Tabla de medios de pago disponibles
|
||||
/// </summary>
|
||||
public DbSet<MedioDePago> MediosDePago { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
// Configuración para la tabla operaciones
|
||||
modelBuilder.Entity<Operacion>(entity =>
|
||||
{
|
||||
entity.ToTable("operaciones");
|
||||
entity.HasKey(e => e.Id);
|
||||
entity.Property(e => e.Id).HasColumnName("id");
|
||||
entity.Property(e => e.Fecha).HasColumnName("fecha");
|
||||
entity.Property(e => e.Motivo).HasColumnName("motivo").HasMaxLength(50);
|
||||
entity.Property(e => e.Moneda).HasColumnName("moneda").HasMaxLength(50);
|
||||
entity.Property(e => e.Direccionentrega).HasColumnName("direccionentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Validaciondomicilio).HasColumnName("validaciondomicilio").HasMaxLength(50);
|
||||
entity.Property(e => e.Codigopedido).HasColumnName("codigopedido").HasMaxLength(50);
|
||||
entity.Property(e => e.Nombreentrega).HasColumnName("nombreentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Fechahora).HasColumnName("fechahora").HasMaxLength(50);
|
||||
entity.Property(e => e.Telefonocomprador).HasColumnName("telefonocomprador").HasMaxLength(50);
|
||||
entity.Property(e => e.Barrioentrega).HasColumnName("barrioentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Codautorizacion).HasColumnName("codautorizacion").HasMaxLength(50);
|
||||
entity.Property(e => e.Paisentrega).HasColumnName("paisentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Cuotas).HasColumnName("cuotas").HasMaxLength(50);
|
||||
entity.Property(e => e.Validafechanac).HasColumnName("validafechanac").HasMaxLength(50);
|
||||
entity.Property(e => e.Validanrodoc).HasColumnName("validanrodoc").HasMaxLength(50);
|
||||
entity.Property(e => e.Titular).HasColumnName("titular").HasMaxLength(50);
|
||||
entity.Property(e => e.Pedido).HasColumnName("pedido").HasMaxLength(50);
|
||||
entity.Property(e => e.Zipentrega).HasColumnName("zipentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Monto).HasColumnName("monto").HasMaxLength(50);
|
||||
entity.Property(e => e.Tarjeta).HasColumnName("tarjeta").HasMaxLength(50);
|
||||
entity.Property(e => e.Fechaentrega).HasColumnName("fechaentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Emailcomprador).HasColumnName("emailcomprador").HasMaxLength(50);
|
||||
entity.Property(e => e.Validanropuerta).HasColumnName("validanropuerta").HasMaxLength(50);
|
||||
entity.Property(e => e.Ciudadentrega).HasColumnName("ciudadentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Validatipodoc).HasColumnName("validatipodoc").HasMaxLength(50);
|
||||
entity.Property(e => e.Noperacion).HasColumnName("noperacion").HasMaxLength(50);
|
||||
entity.Property(e => e.Estadoentrega).HasColumnName("estadoentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Resultado).HasColumnName("resultado").HasMaxLength(50);
|
||||
entity.Property(e => e.Mensajeentrega).HasColumnName("mensajeentrega").HasMaxLength(50);
|
||||
entity.Property(e => e.Precioneto).HasColumnName("precioneto");
|
||||
});
|
||||
|
||||
// Configuración para la tabla mediodepago
|
||||
modelBuilder.Entity<MedioDePago>(entity =>
|
||||
{
|
||||
entity.ToTable("mediodepago");
|
||||
entity.HasKey(e => e.Id);
|
||||
entity.Property(e => e.Id).HasColumnName("id");
|
||||
entity.Property(e => e.Mediodepago).HasColumnName("mediodepago").HasMaxLength(20);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// Backend/MotoresArgentinosV2.Infrastructure/Data/InternetDbContext.cs
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using MotoresArgentinosV2.Core.DTOs;
|
||||
|
||||
namespace MotoresArgentinosV2.Infrastructure.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Contexto de Entity Framework para la base de datos Internet (legacy)
|
||||
/// Servidor: ...
|
||||
/// Base de Datos: internet
|
||||
/// Propósito: Acceso a datos de avisos web
|
||||
/// </summary>
|
||||
public class InternetDbContext : DbContext
|
||||
{
|
||||
public InternetDbContext(DbContextOptions<InternetDbContext> options) : base(options)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
// Registrar el DTO como entidad sin llave (Keyless) para que SqlQueryRaw funcione bien
|
||||
modelBuilder.Entity<DatosAvisoDto>(e =>
|
||||
{
|
||||
e.HasNoKey();
|
||||
e.ToView(null); // No mapea a tabla
|
||||
|
||||
// Configurar precisión de decimales para silenciar warnings
|
||||
e.Property(p => p.ImporteSiniva).HasColumnType("decimal(18,2)");
|
||||
e.Property(p => p.ImporteTotsiniva).HasColumnType("decimal(18,2)");
|
||||
e.Property(p => p.PorcentajeCombinado).HasColumnType("decimal(18,2)");
|
||||
e.Property(p => p.Centimetros).HasColumnType("decimal(18,2)");
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using MotoresArgentinosV2.Core.Entities;
|
||||
|
||||
namespace MotoresArgentinosV2.Infrastructure.Data;
|
||||
|
||||
public class MotoresV2DbContext : DbContext
|
||||
{
|
||||
public MotoresV2DbContext(DbContextOptions<MotoresV2DbContext> options)
|
||||
: base(options)
|
||||
{
|
||||
}
|
||||
|
||||
public DbSet<User> Users { get; set; }
|
||||
public DbSet<Ad> Ads { get; set; }
|
||||
public DbSet<AdPhoto> AdPhotos { get; set; }
|
||||
public DbSet<AdFeature> AdFeatures { get; set; }
|
||||
public DbSet<Brand> Brands { get; set; }
|
||||
public DbSet<Model> Models { get; set; }
|
||||
public DbSet<TransactionRecord> Transactions { get; set; }
|
||||
public DbSet<Favorite> Favorites { get; set; }
|
||||
public DbSet<ChatMessage> ChatMessages { get; set; }
|
||||
public DbSet<AuditLog> AuditLogs { get; set; }
|
||||
public DbSet<PaymentMethod> PaymentMethods { get; set; }
|
||||
public DbSet<RefreshToken> RefreshTokens { get; set; }
|
||||
public DbSet<AdViewLog> AdViewLogs { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<PaymentMethod>().HasKey(p => p.PaymentMethodID);
|
||||
modelBuilder.Entity<ChatMessage>().HasKey(m => m.MessageID);
|
||||
modelBuilder.Entity<ChatMessage>().ToTable("ChatMessages");
|
||||
|
||||
// Configuración de Cascada para Mensajes
|
||||
modelBuilder.Entity<ChatMessage>()
|
||||
.HasOne(m => m.Ad)
|
||||
.WithMany(a => a.Messages)
|
||||
.HasForeignKey(m => m.AdID)
|
||||
.OnDelete(DeleteBehavior.Cascade); // Esto asegura que EF intente borrar los mensajes
|
||||
|
||||
// Configuración de Favorites (Clave compuesta)
|
||||
modelBuilder.Entity<Favorite>()
|
||||
.HasKey(f => new { f.UserID, f.AdID });
|
||||
|
||||
// Nombres de tablas exactos
|
||||
modelBuilder.Entity<Favorite>().ToTable("Favorites");
|
||||
|
||||
// Configuración de AdFeatures (Clave compuesta)
|
||||
modelBuilder.Entity<AdFeature>()
|
||||
.HasKey(af => new { af.AdID, af.FeatureKey });
|
||||
|
||||
// Configuración de Identificadores (Claves Primarias)
|
||||
modelBuilder.Entity<AdPhoto>().HasKey(p => p.PhotoID);
|
||||
modelBuilder.Entity<Brand>().HasKey(b => b.BrandID);
|
||||
modelBuilder.Entity<Model>().HasKey(m => m.ModelID);
|
||||
modelBuilder.Entity<User>().HasKey(u => u.UserID);
|
||||
modelBuilder.Entity<Ad>().HasKey(a => a.AdID);
|
||||
modelBuilder.Entity<TransactionRecord>().HasKey(t => t.TransactionID);
|
||||
modelBuilder.Entity<Ad>().Property(a => a.Price).HasColumnType("decimal(18,2)");
|
||||
modelBuilder.Entity<TransactionRecord>().Property(t => t.Amount).HasColumnType("decimal(18,2)");
|
||||
|
||||
// Nombres de tablas exactos para coincidir con el Roadmap
|
||||
modelBuilder.Entity<User>().ToTable("Users");
|
||||
modelBuilder.Entity<Ad>().ToTable("Ads");
|
||||
modelBuilder.Entity<AdPhoto>().ToTable("AdPhotos");
|
||||
modelBuilder.Entity<AdFeature>().ToTable("AdFeatures");
|
||||
modelBuilder.Entity<TransactionRecord>().ToTable("Transactions");
|
||||
|
||||
// Configuración de AdViewLog
|
||||
modelBuilder.Entity<AdViewLog>().ToTable("AdViewLogs");
|
||||
modelBuilder.Entity<AdViewLog>().HasIndex(l => new { l.AdID, l.IPAddress, l.ViewDate });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user