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; using SqliteBackups.Interfaces; namespace StockInfoCore { 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 IBackupRepository _backupRepository; private readonly IBackupRoutines _backupRoutines; private readonly IPersonStockFacade _personStockFacade; private readonly frmRegisterStock _regWindow; private readonly frmMyStocks _stockWindow; private readonly frmSelling _sellWindow; private readonly frmPerson _personWindow; private readonly frmPersonShareConnect _personShareConnect; private readonly frmBackup _backupWindow; bool loading = false; //private frmRegisterStock regWindow; //private frmMyStocks stockWindow; //private frmSelling sellWindow; //private frmPerson personWindow; //private frmPersonShareConnect personShareConnect; //private frmBackup backupWindow; public int SelectedPersonId { get; set; } = 0; public frmInitial( IStockRepository stockMemberRepository, IStockMarketRepository stockMarketRepository, IPersonRepository personRepository, IAddressRepository addressRepository, IStockPersonConnect stockPersonConnect, IBackupRepository backupRepository, IBackupRoutines backupRoutines, IPersonStockFacade personStockFacade, frmRegisterStock regWindow, frmMyStocks stockWindow, frmSelling sellWindow, frmPerson personWindow, frmPersonShareConnect personShareConnect, frmBackup backupWindow ) { InitializeComponent(); _stockRepository = stockMemberRepository; _stockMarketRepository = stockMarketRepository; _personRepository = personRepository; _addressRepository = addressRepository; _stockPersonConnect = stockPersonConnect; _backupRepository = backupRepository; _backupRoutines = backupRoutines; _personStockFacade = personStockFacade; _regWindow = regWindow; _stockWindow = stockWindow; _sellWindow = sellWindow; _personWindow = personWindow; _personShareConnect = personShareConnect; _backupWindow = backupWindow; } private void Form1_Load(object sender, EventArgs e) { ReloadData(); btnRestoreShares.Enabled = false; btnBackupShares.Enabled = false; btnReloadShares.Enabled = false; btnBackupAll.Enabled = false; } private void ReloadData() { loading = true; var allStocks = _stockRepository.GetAllStocks(); dataGridView.DataSource = allStocks; // SaveStocks(allStocks); lblTotalRecords.Text = $"Total records: {dataGridView.RowCount}"; loading = false; } private void btnReload_Click(object sender, EventArgs e) { ReloadData(); } private void btnTestScrapFunction_Click(object sender, EventArgs e) { _stockMarketRepository.LoadStockMarketList(SelectedPersonId, 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(SelectedPersonId); var stocklist = _stockMarketRepository.StockMarketList; lblStockRows.Text = stocklist.Count().ToString(); } private void btnStockReg_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; _stockMarketRepository.LoadStockMarketList(SelectedPersonId); _regWindow.Stocks = _stockMarketRepository.StockMarketList; Cursor.Current = DefaultCursor; _regWindow.ShowDialog(); _stockRepository.InsertMany(_regWindow.RegisteredStocks); ReloadData(); } private void btnValueView_Click(object sender, EventArgs e) { if(!GlobalStopwatch.IsRunning && GlobalStopwatch.EllapsedMillis>0) GlobalStopwatch.Restart(); else GlobalStopwatch.Start(); if (SelectedPersonId == 0) { MessageBox.Show($"Ingen person vald ({SelectedPersonId})"); } else { var person = _personRepository.GetPersonById(SelectedPersonId); Cursor.Current = Cursors.WaitCursor; _stockMarketRepository.LoadStockMarketList(SelectedPersonId); _stockWindow.ConnectedPerson = person; _stockWindow.Stocks = _stockMarketRepository.StockMarketList; Cursor.Current = DefaultCursor; GlobalStopwatch.Stop(); GlobalStopwatch.PrintSecs("Before Show Stockwindow"); _stockWindow.ShowDialog(); } } private void chkEnableBackRes_CheckedChanged(object sender, EventArgs e) { if (chkEnableBackRes.Checked) { btnRestoreShares.Enabled = true; btnBackupShares.Enabled = true; btnBackupAll.Enabled = true; } else { btnRestoreShares.Enabled = false; btnBackupShares.Enabled = false; btnBackupAll.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) { _sellWindow.ShowDialog(); ReloadData(); } private void btnEditPerson_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; _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); 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; } private void btnBackupAll_Click(object sender, EventArgs e) { // backupWindow = new frmBackup(_backupRepository, _backupRoutines); _backupWindow.ShowDialog(); } private void dataGridView_SelectionChanged(object sender, EventArgs e) { if (!loading) { //MessageBox.Show($"{((DataGridView)sender).SelectedRows.ToString()} eventargs = {e.ToString()}" ); int id = Convert.ToInt32(dataGridView.Rows[dataGridView.CurrentRow.Index].Cells[0].Value); MessageBox.Show($"Vald rads id = {id}"); } } } }