Files
StockInfoCoreApp/StockInfoCore/frmInitial.cs
Tommy Öman 3b0809c48d Cleared app from old code, by commenting out
Will do another commit when all comments are taken away
2022-02-21 17:16:57 +01:00

315 lines
11 KiB
C#

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;
private readonly frmEditStock _editStock;
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,
frmEditStock editStock
)
{
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;
_editStock = editStock;
}
private void Form1_Load(object sender, EventArgs e)
{
ReloadData();
btnRestoreShares.Enabled = false;
btnBackupShares.Enabled = false;
btnReloadShares.Enabled = false;
btnBackupAll.Enabled = false;
}
private void ReloadData(bool upd = false)
{
loading = true;
var allStocks = _stockRepository.GetAllStocks();
if (upd)
{
_stockMarketRepository.LoadStockMarketList(SelectedPersonId);
allStocks.ToList().ForEach(SM => SM.ActValue = UpdateOnlyNonZeroAmount(SM).ActValue);
}
dataGridView.DataSource = allStocks;
// SaveStocks(allStocks);
lblTotalRecords.Text = $"Total records: {dataGridView.RowCount}";
loading = false;
}
private StockMember UpdateOnlyNonZeroAmount(StockMember sMember)
{
var output = new StockMember();
if (sMember.ActAmount > 0)
{
sMember.ActValue = _stockMarketRepository.StockMarketList[sMember.StockId].LatestPrice;
}
output=sMember;
return output;
}
private void btnReload_Click(object sender, EventArgs e)
{
ReloadData(true);
}
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==0?10000: SelectedPersonId);
_regWindow.Stocks = _stockMarketRepository.StockMarketList;
Cursor.Current = DefaultCursor;
_regWindow.ShowDialog();
if (_regWindow.RegisteredStocks.Count > 0)
{
_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<List<StockMember>>(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);
if (DialogResult.OK == MessageBox.Show($"Vald rads id = {id}{Environment.NewLine}Ändra ?", "Fråga", MessageBoxButtons.OKCancel, MessageBoxIcon.Question))
{
_editStock.CurrentStockMember = id;
_editStock.ShowDialog();
};
}
}
}
}