137 lines
4.6 KiB
C#
137 lines
4.6 KiB
C#
using StockHistory.Models;
|
|
using StockHistory.Services;
|
|
using System.Diagnostics;
|
|
|
|
namespace StockHistory;
|
|
|
|
public partial class frmStockHistoryAnalyse : Form
|
|
{
|
|
private readonly IStockEquityServices _equityServices;
|
|
|
|
public frmStockHistoryAnalyse(IStockEquityServices equityServices)
|
|
{
|
|
InitializeComponent();
|
|
_equityServices = equityServices;
|
|
lwStocks.EnableSmartSorting();
|
|
|
|
}
|
|
|
|
private void btnGenerateStockScheme_Click(object sender, EventArgs e)
|
|
{
|
|
_equityServices.GenerateStockVision().Wait();
|
|
dtpChosenDate.Value = DateTime.Today;
|
|
LoadStockListAsync(dtpChosenDate.Value).Wait();
|
|
}
|
|
|
|
private void btnClose_Click(object sender, EventArgs e)
|
|
{
|
|
this.Hide();
|
|
}
|
|
|
|
private void dtpChosenDate_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
LoadStockListAsync(dtpChosenDate.Value).Wait();
|
|
}
|
|
|
|
private async Task LoadStockListAsync(DateTime equityDate)
|
|
{
|
|
|
|
var stocks = await _equityServices.GetAllAsync(equityDate);
|
|
// var stocks = await _equityServices.GetAllAsync();
|
|
|
|
lwStocks.Items.Clear();
|
|
var dTotal = stocks.Sum(s => s.BoughtPrice * s.Quantity);
|
|
lblTotalValue.Text = dTotal.ToString("C");
|
|
EquityTemp equityTemp = new EquityTemp
|
|
{
|
|
StockCode = "Total",
|
|
Bought = DateTime.MinValue,
|
|
BoughtPrice = 0,
|
|
Quantity = 0
|
|
};
|
|
|
|
foreach (var t in stocks.OrderBy(s => s.StockCode + s.Bought).ToList())
|
|
{
|
|
if (t.StockCode != equityTemp.StockCode)
|
|
{
|
|
if (equityTemp.StockCode != "Total")
|
|
{
|
|
var item = new ListViewItem(equityTemp.StockCode);
|
|
item.SubItems.Add(equityTemp.Bought.ToString());
|
|
item.SubItems.Add(equityTemp.Quantity.ToString());
|
|
item.SubItems.Add(equityTemp.BoughtPrice.ToString());
|
|
item.SubItems.Add((equityTemp.TotalValue).ToString("C"));
|
|
lwStocks.Items.Add(item);
|
|
}
|
|
equityTemp.StockCode = t.StockCode;
|
|
equityTemp.Bought = t.Bought;
|
|
equityTemp.Quantity = t.Quantity;
|
|
equityTemp.BoughtPrice = t.BoughtPrice;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
if (t.Bought < equityTemp.Bought)
|
|
equityTemp.Bought = t.Bought;
|
|
if (t.BoughtPrice < equityTemp.BoughtPrice || equityTemp.BoughtPrice == 0)
|
|
equityTemp.BoughtPrice = t.BoughtPrice;
|
|
equityTemp.Quantity += t.Quantity;
|
|
}
|
|
|
|
}
|
|
var l_item = new ListViewItem(equityTemp.StockCode);
|
|
l_item.SubItems.Add(equityTemp.Bought.ToString());
|
|
l_item.SubItems.Add(equityTemp.Quantity.ToString());
|
|
l_item.SubItems.Add(equityTemp.BoughtPrice.ToString());
|
|
l_item.SubItems.Add((equityTemp.TotalValue).ToString("C"));
|
|
lwStocks.Items.Add(l_item);
|
|
}
|
|
|
|
protected override void OnVisibleChanged(EventArgs e)
|
|
{
|
|
base.OnVisibleChanged(e);
|
|
if (this.Visible)
|
|
{
|
|
dtpChosenDate.Value = DateTime.Today;
|
|
LoadStockListAsync(dtpChosenDate.Value).Wait();
|
|
}
|
|
}
|
|
|
|
private void btnStockHistory_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void lwStocks_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (lwStocks.SelectedItems.Count > 0)
|
|
{
|
|
var item = lwStocks.SelectedItems[0];
|
|
LoadHistoryRecsAsync(item.Text).Wait();
|
|
}
|
|
}
|
|
private async Task LoadHistoryRecsAsync(string stockName) //, DateTime equityDate)
|
|
{
|
|
//MessageBox.Show("Du klickade på: " + item.Text);
|
|
var result = _equityServices.GetByCodeAsync(stockName);
|
|
if (result != null)
|
|
{
|
|
lwStockHistory.Items.Clear();
|
|
foreach (var histRec in await result)
|
|
{
|
|
var l_item = new ListViewItem(histRec.StockCode);
|
|
l_item.SubItems.Add(histRec.Bought.ToString());
|
|
l_item.SubItems.Add(histRec.Quantity.ToString());
|
|
l_item.SubItems.Add(histRec.BoughtPrice.ToString());
|
|
Debug.WriteLine(histRec.ToString());
|
|
var totval = (histRec.SoldQuant > 0) ? histRec.SoldQuant * histRec.SoldPrice - histRec.BoughtPrice * histRec.Quantity : histRec.BoughtPrice * histRec.Quantity;
|
|
l_item.SubItems.Add((totval).ToString("C"));
|
|
l_item.SubItems.Add((histRec.SoldQuant > 0) ? "B" : "K");
|
|
lwStockHistory.Items.Add(l_item);
|
|
}
|
|
}
|
|
lwStockHistory.Refresh();
|
|
}
|
|
|
|
}
|