using qtc_api.Services.CurrencyGamesService; using System.Security.Claims; using static qtc_api.Services.CurrencyGamesService.CurrencyGamesService; namespace qtc_api.Controllers { [Route("api/games")] [ApiController] public class CurrencyGamesController : ControllerBase { private IUserService _userService; private CurrencyGamesService _currencyGamesService; public CurrencyGamesController(IUserService userService, CurrencyGamesService currencyGamesService) { _userService = userService; _currencyGamesService = currencyGamesService; } // Stock Market [HttpGet("stock-market/current-price")] public ActionResult> GetCurrentPricePerStock() { var price = _currencyGamesService.GetCurrentPricePerStock(); if (price != null && price.Success) { return Ok(new ServiceResponse { Success = true, Data = price.Data }); } else return Ok(new ServiceResponse { Success = false, Message = "Service Indicated Failiure" }); } [HttpPost("stock-market/buy-stock")] [Authorize] public async Task>> BuyStockFromMarket(int amount) { var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { IEnumerable claims = identity.Claims; var id = claims.First().Value; var user = await _userService.GetUserById(id); if (user != null && user.Success && user.Data != null) { var stocks = await _currencyGamesService.BuyStock(user.Data, amount); if (stocks.Success) { return Ok(new ServiceResponse { Success = true, Data = stocks.Data }); } else return Ok(new ServiceResponse { Success = false, Message = stocks.Message }); } else return Ok(new ServiceResponse { Success = false, Message = "Identity User Not Found" }); } else return Ok(new ServiceResponse { Success = false, Message = "No Identity" }); } [HttpPost("stock-market/sell-stock")] [Authorize] public async Task>> SellStockToMarket(int amount) { var identity = HttpContext.User.Identity as ClaimsIdentity; if (identity != null) { IEnumerable claims = identity.Claims; var id = claims.First().Value; var user = await _userService.GetUserById(id); if (user != null && user.Success && user.Data != null) { var stocks = await _currencyGamesService.SellStock(user.Data, amount); if (stocks.Success) { return Ok(new ServiceResponse { Success = true, Data = stocks.Data }); } else return Ok(new ServiceResponse { Success = false, Message = stocks.Message }); } else return Ok(new ServiceResponse { Success = false, Message = "Identity User Not Found" }); } else return Ok(new ServiceResponse { Success = false, Message = "No Identity" }); } // Number Guess [HttpGet("number-guess/get-number")] [Authorize] public ActionResult> GetRandomNumber() { return Ok(_currencyGamesService.GetRandomNumber()); } [HttpGet("number-guess/guess-number")] [Authorize] public ActionResult> GuessNumber(int original, int guess) { return Ok(_currencyGamesService.GuessRandomNumber(original, guess)); } } }