using System;
using System.Collections.Generic;
using System.Text;
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.Workspace
{
    [CommandDefinition]
    internal class WorkspaceGetCommand : AbstractGetCommand
    {
        #region *** Constants ***
        private const string CS_CMD_WRKSPGET_NAME = "workspace_get";
        private const string CS_CMD_WRKSPGET_DESCR = "Get single workspace by specification.";
        #endregion

        #region *** Properties ***

        public override string Name => CS_CMD_WRKSPGET_NAME;
        public override string Description => CS_CMD_WRKSPGET_DESCR;

        #endregion

        #region *** Constructor ***
        public WorkspaceGetCommand(Engine engine) : base(engine)
        {
        }
        #endregion

        #region *** EXECUTE ***
        protected override Result OnExecute()
        {
            var workspace = Client.GetWorkspaceAsync(IdentificationType, IdentificationValue).Result;
            WriteDtoToConsole(workspace);
            return new Result();
        }
        #endregion
    }
}
