package service.impl;

import DAO.impl.StudentSubjectDAOImpl;
import model.StudentSubject;
import java.sql.SQLException;
import java.util.List;

public class StudentSubjectServiceImpl {
    private final StudentSubjectDAOImpl dao = new StudentSubjectDAOImpl();

    public void enrollStudent(StudentSubject ss) throws SQLException {
        // Business Logic: New enrollments should always start with 0 absences
        ss.setAbsences_count(0);
        dao.save(ss);
    }

    public List<StudentSubject> getAllEnrollments() throws SQLException {
        return dao.getAll();
    }

    public void updateResult(StudentSubject ss) throws SQLException {
        // Business Validation: Ensure grade is valid before calling DB
        if (ss.getFinal_grade() != null) {
            if (ss.getFinal_grade() < 5 || ss.getFinal_grade() > 10) {
                throw new IllegalArgumentException("Grade must be between 5 and 10.");
            }
        }
        dao.update(ss);
    }

    public void removeEnrollment(Long ss_id) throws SQLException {
        dao.delete(ss_id);
    }

    public StudentSubject getEnrollment(Long ss_id) throws SQLException {
        return dao.getById(ss_id);
    }
}