public async Task <IActionResult> Put([FromRoute] int id, [FromBody] DTO.StrategyBase input)
        {
            var strategy = await _db.Strategies.FindAsync(id);

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

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

            var existingName = await _db.Strategies
                               .SingleOrDefaultAsync(x => x.Name == input.Name);

            if (existingName != null)
            {
                return(BadRequest(ModelState));
            }

            strategy.Name         = input.Name;
            strategy.StrategyType = input.StrategyType;

            await _db.SaveChangesAsync();

            var result = strategy;

            return(Ok(result));
        }
        public async Task <IActionResult> Post([FromBody] DTO.StrategyBase input)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var existingName = await _db.Strategies
                               .SingleOrDefaultAsync(x => x.Name == input.Name);

            if (existingName != null)
            {
                return(BadRequest(ModelState));
            }

            var strategy = new Strategy
            {
                Name         = input.Name,
                StrategyType = input.StrategyType,
            };

            _db.Strategies.Add(strategy);
            await _db.SaveChangesAsync();

            var result = strategy.MapStrategyResponse();

            return(CreatedAtAction(nameof(Get), new { id = result.Id }, result));
        }