Files
StockHistory/StockHistory/frmStockHistoryAnalyse.cs

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();
}
}