2026-01-29 13:43:44 -03:00
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using MotoresArgentinosV2.Core.DTOs;
|
|
|
|
|
using MotoresArgentinosV2.Core.Interfaces;
|
|
|
|
|
using MotoresArgentinosV2.Infrastructure.Data;
|
|
|
|
|
using Microsoft.Data.SqlClient;
|
|
|
|
|
|
|
|
|
|
namespace MotoresArgentinosV2.Infrastructure.Services;
|
|
|
|
|
|
|
|
|
|
public class UsuariosLegacyService : IUsuariosLegacyService
|
|
|
|
|
{
|
2026-01-30 10:29:35 -03:00
|
|
|
private readonly EldiaDbContext _context;
|
2026-01-29 13:43:44 -03:00
|
|
|
private readonly ILogger<UsuariosLegacyService> _logger;
|
|
|
|
|
|
2026-01-30 10:29:35 -03:00
|
|
|
public UsuariosLegacyService(EldiaDbContext context, ILogger<UsuariosLegacyService> logger)
|
2026-01-29 13:43:44 -03:00
|
|
|
{
|
|
|
|
|
_context = context;
|
|
|
|
|
_logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<UsuarioLegacyDto?> ObtenerParticularPorUsuarioAsync(string nombreUsuario)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var paramUsuario = new SqlParameter("@usuario_nom", nombreUsuario);
|
|
|
|
|
|
|
|
|
|
// Usamos SqlQueryRaw para mapear a DTO directamente (EF Core feature moderna)
|
|
|
|
|
// Nota: Si las columnas no coinciden exactamente, EF no llenará las propiedades.
|
|
|
|
|
// Para robustez en legacy, a veces conviene un mapeo manual si los nombres de columna son muy crípticos.
|
|
|
|
|
var resultado = await _context.Database
|
|
|
|
|
.SqlQueryRaw<UsuarioLegacyDto>("EXEC dbo.sp_VerDatosUsuario @usuario_nom", paramUsuario)
|
|
|
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
|
|
return resultado.FirstOrDefault();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Error al obtener datos de particular legacy para usuario: {Usuario}", nombreUsuario);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<AgenciaLegacyDto?> ObtenerAgenciaPorUsuarioAsync(string nombreUsuario)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var paramUsuario = new SqlParameter("@usuario_nom", nombreUsuario);
|
|
|
|
|
|
|
|
|
|
var resultado = await _context.Database
|
|
|
|
|
.SqlQueryRaw<AgenciaLegacyDto>("EXEC dbo.sp_VerDatosAgencia @usuario_nom", paramUsuario)
|
|
|
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
|
|
return resultado.FirstOrDefault();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Error al obtener datos de agencia legacy para usuario: {Usuario}", nombreUsuario);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|