using BO.Console.Commands.Base;
using Quadarax.Foundation.Core.QConsole;
using Quadarax.Foundation.Core.QConsole.Attributes;
using Quadarax.Foundation.Core.Value;

namespace BO.Console.Commands.Catalogues
{
    [CommandDefinition]
    internal class BillingPlansGetCommand : AbstractListScopedCommand<AppServer.Metadata.Enums.BPlanScopeEnums>
    {
        #region *** Constants ***

        private const string CS_CMD_BPLANGET_NAME = "bplan_list";
        private const string CS_CMD_BPLANGET_DESCR = "Get list of billing plans by specification scope.";

        #endregion

        #region *** Properties ***

        public override string Name => CS_CMD_BPLANGET_NAME;
        public override string Description => CS_CMD_BPLANGET_DESCR;

        #endregion

        #region *** Constructor ***

        public BillingPlansGetCommand(Engine engine) : base(engine)
        {
        }

        #endregion

        #region *** EXECUTE ***

        protected override Result OnExecute()
        {
            var mimes = Client.GetBillingPlansAsync(Scope, Paging).Result;
            WriteDtoToConsole(mimes,"Id","Code","Name","PstprocessProfile","PstinitialCredits","Psttest","IsCustom","IsHidden","IsEnabled");
            return new Result();
        }

        #endregion

        #region *** Private operations ***

        #endregion
    }
}