Program fixes , registering new stocks, without dbchanges
This commit is contained in:
15
DataDomain/StockGroupModel.cs
Normal file
15
DataDomain/StockGroupModel.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DataDomain
|
||||
{
|
||||
public class StockGroupModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string StockGroup { get; set; }
|
||||
public string StockName { get; set; }
|
||||
}
|
||||
}
|
||||
13
PP.cmd
Normal file
13
PP.cmd
Normal file
@ -0,0 +1,13 @@
|
||||
@echo off
|
||||
D:
|
||||
cd \Aktier\net6.0-windows
|
||||
echo *** på plats \Aktier\net6.0-windows ***
|
||||
copy Stocks* ..\backup\cpyback
|
||||
echo *** databas backupad ***
|
||||
copy D:\TommyCsharp\StockInfoCoreApp\StockInfoCore\bin\Debug\net6.0-windows\*.* .\
|
||||
echo *** ny prodversion flyttad ***
|
||||
copy ..\backup\cpyback\Stocks* .\
|
||||
echo ************************************
|
||||
echo *** Produktions uppdatering klar ***
|
||||
echo ************************************
|
||||
cmd /k
|
||||
@ -36,7 +36,7 @@ namespace StockDal
|
||||
public StockMarketRepository(
|
||||
IStockPersonConnect stockPersonConnect,
|
||||
IStockRepository stockRepository,
|
||||
TestSettings testSettings,
|
||||
TestSettings testSettings,
|
||||
IStockScrapePage scrapePage)
|
||||
{
|
||||
ViewBrowser = false;
|
||||
@ -84,7 +84,7 @@ namespace StockDal
|
||||
TextResults.Append("\r\n");
|
||||
}
|
||||
|
||||
// var oxe = StockMarketList;
|
||||
// var oxe = StockMarketList;
|
||||
}
|
||||
|
||||
private void SaveLogging()
|
||||
@ -153,13 +153,13 @@ namespace StockDal
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
SaveRow.TimeOfDay = value==""?TimeSpan.Parse("00:01"): TimeSpan.Parse(value);
|
||||
SaveRow.TimeOfDay = value == "" ? TimeSpan.Parse("00:01") : TimeSpan.Parse(value);
|
||||
//StockMarketList.Add(SaveRow.StockName, SaveRow);
|
||||
try
|
||||
{
|
||||
StockMarketList.Add(SaveRow.StockName, SaveRow);
|
||||
}
|
||||
catch (ArgumentException )
|
||||
catch (ArgumentException)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -207,7 +207,7 @@ namespace StockDal
|
||||
var url2 = "https://trader.di.se/index.php/stocklist/index/2055?list=7116";
|
||||
var url3 = "https://trader.di.se/index.php/stocklist/index/2055?list=7127";
|
||||
//var url1 = "https://www.finansportalen.se/aktiekurser/";
|
||||
driver.Navigate().GoToUrl(burl2.HasValue? (burl2.Value ? url2 : url):url3);
|
||||
driver.Navigate().GoToUrl(burl2.HasValue ? (burl2.Value ? url2 : url) : url3);
|
||||
|
||||
}
|
||||
catch
|
||||
@ -219,7 +219,7 @@ namespace StockDal
|
||||
|
||||
private void saveStockData(List<DiTraderStockRow> saveRow)
|
||||
{
|
||||
foreach(var row in saveRow)
|
||||
foreach (var row in saveRow)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -245,21 +245,21 @@ namespace StockDal
|
||||
public void LoadStockMarketList(int persId)
|
||||
{
|
||||
StockMarketList = new Dictionary<string, DiTraderStockRow>();
|
||||
DumpObjects = new List<DiTraderStockRow>();
|
||||
DumpObjects = new List<DiTraderStockRow>();
|
||||
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
|
||||
var lastGroup = string.Empty;
|
||||
var stockList = new List<string>();
|
||||
foreach(var groupedStock in groupedStocks)
|
||||
foreach (var groupedStock in groupedStocks)
|
||||
{
|
||||
if (groupedStock.StockGroup != lastGroup)
|
||||
{
|
||||
if(lastGroup != string.Empty)
|
||||
if (lastGroup != string.Empty)
|
||||
{
|
||||
_testSettings.StockWishes = stockList.ToArray();
|
||||
if (lastGroup == "ZNotFound")
|
||||
foreach (var stk in stockList)
|
||||
{
|
||||
saveStockData(new List<DiTraderStockRow>(_scrapePage.SearchStockAndCollect(stk.Substring(0,4))));
|
||||
saveStockData(new List<DiTraderStockRow>(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))));
|
||||
}
|
||||
else
|
||||
saveStockData(_scrapePage.GetMyStockStatus(lastGroup));
|
||||
@ -279,7 +279,7 @@ namespace StockDal
|
||||
}
|
||||
}
|
||||
|
||||
if(stockList.Count > 0)
|
||||
if (stockList.Count > 0)
|
||||
{
|
||||
_testSettings.StockWishes = stockList.ToArray();
|
||||
if (lastGroup == "ZNotFound")
|
||||
@ -298,6 +298,66 @@ namespace StockDal
|
||||
}
|
||||
}
|
||||
|
||||
public DiTraderStockRow LoadStockMarketStockData(string searchedStock)
|
||||
{
|
||||
//StockMarketList = new Dictionary<string, DiTraderStockRow>();
|
||||
//DumpObjects = new List<DiTraderStockRow>();
|
||||
var groupedStocks = _stockRepository.GetGroupedStock(searchedStock);
|
||||
var lastGroup = string.Empty;
|
||||
var stockList = new List<string>();
|
||||
var output = new List<DiTraderStockRow>();
|
||||
foreach (var groupedStock in groupedStocks)
|
||||
{
|
||||
if (groupedStock.StockGroup != lastGroup)
|
||||
{
|
||||
if (lastGroup != string.Empty)
|
||||
{
|
||||
_testSettings.StockWishes = stockList.ToArray();
|
||||
if (lastGroup == "ZNotFound")
|
||||
foreach (var stk in stockList)
|
||||
{
|
||||
output = _scrapePage.SearchStockAndCollect(stk.Substring(0, 4));
|
||||
}
|
||||
else
|
||||
output = _scrapePage.GetMyStockStatus(lastGroup);
|
||||
|
||||
stockList.Clear();
|
||||
lastGroup = groupedStock.StockGroup;
|
||||
}
|
||||
else
|
||||
{
|
||||
lastGroup = groupedStock.StockGroup;
|
||||
}
|
||||
|
||||
stockList.Add(groupedStock.StockId);
|
||||
}
|
||||
else
|
||||
{
|
||||
stockList.Add(groupedStock.StockId);
|
||||
}
|
||||
}
|
||||
|
||||
if (stockList.Count > 0)
|
||||
{
|
||||
_testSettings.StockWishes = stockList.ToArray();
|
||||
if (lastGroup == "ZNotFound")
|
||||
foreach (var stk in stockList)
|
||||
{
|
||||
output = _scrapePage.SearchStockAndCollect(stk.Substring(0, 4));
|
||||
}
|
||||
else
|
||||
output = _scrapePage.GetMyStockStatus(lastGroup);
|
||||
stockList.Clear();
|
||||
}
|
||||
|
||||
return output[0];
|
||||
|
||||
//if (DumpObjects.Any())
|
||||
//{
|
||||
// SaveLogging();
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
public void LoadStockMarketList(int persId, bool viewBrowser)
|
||||
{
|
||||
|
||||
@ -133,6 +133,8 @@ namespace StockDAL
|
||||
context.SaveChanges();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public IEnumerable<StockGrpPers> GetStocksGroupedPerPerson(int persId)
|
||||
{
|
||||
using var context = new StockContext();
|
||||
@ -140,12 +142,52 @@ namespace StockDAL
|
||||
join stk in context.Stocks on prs.StockId equals stk.Id
|
||||
join grp in context.StockGroups on stk.StockId equals grp.StockName
|
||||
where prs.PersonId == persId
|
||||
orderby grp.GroupName, grp.StockName
|
||||
orderby grp.StockGroup, grp.StockName
|
||||
select new StockGrpPers
|
||||
{
|
||||
PersId = persId,
|
||||
StockId = stk.StockId,
|
||||
StockGroup = grp.GroupName
|
||||
StockGroup = grp.StockGroup
|
||||
}).ToList();
|
||||
return result;
|
||||
}
|
||||
|
||||
public StockGroupModel SaveStockGroup(StockGroupModel stockGroup)
|
||||
{
|
||||
using var context = new StockContext();
|
||||
var entity = (from sg in context.StockGroups
|
||||
where sg.Id == stockGroup.Id
|
||||
select sg).FirstOrDefault();
|
||||
if (entity == null)
|
||||
{
|
||||
entity = new StockGroupModel
|
||||
{
|
||||
StockGroup = stockGroup.StockGroup,
|
||||
StockName = stockGroup.StockName
|
||||
};
|
||||
context.StockGroups.Add(entity);
|
||||
}
|
||||
else
|
||||
{
|
||||
entity.StockGroup = stockGroup.StockGroup;
|
||||
entity.StockName = stockGroup.StockName;
|
||||
}
|
||||
context.SaveChanges();
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
public IEnumerable<StockGrpPers> GetGroupedStock(string stock)
|
||||
{
|
||||
using var context = new StockContext();
|
||||
var result = (from grp in context.StockGroups
|
||||
where grp.StockName == stock
|
||||
select new StockGrpPers
|
||||
{
|
||||
PersId = 0,
|
||||
StockId = grp.StockName,
|
||||
StockGroup = grp.StockGroup
|
||||
}).ToList();
|
||||
return result;
|
||||
}
|
||||
@ -184,5 +226,17 @@ namespace StockDAL
|
||||
throw new InvalidOperationException(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> GetStockNames()
|
||||
{
|
||||
using var context = new StockContext();
|
||||
var output = (from stg in context.StockGroups
|
||||
orderby stg.StockName
|
||||
select stg.StockName).ToList();
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,8 +32,8 @@ namespace StockDAL
|
||||
Thread.Sleep(500);
|
||||
chooseList.SelectDropDownByText(listText);
|
||||
Thread.Sleep(800);
|
||||
var stockListTuple = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
|
||||
return stockListTuple;
|
||||
var stockList = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
|
||||
return stockList;
|
||||
}
|
||||
|
||||
public List<DiTraderStockRow> SearchStockAndCollect(string stockName)
|
||||
|
||||
@ -16,5 +16,6 @@ namespace StockDal.Interface
|
||||
void LoadStockMarketList(int persId);
|
||||
void LoadStockMarketList(int persId, bool viewBrowser);
|
||||
void RefreshMarketList(int persId);
|
||||
DiTraderStockRow LoadStockMarketStockData(string searchedStock);
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,5 +20,8 @@ namespace StockDAL.Interface
|
||||
void UpdateActualForSell(int id, int sellAmount, decimal sellPrice, DateTime sellDate);
|
||||
void UpdateActualPrice(int id, decimal price);
|
||||
IEnumerable<StockGrpPers> GetStocksGroupedPerPerson(int persId);
|
||||
List<string> GetStockNames();
|
||||
IEnumerable<StockGrpPers> GetGroupedStock(string stock);
|
||||
StockGroupModel SaveStockGroup(StockGroupModel stockGroup);
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
BIN
StockInfoCore/Stocks.db-shm
Normal file
BIN
StockInfoCore/Stocks.db-shm
Normal file
Binary file not shown.
0
StockInfoCore/Stocks.db-wal
Normal file
0
StockInfoCore/Stocks.db-wal
Normal file
BIN
StockInfoCore/TillfBackup/Stocks.db
Normal file
BIN
StockInfoCore/TillfBackup/Stocks.db
Normal file
Binary file not shown.
BIN
StockInfoCore/TillfBackup/Stocks.db-shm
Normal file
BIN
StockInfoCore/TillfBackup/Stocks.db-shm
Normal file
Binary file not shown.
BIN
StockInfoCore/TillfBackup/Stocks.db-wal
Normal file
BIN
StockInfoCore/TillfBackup/Stocks.db-wal
Normal file
Binary file not shown.
@ -1,4 +1,5 @@
|
||||
using DataDomain;
|
||||
using StockDal.Interface;
|
||||
using StockDAL.Interface;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -16,24 +17,33 @@ namespace StockInfoCore
|
||||
{
|
||||
Color hdr = Color.Red;
|
||||
private readonly IStockRepository _stockRepository;
|
||||
private readonly IStockMarketRepository _stockMarketRepository;
|
||||
private readonly IStockScrapePage _scrapePage;
|
||||
|
||||
public List<string> StockNames { get; set; }
|
||||
public Dictionary<string, DiTraderStockRow> Stocks { get; set; }
|
||||
public List<StockMember> RegisteredStocks { get; set; } = new List<StockMember>();
|
||||
|
||||
public frmRegisterStock(IStockRepository stockRepository)
|
||||
public StockGroupModel StockGroupTmp { get; set; }
|
||||
|
||||
public frmRegisterStock(IStockRepository stockRepository,
|
||||
IStockMarketRepository stockMarketRepository,
|
||||
IStockScrapePage scrapePage)
|
||||
{
|
||||
InitializeComponent();
|
||||
_stockRepository = stockRepository;
|
||||
_stockMarketRepository = stockMarketRepository;
|
||||
_scrapePage = scrapePage;
|
||||
}
|
||||
|
||||
private void LoadStockCombo()
|
||||
{
|
||||
if (Stocks.Count() > 0)
|
||||
|
||||
cmbStockChoser.Items.Clear();
|
||||
|
||||
foreach (var key in StockNames)
|
||||
{
|
||||
foreach (var key in Stocks.Keys)
|
||||
{
|
||||
cmbStockChoser.Items.Add(key);
|
||||
}
|
||||
cmbStockChoser.Items.Add(key);
|
||||
}
|
||||
|
||||
}
|
||||
@ -45,22 +55,31 @@ namespace StockInfoCore
|
||||
|
||||
private void frmRegisterStock_Shown(object sender, EventArgs e)
|
||||
{
|
||||
StockNames = _stockRepository.GetStockNames();
|
||||
LoadStockCombo();
|
||||
}
|
||||
|
||||
private void cmbStockChoser_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var stockChosen = Stocks[cmbStockChoser.SelectedItem.ToString()];
|
||||
txtStockExtId.Text = stockChosen.StockName;
|
||||
txtActValue.Text = stockChosen.LatestPrice.ToString();
|
||||
txtActDate.Text = (DateTime.Today + stockChosen.TimeOfDay).ToString();
|
||||
var stockSold = _stockRepository.LatestSell(stockChosen.StockName.Trim());
|
||||
if (stockSold != null)
|
||||
if (Stocks.ContainsKey(cmbStockChoser.SelectedItem.ToString()))
|
||||
{
|
||||
if (stockSold.LatestSoldDate != null)
|
||||
var stockChosen = Stocks[cmbStockChoser.SelectedItem.ToString()];
|
||||
txtStockExtId.Text = stockChosen.StockName;
|
||||
txtActValue.Text = stockChosen.LatestPrice.ToString();
|
||||
txtActDate.Text = (DateTime.Today + stockChosen.TimeOfDay).ToString();
|
||||
var stockSold = _stockRepository.LatestSell(stockChosen.StockName.Trim());
|
||||
if (stockSold != null)
|
||||
{
|
||||
txtLatestSoldDate.Text = stockSold.LatestSoldDate.Value.ToString();
|
||||
txtLatestSoldPrice.Text = stockSold.SoldStockPrice.ToString();
|
||||
if (stockSold.LatestSoldDate != null)
|
||||
{
|
||||
txtLatestSoldDate.Text = stockSold.LatestSoldDate.Value.ToString();
|
||||
txtLatestSoldPrice.Text = stockSold.SoldStockPrice.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
txtLatestSoldDate.Text = string.Empty;
|
||||
txtLatestSoldPrice.Text = string.Empty;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -68,10 +87,24 @@ namespace StockInfoCore
|
||||
txtLatestSoldPrice.Text = string.Empty;
|
||||
}
|
||||
}
|
||||
else if (StockNames.Contains(cmbStockChoser.SelectedItem.ToString()))
|
||||
{
|
||||
var stockChosen = _stockMarketRepository.LoadStockMarketStockData(cmbStockChoser.SelectedItem.ToString());
|
||||
txtStockExtId.Text = stockChosen.StockName;
|
||||
txtActValue.Text = stockChosen.LatestPrice.ToString();
|
||||
txtActDate.Text = (DateTime.Today + stockChosen.TimeOfDay).ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
txtLatestSoldDate.Text = string.Empty;
|
||||
txtLatestSoldPrice.Text = string.Empty;
|
||||
var stockChosen = _scrapePage.SearchStockAndCollect(cmbStockChoser.Text.Substring(0, 4));
|
||||
if (stockChosen.Count > 0)
|
||||
{
|
||||
txtStockExtId.Text = stockChosen[0].StockName;
|
||||
txtActValue.Text = stockChosen[0].LatestPrice.ToString();
|
||||
txtActDate.Text = (DateTime.Today + stockChosen[0].TimeOfDay).ToString();
|
||||
StockGroupTmp.StockGroup = "ZNotFound";
|
||||
StockGroupTmp.StockName = stockChosen[0].StockName;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -134,7 +167,13 @@ namespace StockInfoCore
|
||||
|
||||
private void btnSaveToDB_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (RegisteredStocks.Count > 0)
|
||||
{
|
||||
_stockRepository.InsertMany(RegisteredStocks);
|
||||
lwRegBuffer.Clear();
|
||||
RegisteredStocks.Clear();
|
||||
_stockRepository.SaveStockGroup(StockGroupTmp);
|
||||
}
|
||||
}
|
||||
|
||||
private void txtBoughtAmount_TextChanged(object sender, EventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user