package classes;

import jakarta.persistence.*;

import java.time.LocalDateTime;
import java.util.Objects;

@Entity
@Table(name = "Kursanmeldung")
public class Enrollment
{
    @Id
    @Column(name = "ID")
    private int id;

    @ManyToOne
    @JoinColumn(name = "Matrikelnummer")
    Student student;

    @ManyToOne
    @JoinColumn(name = "Kursnummer")
    Course course;

    @Column(name = "Datum der Anmeldung")
    private LocalDateTime enrollmentDate;

    @Column(name = "Note")
    private double grade;

    public Enrollment()
    {

    }

    public Enrollment(Student student, Course course, LocalDateTime enrollmentDate)
    {
        this.student = student;
        this.course = course;
        this.enrollmentDate = enrollmentDate;
    }

    @Override
    public boolean equals(Object o)
    {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Enrollment that = (Enrollment) o;
        return student == that.student && course == that.course;
    }

    @Override
    public int hashCode()
    {
        return Objects.hash(student, course);
    }

    public Student getStudent()
    {
        return student;
    }

    public void setStudent(Student student)
    {
        this.student = student;
    }

    public Course getCourse()
    {
        return course;
    }

    public void setCourse(Course course)
    {
        this.course = course;
    }

    public LocalDateTime getEnrollmentDate()
    {
        return enrollmentDate;
    }

    public void setEnrollmentDate(LocalDateTime enrollmentDate)
    {
        this.enrollmentDate = enrollmentDate;
    }

    public double getGrade()
    {
        return grade;
    }

    public void setGrade(double grade)
    {
        this.grade = grade;
    }
}