package model;

import java.time.LocalDate;
import java.util.Objects;

public class StudentSubject {
    private Long ss_id;
    private Long student_id;
    private Long subject_id;
    private LocalDate enrollment_date;
    private String status;
    private Integer final_grade;
    private int absences_count;

    public StudentSubject() {}

    public StudentSubject(Long ss_id, Long student_id, Long subject_id, LocalDate enrollment_date, String status, Integer final_grade, int absences_count) {
        this.ss_id = ss_id;
        this.student_id = student_id;
        this.subject_id = subject_id;
        this.enrollment_date = enrollment_date;
        this.status = status;
        this.final_grade = final_grade;
        this.absences_count = absences_count;
    }

    public StudentSubject(Long student_id, Long subject_id, LocalDate enrollment_date, int absences_count, String status) {
        this.student_id = student_id;
        this.subject_id = subject_id;
        this.enrollment_date = enrollment_date;
        this.absences_count = absences_count;
        this.status = status;
    }

    public Long getSs_id() {
        return ss_id;
    }

    public void setSs_id(Long ss_id) {
        this.ss_id = ss_id;
    }

    public Long getStudent_id() {
        return student_id;
    }

    public void setStudent_id(Long student_id) {
        this.student_id = student_id;
    }

    public Long getSubject_id() {
        return subject_id;
    }

    public void setSubject_id(Long subject_id) {
        this.subject_id = subject_id;
    }

    public LocalDate getEnrollment_date() {
        return enrollment_date;
    }

    public void setEnrollment_date(LocalDate enrollment_date) {
        this.enrollment_date = enrollment_date;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Integer getFinal_grade() {
        return final_grade;
    }

    public void setFinal_grade(Integer final_grade) {
        this.final_grade = final_grade;
    }

    public int getAbsences_count() {
        return absences_count;
    }

    public void setAbsences_count(int absences_count) {
        this.absences_count = absences_count;
    }

    @Override
    public boolean equals(Object o) {
        if (o == null || getClass() != o.getClass()) return false;
        StudentSubject that = (StudentSubject) o;
        return absences_count == that.absences_count && Objects.equals(ss_id, that.ss_id) && Objects.equals(student_id, that.student_id) && Objects.equals(subject_id, that.subject_id) && Objects.equals(enrollment_date, that.enrollment_date) && Objects.equals(status, that.status) && Objects.equals(final_grade, that.final_grade);
    }

    @Override
    public int hashCode() {
        return Objects.hash(ss_id, student_id, subject_id, enrollment_date, status, final_grade, absences_count);
    }
}