from db import db, Faculty, FacultyUniversity


class FacultyService:
    def get_all_faculties(self):
        return [faculty.to_dict() for faculty in Faculty.query.all()]

    def get_faculty(self, faculty_id):
        return Faculty.query.get(faculty_id)

    def create_faculty(self, name, university_id):
        faculty = Faculty(name=name, university_id=university_id)
        db.session.add(faculty)
        db.session.commit()
        return faculty

    def update_faculty(self, faculty_id, name):
        faculty = self.get_faculty(faculty_id)
        if faculty:
            faculty.name = name
            db.session.commit()
            return faculty.to_dict()
        return None

    def delete_faculty(self, faculty_id):
        faculty = self.get_faculty(faculty_id)
        if faculty:
            db.session.delete(Faculty.query.get(faculty_id))
            db.session.commit()
    def add_university_to_faculty(self, faculty_id, university_id):
        association = FacultyUniversity(faculty_id=faculty_id, university_id=university_id)
        db.session.add(association)
        db.session.commit()

    def remove_university_from_faculty(self, faculty_id, university_id):
        association = FacultyUniversity.query.filter_by(faculty_id=faculty_id, university_id=university_id).first()
        if association:
            db.session.delete(association)
            db.session.commit()