You can't use a CASE statement like that in a where clause. The CASE statement can only be on 1 side of the = in a WHERE, so you can't have "ListingType = 'P'" for example.
You just need to do ORs with your @RetVal variable. Something like:
SELECT *
FROM ABC
WHERE IsActive = 1
AND
(
(@RetVal = 1 AND ListingType = 'P')
OR
(@RetVal = 2 AND @thisDate BETWEEN Search AND EndDate)
...
)