protected virtual IActionResult ListAdvisorDetails(int advisorId)
 {
     try
     {
         var advisor = AdvisorServices.ListAdvisorDetails(GetUser(), advisorId);
         return(Ok(advisor));
     }
     catch (ArgumentException ex)
     {
         return(BadRequest(new { error = ex.Message }));
     }
 }
 protected virtual IActionResult CheckBuyTransaction(int buyId)
 {
     try
     {
         var check = AdvisorServices.CheckBuyTransaction(GetUser(), buyId);
         return(Ok(check));
     }
     catch (ArgumentException ex)
     {
         return(BadRequest(new { error = ex.Message }));
     }
 }
        protected virtual IActionResult ListRoboAdvisors([FromQuery] int?goalOption, [FromQuery] int?risk)
        {
            if (!goalOption.HasValue || !risk.HasValue)
            {
                return(BadRequest());
            }

            try
            {
                var result = AdvisorServices.ListRoboAdvisors(GetUser(), goalOption.Value, risk.Value);
                return(Ok(new { userRisk = result.Key, portfolios = result.Value }));
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
        }
        protected virtual IActionResult AdvisorDisable(int advisorId)
        {
            if (advisorId == 0)
            {
                return(BadRequest());
            }

            try
            {
                AdvisorServices.DisableAdvisor(GetUser(), advisorId);
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok());
        }
        protected virtual IActionResult CancelBuyTransaction(int buyId)
        {
            if (buyId == 0)
            {
                return(BadRequest());
            }

            try
            {
                AdvisorServices.CancelBuyTransaction(GetUser(), buyId);
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok());
        }
        protected virtual IActionResult SetBuyTransaction(int buyId, BuyTransactionRequest buyTransactionRequest)
        {
            if (buyTransactionRequest == null || buyId == 0 || string.IsNullOrWhiteSpace(buyTransactionRequest.TransactionHash))
            {
                return(BadRequest());
            }

            try
            {
                AdvisorServices.SetBuyTransaction(GetUser(), buyId, buyTransactionRequest.TransactionHash);
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok());
        }
        protected virtual IActionResult Advisor(AdvisorRequest advisorRequest)
        {
            if (advisorRequest == null)
            {
                return(BadRequest());
            }

            Auctus.DomainObjects.Advisor.Advisor advisor;
            try
            {
                advisor = AdvisorServices.CreateAdvisor(GetUser(), advisorRequest.Name, advisorRequest.Description);
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok(new { id = advisor.Id }));
        }
        protected virtual IActionResult AdvisorUpdate(int advisorId, AdvisorDetailRequest advisorDetailRequest)
        {
            if (advisorDetailRequest == null)
            {
                return(BadRequest());
            }

            AdvisorDetail advisorDetail;

            try
            {
                advisorDetail = AdvisorServices.UpdateAdvisor(GetUser(), advisorId, advisorDetailRequest.Name, advisorDetailRequest.Description);
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok(new { id = advisorDetail.Id }));
        }
        protected virtual IActionResult Buy(BuyRequest buyRequest)
        {
            if (buyRequest == null)
            {
                return(BadRequest());
            }

            Buy buy;

            try
            {
                buy = AdvisorServices.Buy(GetUser(), buyRequest.Address, buyRequest.PortfolioId, buyRequest.Days, buyRequest.Goal?.GoalOptionId,
                                          buyRequest.Goal?.Timeframe, buyRequest.Goal?.Risk, buyRequest.Goal?.TargetAmount, buyRequest.Goal?.StartingAmount,
                                          buyRequest.Goal?.MonthlyContribution);
            }
            catch (ArgumentException ex)
            {
                return(BadRequest(new { error = ex.Message }));
            }
            return(Ok(new { id = buy.Id }));
        }