コード例 #1
0
        public void Update(IPluginDbContext dbContext)
        {
            PluginGroupPermission pluginGroupPermission = dbContext.PluginGroupPermissions.FirstOrDefault(x => x.Id == Id);

            if (pluginGroupPermission == null)
            {
                throw new NullReferenceException($"Could not find pluginGroupPermission with id {Id}");
            }

            pluginGroupPermission.WorkflowState   = WorkflowState;
            pluginGroupPermission.GroupId         = pluginGroupPermission.GroupId;
            pluginGroupPermission.PermissionId    = pluginGroupPermission.PermissionId;
            pluginGroupPermission.IsEnabled       = pluginGroupPermission.IsEnabled;
            pluginGroupPermission.CreatedByUserId = CreatedByUserId;
            pluginGroupPermission.UpdatedByUserId = UpdatedByUserId;

            if ((dbContext as DbContext).ChangeTracker.HasChanges())
            {
                pluginGroupPermission.UpdatedAt = DateTime.UtcNow;
                pluginGroupPermission.Version  += 1;

                dbContext.PluginGroupPermissionVersions.Add(MapVersions(this));
                dbContext.SaveChanges();
            }
        }
コード例 #2
0
        public void Create(IPluginDbContext dbContext)
        {
            CreatedAt     = DateTime.UtcNow;
            UpdatedAt     = DateTime.UtcNow;
            Version       = 1;
            WorkflowState = Constants.WorkflowStates.Created;

            dbContext.PluginGroupPermissions.Add(this);
            dbContext.SaveChanges();

            dbContext.PluginGroupPermissionVersions.Add(MapVersions(this));
            dbContext.SaveChanges();
        }
コード例 #3
0
        public void Delete(IPluginDbContext dbContext)
        {
            PluginGroupPermission pluginGroupPermission = dbContext.PluginGroupPermissions.FirstOrDefault(x => x.Id == Id);

            if (pluginGroupPermission == null)
            {
                throw new NullReferenceException($"Could not find pluginGroupPermission with id {Id}");
            }

            pluginGroupPermission.WorkflowState = Constants.WorkflowStates.Removed;

            if ((dbContext as DbContext).ChangeTracker.HasChanges())
            {
                pluginGroupPermission.UpdatedAt = DateTime.UtcNow;
                pluginGroupPermission.Version  += 1;

                dbContext.PluginGroupPermissionVersions.Add(MapVersions(this));
                dbContext.SaveChanges();
            }
        }
コード例 #4
0
        public static void SeedPermissions(IPluginDbContext dbContext, IPluginPermissionsSeedData data)
        {
            // Seed plugin permissions
            var newPermissions = data.Data
                                 .Where(p => dbContext.PluginPermissions.All(x => x.ClaimName != p.ClaimName))
                                 .Select(p => new PluginPermission
            {
                PermissionName  = p.PermissionName,
                ClaimName       = p.ClaimName,
                CreatedAt       = DateTime.UtcNow,
                Version         = 1,
                WorkflowState   = Constants.WorkflowStates.Created,
                CreatedByUserId = 1
            }
                                         );

            dbContext.PluginPermissions.AddRange(newPermissions);

            dbContext.SaveChanges();
        }
コード例 #5
0
        public static void SeedData(IPluginDbContext dbContext, IPluginConfigurationSeedData data)
        {
            foreach (var configurationItem in data.Data)
            {
                if (!dbContext.PluginConfigurationValues.Any(x => x.Name == configurationItem.Name))
                {
                    var newConfigValue = new PluginConfigurationValue()
                    {
                        Name            = configurationItem.Name,
                        Value           = configurationItem.Value,
                        CreatedAt       = DateTime.UtcNow,
                        Version         = 1,
                        WorkflowState   = Constants.WorkflowStates.Created,
                        CreatedByUserId = 1
                    };
                    dbContext.PluginConfigurationValues.Add(newConfigValue);
                    dbContext.SaveChanges();
                }
            }

            //// Seed plugin permissions
            //var newPermissions = CustomersPermissionsSeedData.Data
            //    .Where(p => dbContext.PluginPermissions.All(x => x.ClaimName != p.ClaimName))
            //    .Select(p => new PluginPermission
            //    {
            //        PermissionName = p.PermissionName,
            //        ClaimName = p.ClaimName,
            //        CreatedAt = DateTime.UtcNow,
            //        Version = 1,
            //        WorkflowState = Constants.WorkflowStates.Created,
            //        CreatedByUserId = 1
            //    }
            //    );
            //dbContext.PluginPermissions.AddRange(newPermissions);

            dbContext.SaveChanges();
        }
コード例 #6
0
        public async Task UpdateDb(
            Action <T> applyChanges,
            IPluginDbContext dbContext,
            int userId)
        {
            var sectionObject = _options.CurrentValue;

            applyChanges(sectionObject);
            var dictionary = GetList(sectionObject, "");

            // Update values
            await UpdateConfig(dictionary, dbContext, userId);

            // Reload configuration from database
            if (ReloadDbConfigurationDelegates.ReloadDbConfigurationDelegate != null)
            {
                var invocationList = ReloadDbConfigurationDelegates.ReloadDbConfigurationDelegate
                                     .GetInvocationList();
                foreach (var func in invocationList)
                {
                    func.DynamicInvoke();
                }
            }
        }
コード例 #7
0
        private static async Task UpdateConfig(Dictionary <string, string> dictionary, IPluginDbContext dbContext, int userId)
        {
            var keys    = dictionary.Select(x => x.Key).ToArray();
            var configs = await dbContext.PluginConfigurationValues
                          .Where(x => keys.Contains(x.Name))
                          .ToListAsync();

            foreach (var configElement in dictionary)
            {
                var config = configs
                             .FirstOrDefault(x => x.Name == configElement.Key);
                if (config != null && config.Value != configElement.Value)
                {
                    // Add version
                    var currentVersion   = config.Version;
                    var version          = currentVersion + 1;
                    var newConfigVersion = new PluginConfigurationValueVersion()
                    {
                        Name            = config.Name,
                        Value           = config.Value,
                        Version         = currentVersion,
                        CreatedAt       = DateTime.UtcNow,
                        UpdatedAt       = DateTime.UtcNow,
                        WorkflowState   = Constants.WorkflowStates.Created,
                        CreatedByUserId = userId,
                        UpdatedByUserId = userId,
                    };
                    await dbContext.PluginConfigurationValueVersions.AddAsync(newConfigVersion);

                    config.Value           = configElement.Value;
                    config.Version         = version;
                    config.UpdatedAt       = DateTime.UtcNow;
                    config.UpdatedByUserId = userId;
                    dbContext.PluginConfigurationValues.Update(config);
                }
            }

            await dbContext.SaveChangesAsync();
        }
コード例 #8
0
 public PluginPermissionsManager(IPluginDbContext dbContext)
 {
     _dbContext = dbContext;
 }