private void InitializeEoiAssets() { if (_fileSystemAsset == null) { return; } var transactions = _fileSystemAsset.GetOrderedTransactions(); var quantity = _fileSystemAsset.Quantity; foreach (var transaction in transactions) { var eoiAsset = _eoiAssets.FirstOrDefault(x => x.Price == transaction.unit_price); if (eoiAsset == null) { eoiAsset = new EoiAsset(); if (_type != null) { eoiAsset.Name = _type.Name; } eoiAsset.Price = transaction.unit_price; if (quantity > transaction.quantity) { eoiAsset.Quantity = transaction.quantity; } else if (quantity > 0) { eoiAsset.Quantity = quantity; } quantity -= transaction.quantity; _eoiAssets.Add(eoiAsset); } else { if (quantity > transaction.quantity) { eoiAsset.Quantity += transaction.quantity; } else if (quantity > 0) { eoiAsset.Quantity += quantity; } quantity -= transaction.quantity; } } if (quantity > 0) { var eoiAsset = _eoiAssets.FirstOrDefault(x => x.Price == 0); if (eoiAsset == null) { eoiAsset = new EoiAsset(); if (_type != null) { eoiAsset.Name = _type.Name; } eoiAsset.Price = 0; eoiAsset.Quantity = quantity; _eoiAssets.Add(eoiAsset); } else { eoiAsset.Quantity += quantity; } } }
internal void UpdateEoiAssets() { if (_fileSystemAsset == null) { return; } var transactions = _fileSystemAsset.GetOrderedTransactions(); var quantity = _fileSystemAsset.Quantity; var usedEoiAssets = new List <EoiAsset>(); _eoiAssets.ForEach(x => x.Quantity = 0); foreach (var transaction in transactions) { var eoiAsset = _eoiAssets.FirstOrDefault(x => x.Price == transaction.unit_price); if (eoiAsset == null) { eoiAsset = new EoiAsset(); if (_type != null) { eoiAsset.Name = _type.Name; } else { eoiAsset.Name = "Unknown"; } eoiAsset.Price = transaction.unit_price; if (quantity > transaction.quantity) { eoiAsset.Quantity = transaction.quantity; } else if (quantity > 0) { eoiAsset.Quantity = quantity; } quantity -= transaction.quantity; _eoiAssets.Add(eoiAsset); EoiInterface.AddAsset(eoiAsset); } else { if (quantity > transaction.quantity) { eoiAsset.Quantity += transaction.quantity; } else if (quantity > 0) { eoiAsset.Quantity += quantity; } quantity -= transaction.quantity; } usedEoiAssets.Add(eoiAsset); } if (quantity > 0) { var eoiAsset = _eoiAssets.FirstOrDefault(x => x.Price == 0); if (eoiAsset == null) { eoiAsset = new EoiAsset(); if (_type != null) { eoiAsset.Name = _type.Name; } eoiAsset.Price = 0; eoiAsset.Quantity = quantity; _eoiAssets.Add(eoiAsset); } else { eoiAsset.Quantity += quantity; } usedEoiAssets.Add(eoiAsset); } foreach (var eoiAsset in _eoiAssets.ToList()) { if (!usedEoiAssets.Contains(eoiAsset)) { _eoiAssets.Remove(eoiAsset); EoiInterface.RemoveAsset(eoiAsset); } } }