示例#1
0
        public bool AssignedLog(Entity data, OwnerObject from, OwnerObject to, Schema.Domain.Entity entityMetadata)
        {
            if (!entityMetadata.LogEnabled)
            {
                return(false);
            }
            EntityLog entity = new EntityLog
            {
                EntityId       = entityMetadata.EntityId,
                EntityLogId    = Guid.NewGuid(),
                OperationType  = OperationTypeEnum.Assign,
                UserId         = _currentUser.SystemUserId,
                OrganizationId = _currentUser.OrganizationId,
                CreatedOn      = DateTime.Now,
                RecordId       = data.GetIdValue()
            };
            var datas = new List <EntityLogChangeData>
            {
                new EntityLogChangeData()
                {
                    Name = "ownerid", Original = from.SerializeToJson(), Value = to.SerializeToJson()
                }
            };

            entity.ChangeData = datas.SerializeToJson();
            return(Create(entity));
        }
示例#2
0
        public void LogChanges(ChangeTracker changes)
        {
            var modifiedEntities = changes.Entries().Where(p => p.State == EntityState.Modified).ToList(); // Updated Records
            var deletedEntities  = changes.Entries().Where(p => p.State == EntityState.Deleted).ToList();  // Deleted Records
            var userId           = httpcontext.HttpContext.GetAuthUser();                                  // Get Auth User
            var now = System.DateTime.UtcNow;

            foreach (var change in modifiedEntities)                                                                        // Modified Data
            {
                bool LogModelState = change.Entity.GetType().CheckAttributeExist <LogModelAttribute>();                     // Check LogModel Attribute

                var entityName = change.Entity.GetType().Name;                                                              // Table name
                var PrimaryKey = change.OriginalValues.Properties.FirstOrDefault(prop => prop.IsPrimaryKey() == true).Name; //Table Primary Key

                EntityLog log = new EntityLog(userId, entityName, change.OriginalValues[PrimaryKey].ToInt(), now, ChangeState.Updated);
                foreach (IProperty prop in change.OriginalValues.Properties)                        // Updated Props
                {
                    bool LogPropState = prop.PropertyInfo.CheckAttributeExist <LogPropAttribute>(); // Check LogProp Attribute
                    if (!LogModelState && !LogPropState)
                    {
                        continue;
                    }

                    var    originalValue = change.OriginalValues[prop.Name].ToString();
                    var    currentValue  = change.CurrentValues[prop.Name]?.ToString();
                    string a             = prop.GetDisplayName();
                    if (originalValue != currentValue)
                    {
                        log.ChangedValues.Add(new ChangedValues(prop.GetDisplayName(), originalValue, currentValue));
                    }
                }
                elasticSearchService.CheckExistsAndInsert <EntityLog>(IndexType.entity_log, log); // Send to Elastic
            }

            foreach (var deleted in deletedEntities)                                                     // Deleted Data
            {
                var  entityName    = deleted.Entity.GetType().Name;                                      // Table name
                bool LogModelState = deleted.Entity.GetType().CheckAttributeExist <LogModelAttribute>(); // Check LogModel Attribute
                if (!LogModelState)
                {
                    continue;
                }
                var       PrimaryKey = deleted.OriginalValues.Properties.FirstOrDefault(prop => prop.IsPrimaryKey() == true).Name; //Table Primary Key
                EntityLog log        = new EntityLog(userId, entityName, deleted.OriginalValues[PrimaryKey].ToInt(), now, ChangeState.Deleted);
                elasticSearchService.CheckExistsAndInsert <EntityLog>(IndexType.entity_log, log);                                  // Send to Elastic
            }
        }
示例#3
0
        public bool UpdatedLog(Entity originData, Entity newData, Schema.Domain.Entity entityMetadata, List <Schema.Domain.Attribute> attributeMetadatas)
        {
            if (!entityMetadata.LogEnabled)
            {
                return(false);
            }
            EntityLog entity = new EntityLog
            {
                EntityId       = entityMetadata.EntityId,
                EntityLogId    = Guid.NewGuid(),
                OperationType  = OperationTypeEnum.Update,
                UserId         = _currentUser.SystemUserId,
                OrganizationId = _currentUser.OrganizationId,
                CreatedOn      = DateTime.Now,
                RecordId       = newData.GetIdValue(),
                AttributeMask  = string.Join(",", newData.Keys)
            };
            var datas = new List <EntityLogChangeData>();

            foreach (var item in newData)
            {
                var originValue = originData.TryGetValue(item.Key, out object value) ? value.ToString() : "";
                if (!originValue.IsCaseInsensitiveEqual(item.Value != null ? item.Value.ToString() : ""))
                {
                    var attr = attributeMetadatas.Find(n => n.Name.IsCaseInsensitiveEqual(item.Key));
                    if (!item.Key.IsCaseInsensitiveEqual("createdon") && !item.Key.IsCaseInsensitiveEqual("createdby") &&
                        !item.Key.IsCaseInsensitiveEqual("modifiedon") && !item.Key.IsCaseInsensitiveEqual("modifiedby") &&
                        !item.Key.IsCaseInsensitiveEqual("versionnumber"))
                    {
                        if (attr != null && (attr.TypeIsText() || attr.TypeIsNText()))
                        {
                            continue;
                        }

                        datas.Add(new EntityLogChangeData()
                        {
                            Name = item.Key, Original = originData[item.Key].ToString(), Value = item.Value != null ? item.Value.ToString() : ""
                        });
                    }
                }
            }
            entity.ChangeData = datas.SerializeToJson();
            return(Create(entity));
        }
示例#4
0
        public bool SharedLog(Entity data, Schema.Domain.Entity entityMetadata)
        {
            if (!entityMetadata.LogEnabled)
            {
                return(false);
            }
            EntityLog entity = new EntityLog
            {
                EntityId       = entityMetadata.EntityId,
                EntityLogId    = Guid.NewGuid(),
                OperationType  = OperationTypeEnum.Share,
                UserId         = _currentUser.SystemUserId,
                OrganizationId = _currentUser.OrganizationId,
                CreatedOn      = DateTime.Now,
                RecordId       = data.GetIdValue()
            };

            return(Create(entity));
        }
示例#5
0
 public bool Create(EntityLog entity)
 {
     return(_entityLogRepository.Create(entity));
 }