/// <summary>
        /// scope= get:balance
        /// cmd= 'get inv @p0'.
        /// @p0 parameter for desired currency (all for all investments)
        /// </summary>
        /// <returns></returns>
        public override async Task GetInvestment()
        {
            int parameterCount = 1;

            var validateResp = ValidateParameters(null, parameterCount);

            if (validateResp.ResponseCode != ResponseCode.Success)
            {
                await PostMessage(GetSlackExecutionErrorMessage(validateResp.ResponseData));

                return;
            }

            var currency  = Currency.Unknown;
            var parameter = Parameters[0];

            if (parameter.ToLower() != "all")
            {
                currency = Statics.GetCurrency(Parameters[0]);

                if (currency == Currency.Unknown)
                {
                    var errorMesssage = GetSlackExecutionErrorMessage(2);

                    //post depth=2 message => Given crypto currency either not found or not supported.
                    errorMesssage.text = string.Format(errorMesssage.text, Parameters[0]);
                    await PostMessage(errorMesssage);

                    return;
                }
            }

            var investments = GetTeamInvestments(currency);

            if (!investments.Any())
            {
                // you have no investment with this crypto currency.
                await PostMessage(GetSlackExecutionErrorMessage(3));

                return;
            }

            var successText = ExecutingCommand.Responses.First(p => p.Language == Team.Language && p.Depth == 0).SuccessText;

            var successMessage = SlackMessageGenerator.GetInvestmentMessage(investments, Team.MainCurrency, successText);

            await PostMessage(GetSlackExecutionSuccessMessage(successMessage));
        }