public ItemRackState UpdateItemSelectionState(ItemRack inRack, CashDeal inCredits, CreditPool inChangesPool) { if (inRack.State == ItemRackState.RackNotExist) return inRack.State; if (inRack.Count == 0) return inRack.State = ItemRackState.Soldout; var amount = inCredits.ChangedAount; if (inRack.Item.Price > amount) { return inRack.State = ItemRackState.CanNotPurchase; } if (inChangesPool.TotalAmount() != amount-inRack.Item.Price) { return inRack.State = ItemRackState.MissingChange; } return inRack.State = ItemRackState.CanPurchase; }