public void MakeNewConsumablesToExpend(bool autoConverting = true)
        {
            List <ConsumableRate>            priority = _currentConsumablesNeed.OrderBy(x => x.significanceRate).ToList();
            Dictionary <ConsumableData, int> inStock  = GetConsumablesCountsInStockByNeed();
            ConsumablesExpending             ce       = new ConsumablesExpending(priority, inStock);

            CurrentConsExpending = ce;
            ce.FormExpending();
            if (autoConverting)
            {
                Dictionary <ConsumableData, int> allStock = GetConsumablesCountsInStock();
                ce.AddUnnecessaryConsumables(allStock);
                ce.BalanceLackingConsumables();
            }
            float penalty = ce.CalculatePenalty();

            ce.CalculatePenaltyRate(GetAffilatedConsumablesNeed());
        }
        public void OccupyAmountedResources()
        {
            if (_consumablesCards.Count == 0)
            {
                return;
            }
            DepartmentResources   dr            = GetResourcesForType(_consumablesCards[0].type);
            List <ConsumableCard> cardsToDelete = new List <ConsumableCard>();

            foreach (ConsumableToExpend cons in CurrentConsExpending.ExpendList)
            {
                int rest = cons.Spended;
                foreach (ConsumableCard card in _consumablesCards)
                {
                    if (rest <= 0)
                    {
                        break;
                    }
                    if (card.ConsumableData == cons.Resource)
                    {
                        int minAmount = Math.Min(card.Amount, rest);
                        card.Expend(minAmount);
                        rest -= minAmount;
                        //need to call remove card in display?
                        if (card.Amount == 0)
                        {
                            cardsToDelete.Add(card);
                        }
                    }
                }
                foreach (ConsumableCard card in cardsToDelete)
                {
                    dr.Cards.Remove(card);
                }
            }
            ResourcesChanged(dr);
            CurrentConsExpending = null;
        }