152 lines
6.0 KiB
C#
152 lines
6.0 KiB
C#
using QtCNETAPI.Services.ApiService;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace qtc_net_client_2.Forms
|
|
{
|
|
public partial class StockMarketGame : Form
|
|
{
|
|
private IApiService _apiService;
|
|
private int StockPrice = 0;
|
|
public StockMarketGame(IApiService apiService)
|
|
{
|
|
_apiService = apiService;
|
|
InitializeComponent();
|
|
}
|
|
|
|
private async void StockMarketGame_Load(object sender, EventArgs e) => await InitializeStockMarketGame();
|
|
private async void btnRefresh_Click(object sender, EventArgs e) => await InitializeStockMarketGame();
|
|
|
|
private async void btnBuy_Click(object sender, EventArgs e)
|
|
{
|
|
if (nudStockBuySellAmount.Value > 0)
|
|
{
|
|
nudStockBuySellAmount.Enabled = false;
|
|
btnBuy.Enabled = false;
|
|
btnSell.Enabled = false;
|
|
btnRefresh.Enabled = false;
|
|
|
|
// buy stock
|
|
var amountToBuy = int.Parse(nudStockBuySellAmount.Value.ToString());
|
|
var result = await _apiService.BuyStock(amountToBuy);
|
|
|
|
if (result != null && result.Success && result.Data != null)
|
|
{
|
|
lblStockCount.Text = $"Your Stock Count - {result.Data.StockAmount}";
|
|
|
|
_apiService.CurrentUser.StockAmount = result.Data.StockAmount;
|
|
_apiService.CurrentUser.CurrencyAmount = result.Data.CurrencyAmount;
|
|
|
|
nudStockBuySellAmount.Enabled = true;
|
|
nudStockBuySellAmount.Value = 0;
|
|
btnBuy.Enabled = true;
|
|
btnSell.Enabled = true;
|
|
btnRefresh.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Buy Failed. Either You Don't Have Enough Q's Or A Server Side Error Occured.", "Oops.", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
nudStockBuySellAmount.Enabled = true;
|
|
nudStockBuySellAmount.Value = 0;
|
|
btnBuy.Enabled = true;
|
|
btnSell.Enabled = true;
|
|
btnRefresh.Enabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private async void btnSell_Click(object sender, EventArgs e)
|
|
{
|
|
if(nudStockBuySellAmount.Value > 0)
|
|
{
|
|
nudStockBuySellAmount.Enabled = false;
|
|
btnBuy.Enabled = false;
|
|
btnSell.Enabled = false;
|
|
btnRefresh.Enabled = false;
|
|
|
|
// sell stock
|
|
var amountToSell = int.Parse(nudStockBuySellAmount.Value.ToString());
|
|
var result = await _apiService.SellStock(amountToSell);
|
|
|
|
if (result != null && result.Success && result.Data != null)
|
|
{
|
|
lblStockCount.Text = $"Your Stock Count - {result.Data.StockAmount}";
|
|
|
|
_apiService.CurrentUser.StockAmount = result.Data.StockAmount;
|
|
_apiService.CurrentUser.CurrencyAmount = result.Data.CurrencyAmount;
|
|
|
|
nudStockBuySellAmount.Enabled = true;
|
|
nudStockBuySellAmount.Value = 0;
|
|
btnBuy.Enabled = true;
|
|
btnSell.Enabled = true;
|
|
btnRefresh.Enabled = true;
|
|
} else
|
|
{
|
|
MessageBox.Show("Sell Failed. Either You Don't Have Enough Stock Or A Server Side Error Occured.", "Oops.", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
nudStockBuySellAmount.Enabled = true;
|
|
nudStockBuySellAmount.Value = 0;
|
|
btnBuy.Enabled = true;
|
|
btnSell.Enabled = true;
|
|
btnRefresh.Enabled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private async Task InitializeStockMarketGame()
|
|
{
|
|
var currentStockPriceResult = await _apiService.GetCurrentStockPrice();
|
|
|
|
if (currentStockPriceResult != null && currentStockPriceResult.Success)
|
|
{
|
|
lblCurrentStockPrice.Text = $"Current Price Per Stock Is {currentStockPriceResult.Data} Q's";
|
|
lblStockCount.Text = $"Your Stock Count - {_apiService.CurrentUser.StockAmount}";
|
|
|
|
switch (currentStockPriceResult.Data)
|
|
{
|
|
case < 49:
|
|
lblMarketStatus.Text = "not good cheif :(";
|
|
lblMarketStatus.ForeColor = Color.Red;
|
|
break;
|
|
case < 99:
|
|
lblMarketStatus.Text = "its aight :/";
|
|
lblMarketStatus.ForeColor = Color.DarkGreen;
|
|
break;
|
|
case < 149:
|
|
lblMarketStatus.Text = "its good :)";
|
|
lblMarketStatus.ForeColor = Color.Green;
|
|
break;
|
|
case < 199:
|
|
lblMarketStatus.Text = "very good :D";
|
|
lblMarketStatus.ForeColor = Color.Blue;
|
|
break;
|
|
case > 200:
|
|
lblMarketStatus.Text = "$ AWESOME $";
|
|
lblMarketStatus.ForeColor = Color.LightGreen;
|
|
break;
|
|
default:
|
|
lblMarketStatus.Text = "Cannot Determine";
|
|
lblMarketStatus.ForeColor = Color.White;
|
|
break;
|
|
}
|
|
|
|
nudStockBuySellAmount.Enabled = true;
|
|
btnBuy.Enabled = true;
|
|
btnSell.Enabled = true;
|
|
btnRefresh.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("The Stock Market Endpoint Could Not Be Reached. Please Check Your Internet Connection", "Uh Oh.", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
Close();
|
|
}
|
|
}
|
|
}
|
|
}
|