'How to send ERC20 token to smart contract balance?

I'm trying to build a smart contract and inherit some functions to swap ERC20 tokens,

Here are my questions?

Question A: Is it possible to transfer ERC20 token to smart contract balance?, Please provide an example, i.e. We can create a function to send ETH to smart contract

function contribute() external payable {}

//It will allow us to send ETH to smart contract balance,but how to send,for example, "BAND" token
//to smart contract balance?

Question B: If A is possible, how to get contract's token balance? i.e. We can get the contract ETH balance from this function:

// Get ETH balance
function getBalance() external view returns(uint) {
    return address(this).balance;    
}

// How to return contract's BAND balance, if A is possible ...

Question C:

If "A" is possible, How to make a swap to BAND/ETH liquidity pool, using Uniswap or Sushiswap API, Is it better to handle that process on server side proccesses using NodeJS, or implement it in solidity?


Full smart contract code:

pragma solidity ^0.5.11; 

contract SwapTest {
    address public manager;
    
    constructor() public {
        manager = msg.sender;
    }
    
    modifier OnlyManager() {
        require(msg.sender == manager);
        _;
    }
    
    // Add funds to contract
    function contribute() external payable {}
    
    
    // Get ETH balance
    function getBalance() external view returns(uint) {
        return address(this).balance;    
    } 
    
    // Send provided amount of WEI to recipient
    function sendEther (address payable recipient, uint weiAmount) external OnlyManager{
        recipient.transfer(weiAmount);    
    }
    
    // Send contract balance to recipient
    function withdrawBalance (address payable recipient) external OnlyManager{
        recipient.transfer(address(this).balance);
    }
}

Looking forward to hearing back from you guys, Thanks in advance.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source