public void Start() { Items = GetItems(); foreach (var item in Items) { if (item is DividendTransactionDto dividend) { ImportDividend(dividend); } else if (item is SellingTransactionDto selling) { ImportSelling(selling); } else { ImportBuying(item as BuyingTransactionDto); } if (item.OldId == 2201) { //Splits ImportSplit(DateTime.Parse("2012-05-16 00:00:00"), StockItems.FirstOrDefault(s => s.Wkn.Equals("548851")), 500, 1.991m); //Pferdewetten } if (item.OldId == 2184) { //Splits ImportSplit(DateTime.Parse("2012-12-13 00:00:00"), StockItems.FirstOrDefault(s => s.Wkn.Equals("A0YJT2")), 137, 13.209124m); //Lambda TD Software } } }
public async Task <IActionResult> OnGetAsync(int?id) { if (id == null) { return(NotFound()); } Product = await _context.Products.FirstOrDefaultAsync(m => m.Product_ID == id); Categories = _context.Categories.ToList(); StockItems = _context.Stock.ToList(); stockToProducts = _context.StockToProducts.Where(stp => stp.ProductId == id).ToList(); StockToProductStockItems = new List <StockToProduct_StockItems>(); foreach (var stp in stockToProducts) { StockToProduct_StockItems stp_si = new StockToProduct_StockItems { StockName = StockItems.FirstOrDefault(si => si.Id == stp.StockId).StockName, Quantity = stp.QuantityUse }; StockToProductStockItems.Add(stp_si); } if (Product == null) { return(NotFound()); } return(Page()); }
private ITransactionDto ImportDividend(IDataRecord reader) { var item = new DividendTransactionDto(); var dividendStock = StockItems[int.Parse(reader["Stock_ID"].ToString())]; item.OldId = int.Parse(reader["ID"].ToString()); item.Shares = decimal.Parse(reader["Units"].ToString()); item.Description = reader["Description"].ToString(); item.OrderCosts = decimal.Parse(reader["OrderCosts"].ToString()); item.OrderDate = DateTime.Parse(reader["OrderDate"].ToString()); item.OriginalVersion = -1; item.PricePerShare = decimal.Parse(reader["PricePerUnit"].ToString()); item.Stock = StockItems.FirstOrDefault(s => s.Value.Wkn.Equals(dividendStock.Wkn) && s.Value.OldId != dividendStock.OldId).Value; item.Tag = reader["Tag"].ToString(); item.Taxes = decimal.Parse(reader["Taxes"].ToString()); item.Image = ImportImage(item.Id, item.OldId); //Import var cmd = new TransactionDividendCommand( item.Id, -1, item.OrderDate, item.Shares, item.PricePerShare, item.OrderCosts, item.Description, item.Tag, null, item.Stock.Id, item.Taxes); CommandDispatcher.Execute(cmd); //Image if (item.Image != null) { LoggingService.Info($"Dividend {item.Stock.Name} ({item.Shares} x {item.PricePerShare}) + IMAGE"); } else { LoggingService.Info($"Dividend {item.Stock.Name} ({item.Shares} x {item.PricePerShare})"); } return(item); }
/// <summary> /// Gets the stock /// </summary> /// <returns></returns> private StockDto GetStock(int oldId) { var oldStock = StockItems.FirstOrDefault(s => s.OldId == oldId); // We only imported non dividend stocks, so we need to merge this now if (oldStock == null) { var dividendStock = DividendStockItems.FirstOrDefault(s => s.OldId == oldId); //Get the corresponding stock with the same WKN as the dividend oldStock = StockItems.FirstOrDefault(s => s.Wkn.Equals(dividendStock.Wkn)); var dividend = (StockDto)oldStock.Clone(); dividend.IsDividend = true; return(dividend); } return(oldStock); }
public async Task <IActionResult> OnPostAsync() { Categories = _context.Categories.Select(n => new SelectListItem { Value = n.Cat_ID.ToString(), Text = n.CategoryName }).ToList(); StockItems = _context.Stock.ToList(); //if (!ModelState.IsValid) //{ // return Page(); //} if (UploadImage != null) { var fileName = Path.Combine(_hostingEnvironment.WebRootPath, "img", UploadImage.FileName); using (var fileStream = new FileStream(fileName, FileMode.Create)) { await UploadImage.CopyToAsync(fileStream); } Product.ImageUrl = "\\img\\" + UploadImage.FileName; // Set the file name } Product.Cat_ID = Convert.ToInt32(SelectedTag); decimal stockPrice = 0; if (StockItemChecked != null) { List <decimal> ssqNums = new List <decimal>(); foreach (string ssq in SelectedStockQuantities) { if (ssq != null) { decimal quan = 0m; quan = decimal.Parse(ssq, CultureInfo.InvariantCulture); ssqNums.Add(quan); } } for (int s = 0; s < StockItemChecked.Count; s++) { StockItem stock = new StockItem(); stock = StockItems.FirstOrDefault(st => st.StockName == StockItemChecked[s]); decimal productStockPrice = stock.Price * ssqNums[s]; stockPrice = stockPrice + productStockPrice; StockToProduct newStockToProduct = new StockToProduct { StockId = stock.Id, ProductId = Product.Product_ID, QuantityUse = ssqNums[s] }; _context.StockToProducts.Add(newStockToProduct); await _context.SaveChangesAsync(); } } Product.CostPrice = stockPrice; Product.ProfitMargin = Product.SellingPrice - stockPrice; _context.Products.Update(Product); await _context.SaveChangesAsync(); TempData["StatusMessage"] = "Product " + Product.ProductName + " successfully created."; return(RedirectToPage("./ProductIndex")); }
public async Task <IActionResult> OnPostAsync() { StockToProducts = _context.StockToProducts.ToList(); //Product = _context.Products.FirstOrDefault(m => m.Product_ID == Product.Product_ID); AllCategories = _context.Categories.ToList(); StockItems = _context.Stock.ToList(); if (!ModelState.IsValid) { return(Page()); } try { string imageurl = Product.ImageUrl; if (UploadImage != null) { var fileName = Path.Combine(_hostingEnvironment.WebRootPath, "img", UploadImage.FileName); using (var fileStream = new FileStream(fileName, FileMode.Create)) { await UploadImage.CopyToAsync(fileStream); } Product.ImageUrl = "\\img\\" + UploadImage.FileName; // Set the file name } else { Product.ImageUrl = imageurl; } Product.Cat_ID = Convert.ToInt32(SelectedTag); decimal stockPrice = 0; if (StockItemChecked != null || StockItemChecked.Count > 0) { List <decimal> ssqNums = new List <decimal>(); foreach (string ssq in SelectedStockQuantities) { if (ssq != null) { decimal quan = 0m; quan = decimal.Parse(ssq, CultureInfo.InvariantCulture); ssqNums.Add(quan); } } for (int s = 0; s < StockItemChecked.Count; s++) { StockItem stock = new StockItem(); stock = StockItems.FirstOrDefault(st => st.StockName == StockItemChecked[s]); decimal qty = ssqNums[s]; decimal productStockPrice = stock.Price * qty; stockPrice = stockPrice + productStockPrice; StockToProduct stp = new StockToProduct(); stp = _context.StockToProducts.FirstOrDefault(st => st.StockId == stock.Id && st.ProductId == Product.Product_ID); if (stp == null) { StockToProduct newStockToProduct = new StockToProduct { StockId = stock.Id, ProductId = Product.Product_ID, QuantityUse = ssqNums[s] }; _context.StockToProducts.Add(newStockToProduct); await _context.SaveChangesAsync(); } else { stp.QuantityUse = ssqNums[s]; _context.StockToProducts.Update(stp); await _context.SaveChangesAsync(); } } } Product.CostPrice = stockPrice; Product.ProfitMargin = Product.SellingPrice - stockPrice; _context.Products.Update(Product); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProductExists(Product.Product_ID)) { return(NotFound()); } else { throw; } } TempData["StatusMessage"] = "Product " + Product.ProductName + " successfully edited."; return(RedirectToPage("./ProductIndex")); }