using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; using BO.Connector.Console; using BO.Console.Options; using Quadarax.Foundation.Core.Console; using Quadarax.Foundation.Core.Data.Interface.Entity; using Quadarax.Foundation.Core.Logging; using Quadarax.Foundation.Core.Object.Extensions; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.QConsole.Argument; using Quadarax.Foundation.Core.QConsole.Command.Base; namespace BO.Console.Commands.Base { internal abstract class BaseCommand : AbstractCommand, ILogHandler { #region *** Constants *** private const string CS_ARG_NAME_DUMP = "dump"; private const string CS_ARG_HINT_DUMP = ""; private const string CS_ARG_DESC_DUMP = "Flag if set dumps incomming json messages."; #endregion protected Connection Client { get; private set; } protected Configuration Configuration { get; private set; } protected BaseCommand(Engine engine) : base(engine) { } protected override void OnInitialize() { base.OnInitialize(); Configuration = JsonSerializer.Deserialize(File.ReadAllText("console.json")); Client = new Connection(Configuration.ApiBaseUrl, Configuration.ApiTimeout, this, GetArgumentValueOrDefault(CS_ARG_NAME_DUMP)); Client.Open(Configuration.ApiUser, Configuration.ApiUserPwd, Configuration.ApiMagic); } protected override IEnumerable OnSetupArguments() { var args = base.OnSetupArguments().ToList(); args.Add(new FlagArgument(CS_ARG_NAME_DUMP, CS_ARG_DESC_DUMP, CS_ARG_HINT_DUMP, false)); return args; } public void Log(LogSeverityEnum type, string message, Exception e = null) { WriteInfo($"{type}: {message}" + (e == null ? "" : e.Message)); } protected void WriteDtoToConsole(IDto dto) { var props = dto.GetAllPropertyValues(); using(var wName = new ConsoleWriter(ConsoleColor.White)) using(var wValue = new ConsoleWriter(ConsoleColor.Yellow)) foreach (var prop in props) { wName.Write(prop.Key); wName.Write("\t:\t"); wValue.WriteLine(prop.Value?.ToString()); } } } }