From 3b0809c48d10b89d95de10b32f24597bebfdf661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Mon, 21 Feb 2022 17:16:57 +0100 Subject: [PATCH] Cleared app from old code, by commenting out Will do another commit when all comments are taken away --- DataDomain/StockMember.cs | 6 + StockDAL/StockMarketRepository.cs | 323 ++++++++++--------- StockDAL/StockRepository.cs | 36 ++- StockDal.Interface/IStockMarketRepository.cs | 6 +- StockDal.Interface/IStockRepository.cs | 1 + StockInfoCore/frmInitial.cs | 31 +- StockInfoCore/frmRegisterStock.cs | 5 + 7 files changed, 230 insertions(+), 178 deletions(-) diff --git a/DataDomain/StockMember.cs b/DataDomain/StockMember.cs index ee6a7fe..0000a22 100644 --- a/DataDomain/StockMember.cs +++ b/DataDomain/StockMember.cs @@ -23,5 +23,11 @@ namespace DataDomain public long PostAmount { get; set; } public decimal SoldStockPrice { get; set; } + //public decimal PostValue + //{ + // get { return ActAmount * ActValue; } + //} + + } } diff --git a/StockDAL/StockMarketRepository.cs b/StockDAL/StockMarketRepository.cs index 438af18..877c3d5 100644 --- a/StockDAL/StockMarketRepository.cs +++ b/StockDAL/StockMarketRepository.cs @@ -18,14 +18,15 @@ using Helpers; namespace StockDal { + + public class StockMarketRepository : IStockMarketRepository { public Dictionary StockMarketList { get; set; } - public List DumpObjects { get; set; } = new List(); public DiTraderStockRow SaveRow { get; set; } public StringBuilder TextResults { get; set; } - public bool ViewBrowser { get; set; } + //public bool ViewBrowser { get; set; } public IWebDriver driver; private readonly IStockPersonConnect _stockPersonConnect; @@ -39,53 +40,53 @@ namespace StockDal TestSettings testSettings, IStockScrapePage scrapePage) { - ViewBrowser = false; +// ViewBrowser = false; _stockPersonConnect = stockPersonConnect; _stockRepository = stockRepository; _testSettings = testSettings; _scrapePage = scrapePage; } - private void Find_Data() - { - TextResults = new StringBuilder(); - IList searchElements = driver.FindElements(By.TagName("tbody")); - foreach (IWebElement i in searchElements) - { + //private void Find_Data() + //{ + // TextResults = new StringBuilder(); + // IList searchElements = driver.FindElements(By.TagName("tbody")); + // foreach (IWebElement i in searchElements) + // { - HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument(); - var text = i.GetAttribute("innerHTML"); - htmlDocument.LoadHtml(text); - var inputs = htmlDocument.DocumentNode.Descendants("tr").ToList(); - foreach (var items in inputs) - { - HtmlAgilityPack.HtmlDocument htmlDocument1 = new HtmlAgilityPack.HtmlDocument(); - htmlDocument1.LoadHtml(items.InnerHtml); - var tds = htmlDocument1.DocumentNode.Descendants("td").ToList(); - var appendText = ""; - var fNr = 0; - foreach (var item in tds) - { - var intext = item.InnerText.Replace("\r\n", ""); - appendText += appendText.Length == 0 ? intext : " " + intext; - if (tds.Count == 10) - { - AddValueToListRow(fNr++, intext); - } - } - if (!string.IsNullOrEmpty(appendText)) - { - TextResults.Append(appendText + "\r\n"); - } - htmlDocument1 = null; - } - htmlDocument = null; + // HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument(); + // var text = i.GetAttribute("innerHTML"); + // htmlDocument.LoadHtml(text); + // var inputs = htmlDocument.DocumentNode.Descendants("tr").ToList(); + // foreach (var items in inputs) + // { + // HtmlAgilityPack.HtmlDocument htmlDocument1 = new HtmlAgilityPack.HtmlDocument(); + // htmlDocument1.LoadHtml(items.InnerHtml); + // var tds = htmlDocument1.DocumentNode.Descendants("td").ToList(); + // var appendText = ""; + // var fNr = 0; + // foreach (var item in tds) + // { + // var intext = item.InnerText.Replace("\r\n", ""); + // appendText += appendText.Length == 0 ? intext : " " + intext; + // if (tds.Count == 10) + // { + // AddValueToListRow(fNr++, intext); + // } + // } + // if (!string.IsNullOrEmpty(appendText)) + // { + // TextResults.Append(appendText + "\r\n"); + // } + // htmlDocument1 = null; + // } + // htmlDocument = null; - TextResults.Append("\r\n"); - } + // TextResults.Append("\r\n"); + // } - // var oxe = StockMarketList; - } + // // var oxe = StockMarketList; + //} private void SaveLogging() { @@ -100,122 +101,122 @@ namespace StockDal File.WriteAllText($"{programPath}\\Loggings\\Log{DateTime.Now.ToShortDateString()}.txt", output); } - private void AddValueToListRow(int pos, string value) - { - switch (pos) - { - case 0: - { - SaveRow = new DiTraderStockRow(); - SaveRow.StockName = value; - break; - } - case 1: - { - SaveRow.ProcChange = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 2: - { - SaveRow.RealChange = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 3: - { - SaveRow.BuyPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 4: - { - SaveRow.SellPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 5: - { - SaveRow.LatestPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 6: - { - SaveRow.HighestPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 7: - { - SaveRow.LowestPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); - break; - } - case 8: - { + //private void AddValueToListRow(int pos, string value) + //{ + // switch (pos) + // { + // case 0: + // { + // SaveRow = new DiTraderStockRow(); + // SaveRow.StockName = value; + // break; + // } + // case 1: + // { + // SaveRow.ProcChange = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 2: + // { + // SaveRow.RealChange = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 3: + // { + // SaveRow.BuyPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 4: + // { + // SaveRow.SellPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 5: + // { + // SaveRow.LatestPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 6: + // { + // SaveRow.HighestPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 7: + // { + // SaveRow.LowestPrice = string.IsNullOrWhiteSpace(value) ? 0 : decimal.Parse(value); + // break; + // } + // case 8: + // { - SaveRow.Volume = string.IsNullOrWhiteSpace(value) ? 0 : long.Parse(value.Replace(" ", "")); - break; - } - case 9: - { - SaveRow.TimeOfDay = value == "" ? TimeSpan.Parse("00:01") : TimeSpan.Parse(value); - //StockMarketList.Add(SaveRow.StockName, SaveRow); - try - { - StockMarketList.Add(SaveRow.StockName, SaveRow); - } - catch (ArgumentException) - { - try - { - StockMarketList.Add(SaveRow.StockName + "-2", SaveRow); - } - catch (Exception) - { - DumpObjects.Add(SaveRow); - } + // SaveRow.Volume = string.IsNullOrWhiteSpace(value) ? 0 : long.Parse(value.Replace(" ", "")); + // break; + // } + // case 9: + // { + // SaveRow.TimeOfDay = value == "" ? TimeSpan.Parse("00:01") : TimeSpan.Parse(value); + // //StockMarketList.Add(SaveRow.StockName, SaveRow); + // try + // { + // StockMarketList.Add(SaveRow.StockName, SaveRow); + // } + // catch (ArgumentException) + // { + // try + // { + // StockMarketList.Add(SaveRow.StockName + "-2", SaveRow); + // } + // catch (Exception) + // { + // DumpObjects.Add(SaveRow); + // } - } - break; - } - default: - break; - } - } + // } + // break; + // } + // default: + // break; + // } + //} - private void OpenBrowser(bool? burl2 = false) - { - var driverService = ChromeDriverService.CreateDefaultService(); - driverService.HideCommandPromptWindow = true; + //private void OpenBrowser(bool? burl2 = false) + //{ + // var driverService = ChromeDriverService.CreateDefaultService(); + // driverService.HideCommandPromptWindow = true; - if (ViewBrowser) - { - if (driver == null) - { - driver = new ChromeDriver(driverService); - } - } - else - { - if (driver == null) - { - var options = new ChromeOptions(); - options.AddArgument("headless"); - driver = new ChromeDriver(driverService, options); - } - } + // if (ViewBrowser) + // { + // if (driver == null) + // { + // driver = new ChromeDriver(driverService); + // } + // } + // else + // { + // if (driver == null) + // { + // var options = new ChromeOptions(); + // options.AddArgument("headless"); + // driver = new ChromeDriver(driverService, options); + // } + // } - try - { - //var url0 = "https://money.cnn.com/data/hotstocks/index.html"; - var url = "https://trader.di.se/index.php/stocklist/index/2055?list=7126"; - 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); + // try + // { + // //var url0 = "https://money.cnn.com/data/hotstocks/index.html"; + // var url = "https://trader.di.se/index.php/stocklist/index/2055?list=7126"; + // 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); - } - catch - { - throw; - } + // } + // catch + // { + // throw; + // } - } + //} private void saveStockData(List saveRow) { @@ -246,7 +247,8 @@ namespace StockDal { StockMarketList = new Dictionary(); DumpObjects = new List(); - var groupedStocks = _stockRepository.GetStocksGroupedPerPerson(persId); + var groupedStocks = persId == 0 ? _stockRepository.GetStocksGroupedAllPersons() + : _stockRepository.GetStocksGroupedPerPerson(persId); var lastGroup = string.Empty; var stockList = new List(); foreach (var groupedStock in groupedStocks) @@ -359,19 +361,20 @@ namespace StockDal } - public void LoadStockMarketList(int persId, bool viewBrowser) - { - StockMarketList = new Dictionary(); - ViewBrowser = viewBrowser; - OpenBrowser(); - Find_Data(); - } + //public void LoadStockMarketList(int persId) + //{ + // LoadStockMarketList(persId); + // //StockMarketList = new Dictionary(); + // //ViewBrowser = viewBrowser; + // //OpenBrowser(); + // //Find_Data(); + //} public void RefreshMarketList(int persId) { - StockMarketList = new Dictionary(); - driver.Navigate().Refresh(); - Find_Data(); + //StockMarketList = new Dictionary(); + //driver.Navigate().Refresh(); + //Find_Data(); } public void Clean() diff --git a/StockDAL/StockRepository.cs b/StockDAL/StockRepository.cs index 5b0aa47..d18babf 100644 --- a/StockDAL/StockRepository.cs +++ b/StockDAL/StockRepository.cs @@ -103,12 +103,6 @@ namespace StockDAL return result; } - public IEnumerable GetAllStocks() - { - using var context = new StockContext(); - var output = context.Stocks; - return output.ToList(); - } public IEnumerable GetAllRemainingStocks() { @@ -132,8 +126,14 @@ namespace StockDAL context.Stocks.AddRange(stockMembers); context.SaveChanges(); } - - + public IEnumerable GetAllStocks() + { + using var context = new StockContext(); + var output = (from stk in context.Stocks + orderby stk.StockId, (stk.ActAmount * stk.ActValue).ToString() descending + select stk); + return output.ToList(); + } public IEnumerable GetStocksGroupedPerPerson(int persId) { @@ -152,6 +152,24 @@ namespace StockDAL return result; } + public IEnumerable GetStocksGroupedAllPersons() + { + using var context = new StockContext(); + var result = (from prs in context.PersonStocks + join stk in context.Stocks on prs.StockId equals stk.Id + join grp in context.StockGroups on stk.StockId equals grp.StockName + where stk.ActAmount > 0 + orderby grp.StockGroup, grp.StockName + select new StockGrpPers + { + PersId = prs.Id, + StockId = stk.StockId, + StockGroup = grp.StockGroup + }).ToList(); + return result; + } + + public StockGroupModel SaveStockGroup(StockGroupModel stockGroup) { using var context = new StockContext(); @@ -231,7 +249,7 @@ namespace StockDAL { using var context = new StockContext(); var output = (from stg in context.StockGroups - orderby stg.StockName + orderby stg.StockName, stg.StockGroup select stg.StockName).ToList(); return output; } diff --git a/StockDal.Interface/IStockMarketRepository.cs b/StockDal.Interface/IStockMarketRepository.cs index 741a6b7..11d3bec 100644 --- a/StockDal.Interface/IStockMarketRepository.cs +++ b/StockDal.Interface/IStockMarketRepository.cs @@ -9,12 +9,14 @@ namespace StockDal.Interface { public interface IStockMarketRepository { + List DumpObjects { get; set; } + DiTraderStockRow SaveRow { get; set; } Dictionary StockMarketList { get; set; } - bool ViewBrowser { get; set; } + StringBuilder TextResults { get; set; } void Clean(); void LoadStockMarketList(int persId); - void LoadStockMarketList(int persId, bool viewBrowser); + //void LoadStockMarketList(int persId, bool viewBrowser); void RefreshMarketList(int persId); DiTraderStockRow LoadStockMarketStockData(string searchedStock); } diff --git a/StockDal.Interface/IStockRepository.cs b/StockDal.Interface/IStockRepository.cs index e64f248..14457dd 100644 --- a/StockDal.Interface/IStockRepository.cs +++ b/StockDal.Interface/IStockRepository.cs @@ -20,6 +20,7 @@ namespace StockDAL.Interface void UpdateActualForSell(int id, int sellAmount, decimal sellPrice, DateTime sellDate); void UpdateActualPrice(int id, decimal price); IEnumerable GetStocksGroupedPerPerson(int persId); + IEnumerable GetStocksGroupedAllPersons(); List GetStockNames(); IEnumerable GetGroupedStock(string stock); StockGroupModel SaveStockGroup(StockGroupModel stockGroup); diff --git a/StockInfoCore/frmInitial.cs b/StockInfoCore/frmInitial.cs index 057a571..addf452 100644 --- a/StockInfoCore/frmInitial.cs +++ b/StockInfoCore/frmInitial.cs @@ -89,28 +89,45 @@ namespace StockInfoCore btnBackupAll.Enabled = false; } - private void ReloadData() + 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(); + 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; + //_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) @@ -131,7 +148,7 @@ namespace StockInfoCore private void btnStockReg_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; - _stockMarketRepository.LoadStockMarketList(SelectedPersonId); + _stockMarketRepository.LoadStockMarketList(SelectedPersonId==0?10000: SelectedPersonId); _regWindow.Stocks = _stockMarketRepository.StockMarketList; Cursor.Current = DefaultCursor; _regWindow.ShowDialog(); diff --git a/StockInfoCore/frmRegisterStock.cs b/StockInfoCore/frmRegisterStock.cs index 7ddffcc..cdc8ee1 100644 --- a/StockInfoCore/frmRegisterStock.cs +++ b/StockInfoCore/frmRegisterStock.cs @@ -59,6 +59,11 @@ namespace StockInfoCore LoadStockCombo(); } + /// + /// Val av enstaka Aktie för sökning och registrering + /// + /// + /// private void cmbStockChoser_SelectedIndexChanged(object sender, EventArgs e) { if (Stocks.ContainsKey(cmbStockChoser.SelectedItem.ToString()))