using StockDal.Interface; using StockDAL.Interface; using DataDomain; 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; using System.Text.Json; using System.IO; using Helpers; using StockBL.Interface; namespace StockInfo { public partial class frmInitial : Form { private readonly IStockRepository _stockRepository; private readonly IStockMarketRepository _stockMarketRepository; private readonly IPersonRepository _personRepository; private readonly IAddressRepository _addressRepository; private readonly IStockPersonConnect _stockPersonConnect; private readonly IPersonStockFacade _personStockFacade; private frmRegisterStock regWindow; private frmMyStocks stockWindow; private frmSelling sellWindow; private frmPerson personWindow; private frmPersonShareConnect personShareConnect; public int SelectedPersonId { get; set; } = 0; public frmInitial( IStockRepository stockMemberRepository, IStockMarketRepository stockMarketRepository, IPersonRepository personRepository, IAddressRepository addressRepository, IStockPersonConnect stockPersonConnect, IPersonStockFacade personStockFacade) { InitializeComponent(); _stockRepository = stockMemberRepository; _stockMarketRepository = stockMarketRepository; _personRepository = personRepository; _addressRepository = addressRepository; _stockPersonConnect = stockPersonConnect; _personStockFacade = personStockFacade; } private void Form1_Load(object sender, EventArgs e) { ReloadData(); btnRestoreShares.Enabled = false; btnBackupShares.Enabled = false; btnReloadShares.Enabled = false; } private void ReloadData() { var allStocks = _stockRepository.GetAllStocks(); dataGridView.DataSource = allStocks; // SaveStocks(allStocks); lblTotalRecords.Text = $"Total records: {dataGridView.RowCount}"; } private void btnReload_Click(object sender, EventArgs e) { ReloadData(); } private void btnTestScrapFunction_Click(object sender, EventArgs e) { _stockMarketRepository.LoadStockMarketList(chbShowBrowser.Checked); var stocklist = _stockMarketRepository.StockMarketList; lblStockRows.Text = stocklist.Count().ToString(); btnReloadShares.Enabled = true; } private void frmInitial_FormClosing(object sender, FormClosingEventArgs e) { _stockMarketRepository.Clean(); } private void Button1reload() { lblStockRows.Text = ""; _stockMarketRepository.RefreshMarketList(); var stocklist = _stockMarketRepository.StockMarketList; lblStockRows.Text = stocklist.Count().ToString(); } private void btnStockReg_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; _stockMarketRepository.LoadStockMarketList(); regWindow = new frmRegisterStock(); regWindow.Stocks = _stockMarketRepository.StockMarketList; Cursor.Current = DefaultCursor; regWindow.ShowDialog(); _stockRepository.InsertMany(regWindow.RegisteredStocks); ReloadData(); } private void btnValueView_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; _stockMarketRepository.LoadStockMarketList(); stockWindow = new frmMyStocks(_stockRepository, _stockMarketRepository); stockWindow.Stocks = _stockMarketRepository.StockMarketList; Cursor.Current = DefaultCursor; stockWindow.ShowDialog(); } private void chkEnableBackRes_CheckedChanged(object sender, EventArgs e) { if (chkEnableBackRes.Checked) { btnRestoreShares.Enabled = true; btnBackupShares.Enabled = true; } else { btnRestoreShares.Enabled = false; btnBackupShares.Enabled = false; } } private void btnBackupShares_Click(object sender, EventArgs e) { var stockList = _stockRepository.GetAllStocks(); var jsonStr = JsonSerializer.Serialize(stockList); sfdSaver.Title = "Backup your sharedata"; sfdSaver.Filter = "Backup file (.json)|*.json"; sfdSaver.FileName = $"StockBackup{DateTime.Now.ToFileTime()}"; if (sfdSaver.ShowDialog() == DialogResult.OK) { File.WriteAllText(sfdSaver.FileName, jsonStr); } } private void btnRestoreShares_Click(object sender, EventArgs e) { ofdOpener.Title = "Restore your share data"; ofdOpener.Filter = "Restore file (.json)|*.json"; ofdOpener.CheckFileExists = true; if (ofdOpener.ShowDialog() == DialogResult.OK) { var jsonStr = File.ReadAllText(ofdOpener.FileName); var stockList = JsonSerializer.Deserialize>(jsonStr); _stockRepository.RestoreStockMembers(stockList); }; } private void btnReloadShares_Click(object sender, EventArgs e) { Button1reload(); } private void btnStockSale_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; sellWindow = new frmSelling(_stockRepository); Cursor.Current = DefaultCursor; sellWindow.ShowDialog(); ReloadData(); } private void btnEditPerson_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; personWindow = new frmPerson(_personRepository, _addressRepository); personWindow.PersonId = SelectedPersonId; Cursor.Current = DefaultCursor; personWindow.ShowDialog(); LoadCmbOwners(); } private void btnConnShares_Click(object sender, EventArgs e) { if (SelectedPersonId == 0) { MessageBox.Show($"Ingen person vald ({SelectedPersonId})"); } else { var person = _personRepository.GetPersonById(SelectedPersonId); personShareConnect = new frmPersonShareConnect(_personStockFacade,_stockPersonConnect,_stockRepository); Cursor.Current = Cursors.WaitCursor; personShareConnect.ConnectPerson = person; Cursor.Current = DefaultCursor; personShareConnect.ShowDialog(); } } private void frmInitial_Shown(object sender, EventArgs e) { LoadCmbOwners(); } private void LoadCmbOwners() { cmbOwners.Items.Clear(); var owners = _personRepository.GetAllOwners(); if (owners.Count() > 0) { foreach (var person in owners) { var itemIndex = cmbOwners.Items.Add(new ComboboxItem($"{person.FirstName} {person.LastName} ({person.NickName})", person.Id)); } } cmbOwners.Items.Add(new ComboboxItem($"< ny person> ", 0)); } private void cmbOwners_SelectedIndexChanged(object sender, EventArgs e) { SelectedPersonId = ((ComboboxItem)cmbOwners.SelectedItem).HiddenValue; } } }