Exemplo n.º 1
0
 public bool TryGetInfoRule(Guid id, out InfoRuleState infoRule)
 {
     if (!_initialized)
     {
         Init();
     }
     return(_infoRuleEntities.TryGetValue(id, out infoRule));
 }
Exemplo n.º 2
0
 public static InfoRuleTr Create(IAcDomain acDomain, InfoRuleState infoRule)
 {
     return new InfoRuleTr
     {
         Id = infoRule.Id,
         Author = infoRule.InfoRule.Author,
         Description = infoRule.InfoRule.Description,
         FullName = infoRule.InfoRule.GetType().Name,
         Name = infoRule.InfoRule.Name,
         Title = infoRule.InfoRule.Title,
         CreateOn = infoRule.CreateOn,
         IsEnabled = infoRule.IsEnabled
     };
 }
Exemplo n.º 3
0
 public static InfoRuleTr Create(IAcDomain acDomain, InfoRuleState infoRule)
 {
     return(new InfoRuleTr
     {
         Id = infoRule.Id,
         Author = infoRule.InfoRule.Author,
         Description = infoRule.InfoRule.Description,
         FullName = infoRule.InfoRule.GetType().Name,
         Name = infoRule.InfoRule.Name,
         Title = infoRule.InfoRule.Title,
         CreateOn = infoRule.CreateOn,
         IsEnabled = infoRule.IsEnabled
     });
 }
Exemplo n.º 4
0
        private IEnumerable <InfoRuleState> GetInfoRules()
        {
            IEnumerable <IInfoRule> validatorPlugs = null;

            using (var catalog = new DirectoryCatalog(Path.Combine(_acDomain.GetPluginBaseDirectory(PluginType.InfoConstraint), "Bin")))
            {
                using (var container = new CompositionContainer(catalog))
                {
                    var infoRuleImport = new InfoRuleImport();
                    infoRuleImport.ImportsSatisfied += (sender, e) =>
                    {
                        validatorPlugs = e.InfoRules;
                    };
                    container.ComposeParts(infoRuleImport);
                }
            }

            var  infoRuleRepository = _acDomain.RetrieveRequiredService <IRepository <InfoRule, Guid> >();
            var  oldEntities        = infoRuleRepository.AsQueryable().ToList();
            var  deleteList         = new List <InfoRule>();
            var  newList            = new List <InfoRule>();
            var  infoRules          = new List <InfoRuleState>();
            var  entities           = new List <InfoRule>();
            bool saveChanges        = false;

            foreach (var item in validatorPlugs)
            {
                var entity = new InfoRule(item.Id)
                {
                    IsEnabled = 0
                };
                var oldEntity = oldEntities.FirstOrDefault(a => a.Id == item.Id);
                if (oldEntity != null)
                {
                    ((IEntityBase)entity).CreateBy     = oldEntity.CreateBy;
                    ((IEntityBase)entity).CreateOn     = oldEntity.CreateOn;
                    ((IEntityBase)entity).CreateUserId = oldEntity.CreateUserId;
                    entity.IsEnabled = oldEntity.IsEnabled;
                    ((IEntityBase)entity).ModifiedBy     = oldEntity.ModifiedBy;
                    ((IEntityBase)entity).ModifiedOn     = oldEntity.ModifiedOn;
                    ((IEntityBase)entity).ModifiedUserId = oldEntity.ModifiedUserId;
                }
                entities.Add(entity);
                infoRules.Add(InfoRuleState.Create(entity, item));
            }
            // 待添加的新的
            foreach (var item in entities)
            {
                var item1 = item;
                var old   = oldEntities.FirstOrDefault(a => a.Id == item1.Id);
                if (old == null)
                {
                    newList.Add(item);
                }
            }
            // 待移除的旧的
            foreach (var oldEntity in oldEntities)
            {
                var item2  = oldEntity;
                var entity = entities.FirstOrDefault(a => a.Id == item2.Id);
                if (entity == null)
                {
                    deleteList.Add(oldEntity);
                }
            }
            if (newList.Count > 0)
            {
                saveChanges = true;
                foreach (var item in newList)
                {
                    infoRuleRepository.Context.RegisterNew(item);
                }
            }
            if (deleteList.Count > 0)
            {
                saveChanges = true;
                foreach (var item in deleteList)
                {
                    infoRuleRepository.Context.RegisterDeleted(item);
                }
            }
            if (saveChanges)
            {
                using (var coordinator = TransactionCoordinatorFactory.Create(infoRuleRepository.Context, _acDomain.EventBus))
                {
                    coordinator.Commit();
                }
            }

            return(infoRules);
        }
Exemplo n.º 5
0
 public bool TryGetInfoRule(Guid id, out InfoRuleState infoRule)
 {
     if (!_initialized)
     {
         Init();
     }
     return _infoRuleEntities.TryGetValue(id, out infoRule);
 }