Exemple #1
0
        public bool Withdraw(IReadOnlyCashTransaction cashTransaction)
        {
            bool isValid = true;

            foreach (var key in _billInventory.Keys)
            {
                isValid = isValid && (_billInventory[key] >= cashTransaction.BillCount(key));
                if (isValid == false)
                {
                    break;
                }
            }
            // Only set the inventory if the withdraw can happen.
            if (isValid == true)
            {
                foreach (var bill in UnitedStatesTender.GetAllDefinedTenders())
                {
                    if (_billInventory.ContainsKey(bill))
                    {
                        _billInventory[bill] = _billInventory[bill] - cashTransaction.BillCount(bill);
                    }
                }
            }
            return(isValid);
        }
 public static WithdrawalResult CreateFailureResult(string failureReason, IReadOnlyCashTransaction transactionDetails)
 {
     if (string.IsNullOrWhiteSpace(failureReason))
     {
         throw new ArgumentException("Cannont be blank or empty", nameof(failureReason));
     }
     return(new WithdrawalResult(false, failureReason, transactionDetails));
 }
Exemple #3
0
 public void ResetInventory(IReadOnlyCashTransaction restock)
 {
     foreach (var key in UnitedStatesTender.GetAllDefinedTenders())
     {
         if (_billInventory.ContainsKey(key))
         {
             _billInventory[key] = restock.BillCount(key);
         }
     }
 }
        protected void DisplayBalance(IReadOnlyCashTransaction balance)
        {
            Console.WriteLine("Machine Balance:");
            var ordered = UnitedStatesTender.GetAllDefinedTenders().OrderByDescending(tender => tender.Value);

            foreach (var bill in ordered)
            {
                Console.WriteLine($"${bill.Value} - {balance.BillCount(bill)}");
            }
        }
 public static WithdrawalResult CreateSuccessResult(IReadOnlyCashTransaction transactionDetails)
 {
     return(new WithdrawalResult(true, string.Empty, transactionDetails));
 }
 private WithdrawalResult(bool isSuccess, string failureReason, IReadOnlyCashTransaction transactionDetails)
 {
     _isSuccess     = isSuccess;
     _failureReason = failureReason;
     _details       = transactionDetails;
 }
Exemple #7
0
 public void Restock(IReadOnlyCashTransaction restock)
 {
     _atmInventory.ResetInventory(restock);
 }