114 lines
4.3 KiB
C#
114 lines
4.3 KiB
C#
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<ServiceResponse<int>> GetCurrentPricePerStock()
|
|
{
|
|
var price = _currencyGamesService.GetCurrentPricePerStock();
|
|
|
|
if (price != null && price.Success)
|
|
{
|
|
return Ok(new ServiceResponse<int>
|
|
{
|
|
Success = true,
|
|
Data = price.Data
|
|
});
|
|
}
|
|
else return Ok(new ServiceResponse<int>
|
|
{
|
|
Success = false,
|
|
Message = "Service Indicated Failiure"
|
|
});
|
|
}
|
|
|
|
[HttpPost("stock-market/buy-stock")]
|
|
[Authorize]
|
|
public async Task<ActionResult<ServiceResponse<UserStockActionResultDto>>> BuyStockFromMarket(int amount)
|
|
{
|
|
var identity = HttpContext.User.Identity as ClaimsIdentity;
|
|
|
|
if (identity != null)
|
|
{
|
|
IEnumerable<Claim> 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<UserStockActionResultDto> { Success = true, Data = stocks.Data });
|
|
}
|
|
else return Ok(new ServiceResponse<UserStockActionResultDto> { Success = false, Message = stocks.Message });
|
|
}
|
|
else return Ok(new ServiceResponse<UserStockActionResultDto> { Success = false, Message = "Identity User Not Found" });
|
|
}
|
|
else return Ok(new ServiceResponse<UserStockActionResultDto> { Success = false, Message = "No Identity" });
|
|
}
|
|
|
|
[HttpPost("stock-market/sell-stock")]
|
|
[Authorize]
|
|
public async Task<ActionResult<ServiceResponse<UserStockActionResultDto>>> SellStockToMarket(int amount)
|
|
{
|
|
var identity = HttpContext.User.Identity as ClaimsIdentity;
|
|
|
|
if (identity != null)
|
|
{
|
|
IEnumerable<Claim> 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<UserStockActionResultDto> { Success = true, Data = stocks.Data });
|
|
}
|
|
else return Ok(new ServiceResponse<UserStockActionResultDto> { Success = false, Message = stocks.Message });
|
|
}
|
|
else return Ok(new ServiceResponse<UserStockActionResultDto> { Success = false, Message = "Identity User Not Found" });
|
|
}
|
|
else return Ok(new ServiceResponse<UserStockActionResultDto> { Success = false, Message = "No Identity" });
|
|
}
|
|
|
|
// Number Guess
|
|
|
|
[HttpGet("number-guess/get-number")]
|
|
[Authorize]
|
|
public ActionResult<ServiceResponse<int>> GetRandomNumber()
|
|
{
|
|
return Ok(_currencyGamesService.GetRandomNumber());
|
|
}
|
|
|
|
[HttpGet("number-guess/guess-number")]
|
|
[Authorize]
|
|
public ActionResult<ServiceResponse<NumberGuessResult>> GuessNumber(int original, int guess)
|
|
{
|
|
return Ok(_currencyGamesService.GuessRandomNumber(original, guess));
|
|
}
|
|
}
|
|
}
|