using IW4MAdmin.Application.Misc; using SharedLibraryCore; using SharedLibraryCore.Commands; using SharedLibraryCore.Configuration; using SharedLibraryCore.Interfaces; using System; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using static SharedLibraryCore.Database.Models.EFClient; namespace IW4MAdmin.Application.Factories { /// /// implementation of IScriptCommandFactory /// public class ScriptCommandFactory : IScriptCommandFactory { private readonly CommandConfiguration _config; private readonly ITranslationLookup _transLookup; private readonly IServiceProvider _serviceProvider; public ScriptCommandFactory(CommandConfiguration config, ITranslationLookup transLookup, IServiceProvider serviceProvider) { _config = config; _transLookup = transLookup; _serviceProvider = serviceProvider; } /// public IManagerCommand CreateScriptCommand(string name, string alias, string description, string permission, bool isTargetRequired, IEnumerable<(string, bool)> args, Action executeAction) { var permissionEnum = Enum.Parse(permission); var argsArray = args.Select(_arg => new CommandArgument { Name = _arg.Item1, Required = _arg.Item2 }).ToArray(); return new ScriptCommand(name, alias, description, isTargetRequired, permissionEnum, argsArray, executeAction, _config, _transLookup, _serviceProvider.GetRequiredService>()); } } }