public void Test() { Account acc = new Account(); acc.BankRoll = 50000; IStockHolder holder = new StockHolder(); acc.Holder = holder; IBonusReader reader = new FakeBonusReader(); BonusProcessor processor = new BonusProcessor(); processor.Load(FakeBonusReader.STOCKID, reader); acc.Processor = processor; acc.DoBusiness(new StockOper(UNITPRICE, BUYCOUNT, OperType.Buy)); Assert.IsTrue(acc.Holder.StockCount() == BUYCOUNT); Assert.IsTrue(acc.Holder.UnitPrice >= UNITPRICE); acc.ProcessBonus(new DateTime(2009, 1, 1)); acc.ProcessBonus(new DateTime(2009, 1, 2)); double cash = acc.BankRoll; acc.ProcessBonus(new DateTime(2009, 1, 3)); Assert.IsTrue(acc.Holder.StockCount() == BUYCOUNT); Assert.IsTrue(acc.BankRoll > cash); acc.ProcessBonus(new DateTime(2009, 1, 4)); Assert.IsTrue(acc.Holder.StockCount() == BUYCOUNT + (BUYCOUNT * 0.1)); }
public IEnumerable <StockHolder> ReadCsv(string data) { using (var reader = new StringReader(data)) using (var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture)) { // return csvReader.GetRecords<StockHolder>().ToList(); while (csvReader.Read()) { StockHolder stockHolder = null; try { stockHolder = csvReader.GetRecord <StockHolder>(); } catch (CsvHelper.TypeConversion.TypeConverterException ex) { _logger.LogDebug(ex.Message); } catch (Exception ex) { _logger.LogWarning(ex.Message); } if (stockHolder != null) { yield return(stockHolder); } } } }
public void StockHolder(int stockId) { string code = db.Stocks.Where(v => v.Id == stockId).First().Code; Definition obj = db.Definitions.Where(v => v.Id == 35012).First(); string url = obj.CodeNum.Replace("{code}", code); string method = ""; switch (obj.Num1) { case 1: method = "Get"; break; case 2: method = "Post"; break; case 3: method = "Put"; break; } string data = WindowFramework.LibWeb.HttpRequestData(url, method); int start = data.IndexOf("KL CP đang lưu hành : ") + "KL CP đang lưu hành : ".Length; data = data.Substring(start); int end = data.IndexOf(" cp"); int currentStock = Convert.ToInt32(data.Substring(0, end).Replace(",", "")); Stock stock = db.Stocks.Where(v => v.Id == stockId).First(); stock.TotalStock = currentStock; db.SubmitChanges(); string[] holder = new string[3]; data = data.Substring(data.IndexOf("<table") + 6); data = data.Substring(data.IndexOf("<tr") + 3); data = data.Substring(data.IndexOf("<tr") + 3); //Delete all StockHolder of stockId var items = db.StockHolders.Where(v => v.StockId == stockId); db.StockHolders.DeleteAllOnSubmit(items); StockHolder stockHolder; while (data.IndexOf("<tr") < data.IndexOf("</table>")) { start = data.IndexOf("<td align=\"left\">") + "<td align=\"left\">".Length; data = data.Substring(start); end = data.IndexOf("</td>"); holder[0] = StringClear(data.Substring(0, end)); // fullname data = data.Substring(end); start = data.IndexOf("<td align=\"right\">") + "<td align=\"right\">".Length; data = data.Substring(start); end = data.IndexOf("</td>"); holder[1] = StringClear(data.Substring(0, end)); // quantity start = data.IndexOf("<td align=\"center\">") + "<td align=\"center\">".Length; data = data.Substring(start); end = data.IndexOf("</td>"); holder[2] = StringClear(data.Substring(0, end)); // affect date //insert to StockHolder stockHolder = new StockHolder(); stockHolder.StockId = stockId; stockHolder.StockHolderName = holder[0]; stockHolder.Quantity = Convert.ToInt32(holder[1]); stockHolder.AffectedDate = DateTime.ParseExact(holder[2], "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture); db.StockHolders.InsertOnSubmit(stockHolder); db.SubmitChanges(); } }