contract AnAurumDynamicsA2 is ERC20, PusherRole{
    
    string public constant name = 'AADC Collateralized Convertible Bonds Aurum A2';
    string public constant symbol = 'AADA2';
    uint8 public constant decimals = 18;
    uint constant _supply = 120000 * 10**18;

    /**
     * @dev Price in USD for one token in 10 to the power 18 part
     * so, 1 USD = 10^18
     */
    uint256 public tokenPrice;

    /**
     * @dev Constructor that gives msg.sender all of existing tokens.
     */
    constructor() public {
        _mint(msg.sender, _supply);
    }
    
    event TokenPriceUpdated(uint256 indexed _price);
    
    /**
     * @dev Update token price only by Pusher role.
     * @param _price new price to be set
     */
    function updateTokenPrice(uint256 _price) external onlyPusher{
        tokenPrice = _price;
        emit TokenPriceUpdated(_price);
    }
    
    /**
     * @dev Price in USD for token holded by an account in 10 to the power 18 part
     * @param account to check the equivalent USD value
     * @return uint256 equivalent USD value of token in 10 to the power 18 part
     */
    function getTokenPrice(address account) public view returns (uint256) {
        return balanceOf(account).mul(tokenPrice).div(10**18);
    }
    
}
function updateTokenPrice(uint256 _price) external onlyPusher{
    tokenPrice = _price;
    emit TokenPriceUpdated(_price);
}

/**
 * @dev Update token price only by Pusher role.
 * @param _price new price to be set
 */