9.6 Guardando el historial de cambios
Puedes agregar otro action filter para ir registrando todos los cambios que realizan los usuarios al sistema. Vamos a registrar el usuario, la fecha en que se realiza el cambio, y un campo adicional para agregar opciones adicionales, como por ejemplo mostrar el valor anterior.
Agregamos nuestra clase HistorialDAO para registrar el historial de los usuarios. El método borrar va a borrar la información del historial del registro que se esta borrando.
public class HistorialDAO
{
private readonly CaducaContext contexto;
private readonly LocService localizacion;
public HistorialDAO(CaducaContext context, LocService locService)
{
this.contexto = context;
this.localizacion = locService;
}
public async Task<bool> AgregarAsync(int usuarioId,
int actividad,
string nombreTabla,
int origenId,
string observaciones)
{
var tablaId = await ObtenerIdTablaAsync(nombreTabla);
Historial historial = new Historial
{
Actividad = actividad,
FechaHora = DateTime.Now,
Observa = observaciones,
OrigenId = origenId,
TablaId = tablaId,
UsuarioId = usuarioId
};
contexto.Historial.Add(historial);
contexto.SaveChanges();
return true;
}
private async Task<int> ObtenerIdTablaAsync(string nombreTabla)
{
Tabla tabla = await contexto.Tabla
.FirstOrDefaultAsync(e => e.Nombre == nombreTabla);
if (tabla == null)
{
return -1;
}
return tabla.Id;
}
public async Task<bool> BorraAsync( string nombreTabla,
int origenId)
{
var tablaId = await ObtenerIdTablaAsync(nombreTabla);
var consulta = await (from historial in contexto.Historial
where historial.TablaId == tablaId
&& historial.OrigenId == origenId
select historial).ToListAsync();
contexto.Historial.RemoveRange(consulta);
contexto.SaveChanges();
return true;
}
}Agregamos una Enumeración ActividadEnumeration con los tipos de actividades que los usuarios pueden realizar.
Para esto agregamos una propiedad llamada Id de tipo entero a nuestra clase BaseController, aqui vamos a agregar el Id de cada registro que se este actualizando
En ProductosController a los métodos Post, Put y Delete vamos a agregar el Id del registro y agregamos nuestro filtro historial
En nuestra carpeta Filters agregamos un nueva clase HistorialFilter
De esta manera cada vez que se guarda, modifica, o borra algún registro guardamos el historial de cambios del registro.
Last updated
Was this helpful?