/// <summary> /// продажа товара /// </summary> /// <param name="sellItem"></param> /// <param name="customer"></param> /// <returns></returns> public virtual bool SellTheItem(GoodsItem sellItem, Customer customer) { if (ChechGoodsIsEnough(sellItem)) { if (CheckIfEnoughMoney(sellItem,DBalance)) { if (DoesHaveEnoughChange(sellItem, DBalance)) { return _SellTheItem(sellItem, customer); } else { CancelOrder(customer); DoesNotHaveEnoughChange(); return false; } } else { //CancelOrder(customer); DoesNotHaveEnoughMoney(); return false; } } else { CancelOrder(customer); DoesNotHaveEnoughGoods(); return false; } }
/// <summary> /// отмена заказа /// </summary> /// <param name="customer"></param> /// <returns></returns> public virtual bool CancelOrder(Customer customer) { List<Coin> change = CountChange(null, DBalance); if (customer.GetCoins(change)) { Wallet.RemoveItems(a => change.Contains(a)); DBalance = 0; return true; } return false; }
/// <summary> /// продаем товар /// </summary> /// <param name="sellItem"></param> /// <param name="customer"></param> /// <returns></returns> private bool _SellTheItem(GoodsItem sellItem, Customer customer) { List<Coin> change; if (customer.GetTheGood(sellItem)) { GoodsStorage.RemoveItems(a => a == sellItem); change = CountChange(sellItem, DBalance); } else { change = CountChange(null, DBalance); } if (customer.GetCoins(change)) { Wallet.RemoveItems(a => change.Contains(a)); DBalance = 0; NewMessage("Thank you!"); return true; } return false; }
/// <summary> /// Выдаем товар /// </summary> /// <param name="goodItem"></param> /// <param name="customer"></param> public virtual void TakeTheGood(GoodsItem goodItem,Customer customer) { if (customer.GetTheGood(goodItem)) { GoodsStorage.RemoveItems(a => a.Equals(goodItem)); DBalance = 0; } }