using DataDomain; using Helpers; using StockDAL.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace StockInfo { public partial class frmSelling : Form { private readonly IStockRepository _stockRepository; private List remainingStocks = new(); public StockMember stkMemSelected { get; set; } = null; public frmSelling(IStockRepository stockRepository) { InitializeComponent(); _stockRepository = stockRepository; } private void frmSelling_Load(object sender, EventArgs e) { remainingStocks = _stockRepository.GetAllRemainingStocks().ToList(); foreach (var stock in remainingStocks) { var lvRow = lvSellCandidates.Items.Add(stock.StockId); lvRow.Tag = stock.Id; lvRow.SubItems.Add(stock.BuyDate.ToShortDateString()); lvRow.SubItems.Add(stock.BuyValue.ToString()); lvRow.SubItems.Add(stock.ActAmount.ToString()); lvRow.SubItems.Add(stock.ActValue.ToString()); lvRow.SubItems.Add((stock.ActValue * stock.ActAmount).ToString()); } } private void SelectStock(object tag) { //Debug.WriteLine($"selected item {(int)tag}"); foreach (var remStk in remainingStocks) { if (remStk.Id == (int)tag) { stkMemSelected = remStk; break; } } EditStockForSelling(stkMemSelected); } private void EditStockForSelling(StockMember stkMemSelected) { txtId.Text = stkMemSelected.Id.ToString(); txtStockId.Text = stkMemSelected.StockId; txtBuyDate.Text = stkMemSelected.BuyDate.ToShortDateString(); txtBuyNumber.Text = stkMemSelected.PostAmount.ToString(); txtBuyPrice.Text = stkMemSelected.BuyValue.ToString(); txtBuyValue.Text = (stkMemSelected.BuyValue * stkMemSelected.PostAmount).ToString(); txtSoldDate.Text = DateTime.Today.ToShortDateString(); txtSoldPrice.Text = stkMemSelected.ActValue.ToString(); txtSoldAmount.Text = stkMemSelected.ActAmount.ToString(); } private void lvSellCandidates_MouseUp(object sender, MouseEventArgs e) { var selRows = lvSellCandidates.SelectedItems; SelectStock(selRows[0].Tag); } private void txtSoldPrice_TextChanged(object sender, EventArgs e) { CalcNumberAndValue(); } private void CalcNumberAndValue() { if (txtSoldPrice.Text.IsNumeric() && txtSoldAmount.Text.IsNumeric()) { txtSellValue.Text = (decimal.Parse(txtSoldPrice.Text) * long.Parse(txtSoldAmount.Text)).ToString(); txtRemainingNo.Text = stkMemSelected.ActAmount > 0 ? (stkMemSelected.PostAmount - long.Parse(txtSoldAmount.Text)).ToString() : 0.ToString(); } } private void txtSoldAmount_TextChanged(object sender, EventArgs e) { CalcNumberAndValue(); } } }