public async Task <IHttpActionResult> Patch(Guid id, StrategyPatchViewModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var strategy = await _strategyService.GetStrategy(id).ConfigureAwait(false);

            if (strategy == null)
            {
                return(NotFound());
            }

            var strategyUpdateOptions = _mapping.Map <StrategyUpdateOptions>(model, options => options.Items.Add(nameof(id), id));

            try
            {
                await _strategyService.UpdateStrategy(strategyUpdateOptions).ConfigureAwait(false);

                return(Ok());
            }
            catch (BrandscreenException ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(BadRequest(ModelState));
            }
        }
        public async Task <ActionResult> EditStrategy(EditStrategyViewModel model)
        {
            if (!model.Indicators?.Any() ?? false)
            {
                return(JsonErrorResult("Strategy must have at least one indicator"));
            }
            if (!ModelState.IsValid)
            {
                return(JsonErrorResult(ModelState));
            }
            var dto = BuildCreateStrategyDto(model);
            int?id  = model.Id;

            if (model.Id.HasValue)
            {
                await _strategyService.UpdateStrategy(dto);
            }
            else
            {
                id = await _strategyService.CreateStrategy(dto);
            }
            ShowNotification("", "Strategy has been saved", ToastType.Success);
            return(new JsonNetResult(new { id, redirectUrl = Url.Action("Index") }));
        }