public void Dispose()
 {
     if (GetPayBalanceRequest != null)
     {
         GetPayBalanceRequest.GetInvocationList().ToList().ForEach(x => GetPayBalanceRequest -= (RequestEventHandler <int>)x);
     }
     if (PaymentBackRequest != null)
     {
         PaymentBackRequest.GetInvocationList().ToList().ForEach(x => PaymentBackRequest -= (RequestEventHandler <bool>)x);
     }
     if (GetCoinsRequest != null)
     {
         GetCoinsRequest.GetInvocationList().ToList().ForEach(x => GetCoinsRequest -= (RequestEventHandler <int, CoinType>)x);
     }
     if (PaymentRequest != null)
     {
         PaymentRequest.GetInvocationList().ToList().ForEach(x => PaymentRequest -= (RequestEventHandler <bool, Dictionary <CoinType, int> >)x);
     }
     if (GetDrinksQtyRequest != null)
     {
         GetDrinksQtyRequest.GetInvocationList().ToList().ForEach(x => GetDrinksQtyRequest -= (RequestEventHandler <int, Guid>)x);
     }
     if (ShippingRequest != null)
     {
         ShippingRequest.GetInvocationList().ToList().ForEach(x => ShippingRequest -= (RequestEventHandler <bool, int>)x);
     }
     if (GetDrinksPriceRequest != null)
     {
         GetDrinksPriceRequest.GetInvocationList().ToList().ForEach(x => GetDrinksPriceRequest -= (RequestEventHandler <int, Guid>)x);
     }
     if (PurchaseRequest != null)
     {
         PurchaseRequest.GetInvocationList().ToList().ForEach(x => PurchaseRequest -= (VoidEventHandler <Guid>)x);
     }
     if (ThanksMessageRequest != null)
     {
         ThanksMessageRequest.GetInvocationList().ToList().ForEach(x => ThanksMessageRequest -= (VoidEventHandler)x);
     }
     if (InsufficientMessageRequest != null)
     {
         InsufficientMessageRequest.GetInvocationList().ToList().ForEach(x => InsufficientMessageRequest -= (VoidEventHandler)x);
     }
 }
 protected int GetCoinsQty(CoinType type)
 {
     return(GetCoinsRequest?.Invoke(type) ?? 0);
 }