public ChangeHistoryViewModel(ModuleNames module, int? rootModelKey)
 {
     DisplayName = module.ToString() + " Change History";
     Module = module;
     RootModelKey = rootModelKey;
     Results = new SmartCollection<AuditedModelValue>();
 }
Beispiel #2
0
 public PdfViewModel(string displayName, ModuleNames module, ReportRecord reportRecord)
 {
     DisplayName = displayName;
     this.ReportRecord = reportRecord;
     DialogHeight = IoC.Get<IShell>().CurrentHeight - 125;
     DialogWidth = IoC.Get<IShell>().CurrentWidth - 50;
     this.ModuleName = module;
 }
Beispiel #3
0
        public void LoadModule(CliModuleBase module)
        {
            var cliModuleAttribute = module.GetType().GetCustomAttribute <CliModuleAttribute>();

            CliConsole.WriteLine($"module ({cliModuleAttribute.ModuleName})");
            ModuleNames.Add(cliModuleAttribute.ModuleName);
            MethodsByModules[cliModuleAttribute.ModuleName] = new List <string>();

            var methods = module.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

            foreach (MethodInfo methodInfo in methods.OrderBy(m => m.Name))
            {
                var cliProperty = methodInfo.GetCustomAttribute <CliPropertyAttribute>();
                var cliFunction = methodInfo.GetCustomAttribute <CliFunctionAttribute>();

                bool isProperty = cliProperty != null;

                string objectName = cliProperty?.ObjectName ?? cliFunction?.ObjectName;
                string itemName   = cliProperty?.PropertyName ?? cliFunction?.FunctionName;

                if (objectName == null)
                {
                    throw new InvalidDataException($"Method {methodInfo.Name} of {module.GetType().Name} should be decorated with one of {nameof(CliPropertyAttribute)} or {nameof(CliFunctionAttribute)}");
                }

                ObjectInstance instance;
                if (!_objects.ContainsKey(objectName))
                {
                    instance = _engine.JintEngine.Object.Construct(Arguments.Empty);
                    _engine.JintEngine.SetValue(objectName, instance);
                    _objects[objectName] = instance;
                }

                instance = _objects[objectName];
                var             @delegate      = CreateDelegate(methodInfo, module);
                DelegateWrapper nativeDelegate = new DelegateWrapper(_engine.JintEngine, @delegate);

                if (isProperty)
                {
                    CliConsole.WriteKeyword($"  {objectName}");
                    CliConsole.WriteLine($".{itemName}");

                    MethodsByModules[objectName].Add(itemName);
                    AddProperty(instance, itemName, nativeDelegate);
                }
                else
                {
                    CliConsole.WriteKeyword($"  {objectName}");
                    CliConsole.WriteLine($".{itemName}({string.Join(", ", methodInfo.GetParameters().Select(p => p.Name))})");

                    MethodsByModules[objectName].Add(itemName + "(");
                    AddMethod(instance, itemName, nativeDelegate);
                }
            }

            CliConsole.WriteLine();
        }
Beispiel #4
0
 public void TryAddModules(string[] modules)
 {
     foreach (string module in modules)
     {
         if (!ModuleNames.Contains(module))
         {
             ModuleNames.Add(module);
         }
     }
 }
Beispiel #5
0
 public void Load(string file)
 {
     if (!IsLoaded)
     {
         ModuleNames.Clear();
         var listItems = JsonConvert.DeserializeObject <List <ModuleNameData> >(Resources.Load <TextAsset>(file).text);
         listItems.ForEach(item => ModuleNames.Add(item.id, item));
         IsLoaded = true;
     }
 }
        public virtual async Task <IReadOnlyCollection <string> > GetEnabledModulesAsync(ulong guildId)
        {
            var cacheKey = CacheKey.GetEnabledModulesCacheKey(guildId);
            var cache    = await _cache.GetAsync <string[]>(cacheKey);

            if (cache.HasValue)
            {
                return(cache.Value);
            }

            using var scope = _provider.CreateScope();
            var repo = scope.ServiceProvider.GetService <IGuildModuleRepository>();

            string[] enabledModules;

            if (repo != null)
            {
                var entities = (await repo.GetAllAsync(guildId))
                               .Where(gm => gm.Enabled)
                               .ToDictionary(gm => gm.Name, gm => gm.Enabled, StringComparer.OrdinalIgnoreCase);

                var result = entities
                             .Where(kv => kv.Value)
                             .Select(kv => kv.Key)
                             .ToList();

                // Add the default-enabled modules.
                result.AddRange(DefaultModuleNames.Where(name => !entities.ContainsKey(name)));

                // Add the modules that are always enabled.
                foreach (var name in CoreModuleNames)
                {
                    if (!result.Contains(name, StringComparer.OrdinalIgnoreCase))
                    {
                        result.Add(name);
                    }
                }

                enabledModules = result.ToArray();
            }
            else
            {
                enabledModules = ModuleNames.ToArray();
            }

            await _cache.SetAsync(cacheKey, enabledModules, CacheTime);

            return(enabledModules);
        }
        public virtual async Task SetModuleEnabledAsync(ulong guildId, string casedModuleName, bool enabled)
        {
            var moduleName = ModuleNames.FirstOrDefault(name => name.Equals(casedModuleName, StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(moduleName))
            {
                throw new KeyNotFoundException("The module could not be found.");
            }

            using var scope = _provider.CreateScope();
            var repo = scope.ServiceProvider.GetService <IGuildModuleRepository>();

            if (repo == null)
            {
                throw new NotSupportedException($"There was no {nameof(IGuildModuleRepository)} registered. {nameof(SetModuleEnabledAsync)} is not available.");
            }

            var enabledGuildModule = await repo.GetAsync(guildId, moduleName);

            if (CoreModuleNames.Contains(moduleName))
            {
                throw new InvalidOperationException($"The module {moduleName} is a core module and cannot be disabled");
            }

            if (enabledGuildModule == null)
            {
                enabledGuildModule = new GuildModule
                {
                    GuildId = guildId,
                    Name    = moduleName,
                    Enabled = enabled
                };
                repo.Add(enabledGuildModule);
            }
            else
            {
                enabledGuildModule.Enabled = enabled;
                repo.Update(enabledGuildModule);
            }

            await repo.SaveChangesAsync();

            await _cache.RemoveAsync(CacheKey.GetEnabledModulesCacheKey(guildId));
        }
Beispiel #8
0
        public ITranslationModule this[string moduleName]
        {
            get
            {
                if (!Collection.Projects.ContainsKey(moduleName) && ModuleNames.Contains(moduleName))
                {
                    Collection.Projects.Add(moduleName, IO.ResX.FromResX(this.Directory, moduleName, this.MasterLanguage));
                }


                return(Collection.Projects[moduleName]);
            }

            set
            {
                if (!Collection.Projects.ContainsKey(moduleName))
                {
                    Collection.Projects.Add(moduleName, value);
                    IO.ResX.ToResX(value, this.Directory);
                }
            }
        }
Beispiel #9
0
 static ModuleType ModuleTypeFromString(string moduleName)
 {
     return(ModuleNames.FirstOrDefault(tuple => tuple.name == moduleName).module);
 }
Beispiel #10
0
 public ModuleNameData GetModuleNameData(int moduleId)
 => ModuleNames.ContainsKey(moduleId) ? ModuleNames[moduleId] : null;
Beispiel #11
0
 public string GetModuleName(string filePath)
 {
     ModuleNames.TryGetValue(filePath, out string moduleName);
     return(moduleName);
 }