'will' in the given sentence, indicates future tense. Further the word 'by' indicates that everyone will be done having lunch by 2:30. Thus, the answer must be in future perfect tense.
Option A is incorrect. 'has' is in the perfect tense, but it does not have a main verb which will make it grammatically incorrect.
Option B is incorrect. The phrase 'eat for' indicates a time period for which everyone will have food. This will change the meaning of the sentence and thus, is incorrect.
Option C is incorrect. 'have had' is in the future perfect tense along with the auxiliary 'will'. Thus, it indicates that everyone will be finished having lunch by 2:30. Thus, it is the correct answer.
Option D is incorrect. In 'had have', the main verb 'have' is not in its past participle form, and in the perfect form of a tense, the main verb should be in its past participle form. Thus, it is grammatically incorrect.