299 lines
11 KiB
C#
299 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;
|
|
|
|
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;
|
|
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)
|
|
{
|
|
if (_stockMarketRepository.StockMarketList.ContainsKey(sMember.StockId)){
|
|
sMember.ActValue = _stockMarketRepository.StockMarketList[sMember.StockId].LatestPrice;
|
|
_stockRepository.UpdateActualPrice(sMember.Id, sMember.ActValue);
|
|
}
|
|
}
|
|
output=sMember;
|
|
return output;
|
|
}
|
|
|
|
|
|
private void btnReload_Click(object sender, EventArgs e)
|
|
{
|
|
Cursor = Cursors.WaitCursor;
|
|
ReloadData(true);
|
|
Cursor=Cursors.Default;
|
|
}
|
|
|
|
private void frmInitial_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
MessageBox.Show("B y e B y e !!");
|
|
}
|
|
|
|
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 btnStockSale_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
if (SelectedPersonId == 0)
|
|
{
|
|
MessageBox.Show($"Ingen person vald ({SelectedPersonId})");
|
|
}
|
|
else
|
|
{
|
|
_sellWindow.selectedPersonId = SelectedPersonId;
|
|
_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)
|
|
{
|
|
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();
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|