Search in sources :

Example 1 with VirtualItemStorage

use of com.soomla.store.data.VirtualItemStorage in project android-store by soomla.

the class PurchaseWithVirtualItem method buy.

/**
     * Buys the virtual item with other virtual items.
     *
     * @throws InsufficientFundsException
     */
@Override
public void buy(String payload) throws InsufficientFundsException {
    SoomlaUtils.LogDebug(TAG, "Trying to buy a " + getAssociatedItem().getName() + " with " + mAmount + " pieces of " + mTargetItemId);
    VirtualItem item = null;
    try {
        item = StoreInfo.getVirtualItem(mTargetItemId);
    } catch (VirtualItemNotFoundException e) {
        SoomlaUtils.LogError(TAG, "Target virtual item doesn't exist !");
        return;
    }
    BusProvider.getInstance().post(new ItemPurchaseStartedEvent(getAssociatedItem().getItemId()));
    VirtualItemStorage storage = StorageManager.getVirtualItemStorage(item);
    assert storage != null;
    int balance = storage.getBalance(item.getItemId());
    if (balance < mAmount) {
        throw new InsufficientFundsException(mTargetItemId);
    }
    storage.remove(item.getItemId(), mAmount);
    getAssociatedItem().give(1);
    BusProvider.getInstance().post(new ItemPurchasedEvent(getAssociatedItem().getItemId(), payload));
}
Also used : ItemPurchaseStartedEvent(com.soomla.store.events.ItemPurchaseStartedEvent) VirtualItemNotFoundException(com.soomla.store.exceptions.VirtualItemNotFoundException) VirtualItem(com.soomla.store.domain.VirtualItem) VirtualItemStorage(com.soomla.store.data.VirtualItemStorage) InsufficientFundsException(com.soomla.store.exceptions.InsufficientFundsException) ItemPurchasedEvent(com.soomla.store.events.ItemPurchasedEvent)

Aggregations

VirtualItemStorage (com.soomla.store.data.VirtualItemStorage)1 VirtualItem (com.soomla.store.domain.VirtualItem)1 ItemPurchaseStartedEvent (com.soomla.store.events.ItemPurchaseStartedEvent)1 ItemPurchasedEvent (com.soomla.store.events.ItemPurchasedEvent)1 InsufficientFundsException (com.soomla.store.exceptions.InsufficientFundsException)1 VirtualItemNotFoundException (com.soomla.store.exceptions.VirtualItemNotFoundException)1