Im working on staking contract but getting exceeds allowance error

contract address => 0x5F04B14c9AB189eeF000D6f97449d9fDB648245F
im trying to stake custom token i tried allowance and approve still get error
some examples

i get this error when using stake function

    function stake(uint256 _amount, address _recipient)
        returns (bool)

        IERC20(BAO).safeTransferFrom(msg.sender, address(this), _amount);

        Claim memory info = warmupInfo[_recipient];
        require(!info.lock, "Deposits for account are locked");

        warmupInfo[_recipient] = Claim({
            deposit: info.deposit.add(_amount),
            gons: info.gons.add(IsBAO(sBao).gonsForBalance(_amount)),
            expiry: epoch.number.add(warmupPeriod),
            lock: false

        IERC20(sBao).safeTransfer(warmupContract, _amount);
        return true;

The user must give enough allowance to the contract
Show the tx where you approve please

thanks for reply
here is the transaction

Here is the staking contract