Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }