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

@ -34,9 +34,9 @@ namespace StockDal
private readonly IStockScrapePage _scrapePage;
public StockMarketRepository(
IStockPersonConnect stockPersonConnect,
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
{
@ -168,7 +168,7 @@ namespace StockDal
catch (Exception)
{
DumpObjects.Add(SaveRow);
}
}
}
break;
@ -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)
{

View File

@ -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;
}
}
}

View File

@ -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)

View File

@ -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);
}
}

View File

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

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