예제 #1
0
        public static HistorialLog EditarEntidad(object objeto, object objetoDB, string tablaNombre, string llavePrimaria, Guid usuarioID, RecordFCSContext db, string motivo, DateTime? EventoFecha = null)
        {
            HistorialLog historialLog;

            EventoFecha = EventoFecha ?? DateTime.Now;

            try
            {
                #region Crear entidades

                //Entidad extraida de la base de datos
                var entidadDB = db.Entry(objetoDB);

                //Entidad extraida del formulario
                var entidadForm = db.Entry(objeto);

                #endregion

                #region Binding Campos Nuevos con Actuales

                foreach (var propiedadNombre in entidadDB.CurrentValues.PropertyNames)
                    entidadDB.Property(propiedadNombre).CurrentValue = entidadForm.Property(propiedadNombre).CurrentValue;

                #endregion

                #region Historial validar las propiedades que sufrieron cambios

                List<HistorialLogDetalle> listaHistorialLogDetalles = new List<HistorialLogDetalle>();

                //tipo de evento: Crear, Editar, Eliminar
                string eventoTipo = "Editar";

                //Crear el HistorialLog
                historialLog = new HistorialLog()
                {
                    HistorialLogID = Guid.NewGuid(),
                    EventoFecha = EventoFecha.Value,
                    EventoTipo = eventoTipo,
                    TablaNombre = tablaNombre,
                    LlavePrimaria = llavePrimaria,
                    Motivo = motivo,
                    UsuarioID = usuarioID,
                    CategoriaTipo = ""
                };

                //Crear la lista de propiedades con cambios
                foreach (var propiedadNombre in entidadDB.CurrentValues.PropertyNames.Where(p => entidadDB.Property(p).IsModified))
                {
                    string columnaNombre = propiedadNombre;
                    var valorOriginal = (entidadDB.Property(propiedadNombre).OriginalValue ?? "").ToString();
                    var valorNuevo = (entidadDB.Property(propiedadNombre).CurrentValue ?? "").ToString();

                    listaHistorialLogDetalles.Add(new HistorialLogDetalle()
                    {
                        HistorialLogDetalleID = Guid.NewGuid(),
                        HistorialLogID = historialLog.HistorialLogID,
                        ColumnaNombre = columnaNombre,
                        ValorOriginal = valorOriginal,
                        ValorNuevo = valorNuevo
                    });
                }

                #endregion

                #region Validar el historial

                if (listaHistorialLogDetalles.Count > 0)
                    historialLog.HistorialLogDetalles = listaHistorialLogDetalles;
                else
                    historialLog = null;

                #endregion

            }
            catch (Exception)
            {

                historialLog = null;
            }

            return historialLog;
        }
예제 #2
0
        public static HistorialLog EliminarEntidad(object objeto, string tablaNombre, string llavePrimaria, Guid usuarioID, RecordFCSContext db, DateTime? EventoFecha = null)
        {
            HistorialLog historialLog;

            EventoFecha = EventoFecha ?? DateTime.Now;

            try
            {
                #region Eliminar entidades

                var entidad = db.Entry(objeto);

                #endregion

                #region Validar las propiedades que sufrieron cambios

                List<HistorialLogDetalle> listaHistorialLogDetalles = new List<HistorialLogDetalle>();

                //tipo de evento: Crear, Editar, Eliminar
                string eventoTipo = "Eliminar";
                //motivo por el cual se realiza la accion
                string motivo = "Eliminación de registro";

                //Crear el HistorialLog
                historialLog = new HistorialLog()
                {
                    HistorialLogID = Guid.NewGuid(),
                    EventoFecha = EventoFecha.Value,
                    EventoTipo = eventoTipo,
                    TablaNombre = tablaNombre,
                    LlavePrimaria = llavePrimaria,
                    Motivo = motivo,
                    UsuarioID = usuarioID,
                    CategoriaTipo = ""
                };

                //Crear la lista de propiedades con cambios
                foreach (var propiedadNombre in entidad.OriginalValues.PropertyNames)
                {
                    var valorOriginal = (entidad.Property(propiedadNombre).OriginalValue ?? "").ToString();

                    //validar que la propiedad que se va a eliminar no sea vacia o nula, asi evitamos basura en la base de datos
                    if (!string.IsNullOrWhiteSpace(valorOriginal))
                    {
                        listaHistorialLogDetalles.Add(new HistorialLogDetalle()
                        {
                            HistorialLogDetalleID = Guid.NewGuid(),
                            HistorialLogID = historialLog.HistorialLogID,
                            ColumnaNombre = propiedadNombre,
                            ValorNuevo = "",
                            ValorOriginal = valorOriginal
                        });
                    }
                }

                #endregion

                #region Validar el historial

                if (listaHistorialLogDetalles.Count > 0)
                    historialLog.HistorialLogDetalles = listaHistorialLogDetalles;
                else
                    historialLog = null;

                #endregion

            }
            catch (Exception)
            {

                historialLog = null;
            }

            return historialLog;
        }