# ==============================
# AI College Assistant Agent
# Single File Python Program
# ==============================

class AdmissionAgent:
    def handle(self, query):
            return (
                        "\n----- Admission Agent -----\n"
                                    "Admission Information:\n"
                                                "- Admission starts from June.\n"
                                                            "- Required Documents:\n"
                                                                        "  • 10th Marksheet\n"
                                                                                    "  • 12th Marksheet\n"
                                                                                                "  • Aadhaar Card\n"
                                                                                                            "  • Passport Size Photo\n"
                                                                                                                        "  • Migration Certificate\n"
                                                                                                                                )


                                                                                                                                class ExamAgent:
                                                                                                                                    def handle(self, query):
                                                                                                                                            return (
                                                                                                                                                        "\n----- Exam Agent -----\n"
                                                                                                                                                                    "Exam Information:\n"
                                                                                                                                                                                "- Mid Semester Exam: October\n"
                                                                                                                                                                                            "- End Semester Exam: December\n"
                                                                                                                                                                                                        "- Minimum Attendance: 75%\n"
                                                                                                                                                                                                                )


                                                                                                                                                                                                                class FeesAgent:
                                                                                                                                                                                                                    def handle(self, query):
                                                                                                                                                                                                                            return (
                                                                                                                                                                                                                                        "\n----- Fees Agent -----\n"
                                                                                                                                                                                                                                                    "Fee Information:\n"
                                                                                                                                                                                                                                                                "- Admission Fee: ₹10,000\n"
                                                                                                                                                                                                                                                                            "- Semester Fee: ₹45,000\n"
                                                                                                                                                                                                                                                                                        "- Hostel Fee: ₹20,000\n"
                                                                                                                                                                                                                                                                                                )


                                                                                                                                                                                                                                                                                                class ScholarshipAgent:
                                                                                                                                                                                                                                                                                                    def handle(self, query):
                                                                                                                                                                                                                                                                                                            return (
                                                                                                                                                                                                                                                                                                                        "\n----- Scholarship Agent -----\n"
                                                                                                                                                                                                                                                                                                                                    "Scholarship Information:\n"
                                                                                                                                                                                                                                                                                                                                                "- Merit Scholarship\n"
                                                                                                                                                                                                                                                                                                                                                            "- NSP Scholarship\n"
                                                                                                                                                                                                                                                                                                                                                                        "- SC/ST Scholarship\n"
                                                                                                                                                                                                                                                                                                                                                                                    "- OBC Scholarship\n"
                                                                                                                                                                                                                                                                                                                                                                                            )


                                                                                                                                                                                                                                                                                                                                                                                            class IntentClassifier:

                                                                                                                                                                                                                                                                                                                                                                                                def classify(self, query):

                                                                                                                                                                                                                                                                                                                                                                                                        query = query.lower()

                                                                                                                                                                                                                                                                                                                                                                                                                if any(word in query for word in
                                                                                                                                                                                                                                                                                                                                                                                                                               ["admission", "admit", "apply", "document", "eligibility"]):
                                                                                                                                                                                                                                                                                                                                                                                                                                           return "admission"

                                                                                                                                                                                                                                                                                                                                                                                                                                                   elif any(word in query for word in
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ["exam", "semester", "attendance", "result"]):
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                return "exam"

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        elif any(word in query for word in
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ["fee", "fees", "payment", "cost"]):
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     return "fees"

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             elif any(word in query for word in
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ["scholarship", "nsp", "financial", "stipend"]):
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          return "scholarship"

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  else:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              return "unknown"


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              class ResponseAgent:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  def generate(self, response):
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          print("\n==============================")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  print("Response Agent")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          print("==============================")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  print(response)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          print("==============================\n")


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          def main():

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              classifier = IntentClassifier()

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  admission = AdmissionAgent()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      exam = ExamAgent()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          fees = FeesAgent()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              scholarship = ScholarshipAgent()

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  responder = ResponseAgent()

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      print("=========================================")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          print("      AI College Assistant Agent")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              print("=========================================")

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  while True:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          query = input("\nEnter your Question (exit to quit): ")

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  if query.lower() == "exit":
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              print("\nProgram Ended.")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          break

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  intent = classifier.classify(query)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          if intent == "admission":
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      response = admission.handle(query)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              elif intent == "exam":
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          response = exam.handle(query)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  elif intent == "fees":
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              response = fees.handle(query)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      elif intent == "scholarship":
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  response = scholarship.handle(query)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          else:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      response = "Sorry! I couldn't understand your query."

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              responder.generate(response)


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              if __name__ == "__main__":
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  main()