Well, conceptually, you should not input usdcAmount
from the outside, but rather, calculate that amount internally in your function, by calling the pool contract's getAmountsOut function.
For example:
uint256[] memory amounts = IUniswapV2Router02(POOL).getAmountsOut(daiAmount, [DAI, USDC]);
assert(daiAmount == amounts[0]);
uint256 usdcAmount = amounts[1];
Or simply:
uint256 usdcAmount = IUniswapV2Router02(POOL).getAmountsOut(daiAmount, [DAI, USDC])[1];
So you need to import the IUniswapV2Router02 interface, and hard-code the address of that pool contract just as you do with the other hard-coded addresses.