Program fixes , registering new stocks, without dbchanges

This commit is contained in:
2022-02-11 11:23:01 +01:00
parent 04ba6f6c2b
commit 02d8762ee0
14 changed files with 220 additions and 35 deletions

View 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
View 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

View File

@ -153,13 +153,13 @@ namespace StockDal
} }
case 9: 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); //StockMarketList.Add(SaveRow.StockName, SaveRow);
try try
{ {
StockMarketList.Add(SaveRow.StockName, SaveRow); StockMarketList.Add(SaveRow.StockName, SaveRow);
} }
catch (ArgumentException ) catch (ArgumentException)
{ {
try try
{ {
@ -207,7 +207,7 @@ namespace StockDal
var url2 = "https://trader.di.se/index.php/stocklist/index/2055?list=7116"; 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 url3 = "https://trader.di.se/index.php/stocklist/index/2055?list=7127";
//var url1 = "https://www.finansportalen.se/aktiekurser/"; //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 catch
@ -219,7 +219,7 @@ namespace StockDal
private void saveStockData(List<DiTraderStockRow> saveRow) private void saveStockData(List<DiTraderStockRow> saveRow)
{ {
foreach(var row in saveRow) foreach (var row in saveRow)
{ {
try try
{ {
@ -249,17 +249,17 @@ namespace StockDal
var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId); var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId);
var lastGroup = string.Empty; var lastGroup = string.Empty;
var stockList = new List<string>(); var stockList = new List<string>();
foreach(var groupedStock in groupedStocks) foreach (var groupedStock in groupedStocks)
{ {
if (groupedStock.StockGroup != lastGroup) if (groupedStock.StockGroup != lastGroup)
{ {
if(lastGroup != string.Empty) if (lastGroup != string.Empty)
{ {
_testSettings.StockWishes = stockList.ToArray(); _testSettings.StockWishes = stockList.ToArray();
if (lastGroup == "ZNotFound") if (lastGroup == "ZNotFound")
foreach (var stk in stockList) 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 else
saveStockData(_scrapePage.GetMyStockStatus(lastGroup)); saveStockData(_scrapePage.GetMyStockStatus(lastGroup));
@ -279,7 +279,7 @@ namespace StockDal
} }
} }
if(stockList.Count > 0) if (stockList.Count > 0)
{ {
_testSettings.StockWishes = stockList.ToArray(); _testSettings.StockWishes = stockList.ToArray();
if (lastGroup == "ZNotFound") 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) public void LoadStockMarketList(int persId, bool viewBrowser)
{ {

View File

@ -133,6 +133,8 @@ namespace StockDAL
context.SaveChanges(); context.SaveChanges();
} }
public IEnumerable<StockGrpPers> GetStocksGroupedPerPerson(int persId) public IEnumerable<StockGrpPers> GetStocksGroupedPerPerson(int persId)
{ {
using var context = new StockContext(); using var context = new StockContext();
@ -140,12 +142,52 @@ namespace StockDAL
join stk in context.Stocks on prs.StockId equals stk.Id join stk in context.Stocks on prs.StockId equals stk.Id
join grp in context.StockGroups on stk.StockId equals grp.StockName join grp in context.StockGroups on stk.StockId equals grp.StockName
where prs.PersonId == persId where prs.PersonId == persId
orderby grp.GroupName, grp.StockName orderby grp.StockGroup, grp.StockName
select new StockGrpPers select new StockGrpPers
{ {
PersId = persId, PersId = persId,
StockId = stk.StockId, 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(); }).ToList();
return result; return result;
} }
@ -184,5 +226,17 @@ namespace StockDAL
throw new InvalidOperationException(ex.Message); 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;
}
} }
} }

View File

@ -32,8 +32,8 @@ namespace StockDAL
Thread.Sleep(500); Thread.Sleep(500);
chooseList.SelectDropDownByText(listText); chooseList.SelectDropDownByText(listText);
Thread.Sleep(800); Thread.Sleep(800);
var stockListTuple = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols); var stockList = tblList.SimpleReadTablePartly(_testSettings.StockWishes, _testSettings.StocWishCols);
return stockListTuple; return stockList;
} }
public List<DiTraderStockRow> SearchStockAndCollect(string stockName) public List<DiTraderStockRow> SearchStockAndCollect(string stockName)

View File

@ -16,5 +16,6 @@ namespace StockDal.Interface
void LoadStockMarketList(int persId); void LoadStockMarketList(int persId);
void LoadStockMarketList(int persId, bool viewBrowser); void LoadStockMarketList(int persId, bool viewBrowser);
void RefreshMarketList(int persId); void RefreshMarketList(int persId);
DiTraderStockRow LoadStockMarketStockData(string searchedStock);
} }
} }

View File

@ -20,5 +20,8 @@ namespace StockDAL.Interface
void UpdateActualForSell(int id, int sellAmount, decimal sellPrice, DateTime sellDate); void UpdateActualForSell(int id, int sellAmount, decimal sellPrice, DateTime sellDate);
void UpdateActualPrice(int id, decimal price); void UpdateActualPrice(int id, decimal price);
IEnumerable<StockGrpPers> GetStocksGroupedPerPerson(int persId); 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

Binary file not shown.

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,5 @@
using DataDomain; using DataDomain;
using StockDal.Interface;
using StockDAL.Interface; using StockDAL.Interface;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -16,25 +17,34 @@ namespace StockInfoCore
{ {
Color hdr = Color.Red; Color hdr = Color.Red;
private readonly IStockRepository _stockRepository; 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 Dictionary<string, DiTraderStockRow> Stocks { get; set; }
public List<StockMember> RegisteredStocks { get; set; } = new List<StockMember>(); 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(); InitializeComponent();
_stockRepository = stockRepository; _stockRepository = stockRepository;
_stockMarketRepository = stockMarketRepository;
_scrapePage = scrapePage;
} }
private void LoadStockCombo() private void LoadStockCombo()
{ {
if (Stocks.Count() > 0)
{ cmbStockChoser.Items.Clear();
foreach (var key in Stocks.Keys)
foreach (var key in StockNames)
{ {
cmbStockChoser.Items.Add(key); cmbStockChoser.Items.Add(key);
} }
}
} }
@ -45,10 +55,13 @@ namespace StockInfoCore
private void frmRegisterStock_Shown(object sender, EventArgs e) private void frmRegisterStock_Shown(object sender, EventArgs e)
{ {
StockNames = _stockRepository.GetStockNames();
LoadStockCombo(); LoadStockCombo();
} }
private void cmbStockChoser_SelectedIndexChanged(object sender, EventArgs e) private void cmbStockChoser_SelectedIndexChanged(object sender, EventArgs e)
{
if (Stocks.ContainsKey(cmbStockChoser.SelectedItem.ToString()))
{ {
var stockChosen = Stocks[cmbStockChoser.SelectedItem.ToString()]; var stockChosen = Stocks[cmbStockChoser.SelectedItem.ToString()];
txtStockExtId.Text = stockChosen.StockName; txtStockExtId.Text = stockChosen.StockName;
@ -73,6 +86,26 @@ namespace StockInfoCore
txtLatestSoldDate.Text = string.Empty; txtLatestSoldDate.Text = string.Empty;
txtLatestSoldPrice.Text = string.Empty; 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
{
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) 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) private void txtBoughtAmount_TextChanged(object sender, EventArgs e)