This contract is a simple contract that let other people send eth to the holder of the contract. The sender should send minimum of 50$ in form of eths. But every time I get this error 
This is my code
If you're trying to fund your contract, you need to divide $50 by the current price of Ethereum. Let say the current price of Ethereum is $3000, you need to do $50/$3000 = 0.0167 ether. I would suggest use 0.02 ether so you have enough gas. Then you need to convert 0.02 ether to wei, which is approximately 20000000000000000 wei. You enter this amount of wei into the value as wei in Remix and click on the "fund" button again.
For conversion, see: https://eth-converter.com/
Before sending the transaction, your code is being ran virtually to calculate how much gas it will need. If this virtual run returns an error (this might be from the require function or from any another not caught error), it can't estimate the required gas.
In your case, there is two option:
I recommend you to check ethPrice and ethAmountInUsd variables. Those variables might be the cause of the error. Because decimal numbers are not supported in Solidity. You shouldn't divide to 1000000000000000000 anytime. Keep working with wei.
Edit: I just read Yongijan's answer. To add to him, this could be your solution:
uint requiredValue = (50 / getPrice()) ether require(msg.Value > requiredValue, "Not enough funding"); ether keyword simply converting the number to wei, you can also use:
uint requiredValue = (50 / getPrice()) * 1000000000000000000 require(msg.Value > requiredValue, "Not enough funding");