Model Layer
package com.example.OepAchievers.Dto;
public class LoginDto {
private String username;
private String password;
public LoginDto() {
}
public LoginDto(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//package com.example.OepAchievers.Model;
//
//import com.fasterxml.jackson.annotation.JsonIgnore;
//import jakarta.persistence.*;
//import java.math.BigDecimal;
//import java.util.HashSet;
//import java.util.List;
//import java.util.Set;
//import java.util.Objects;
//
//@Entity
//@Table(name = "courses")
//public class Course {
// @Id
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// private Long id;
//
// @Column(nullable = false)
// private String title;
//
// @Column(length = 1000)
// private String description;
//
// private BigDecimal price;
//
// @ManyToMany(fetch = FetchType.EAGER)
// @JoinColumn(name = "instructor_id")
// private Set<User> instructor ;
//
// @Enumerated(EnumType.STRING)
// private CourseStatus status = CourseStatus.DRAFT;
//
// @OneToMany(mappedBy = "course", cascade = CascadeType.ALL)
// @JsonIgnore
// private Set<Enrollment> enrollments = new HashSet<>();
//
// public enum CourseStatus {
// DRAFT, PUBLISHED, ARCHIVED
// }
//
// // Getters
// public Long getId() {
// return id;
// }
//
// public String getTitle() {
// return title;
// }
//
// public String getDescription() {
// return description;
// }
//
// public BigDecimal getPrice() {
// return price;
// }
//
// public Set<User> getInstructor() {
// return instructor;
// }
//
// public CourseStatus getStatus() {
// return status;
// }
//
// public Set<Enrollment> getEnrollments() {
// return enrollments;
// }
//
// // Setters
// public void setId(Long id) {
// this.id = id;
// }
//
// public void setTitle(String title) {
// this.title = title;
// }
//
// public void setDescription(String description) {
// this.description = description;
// }
//
// public void setPrice(BigDecimal price) {
// this.price = price;
// }
//
// public void setInstructor(Set<User> instructor) {
// this.instructor = instructor;
// }
//
// public void setStatus(CourseStatus status) {
// this.status = status;
// }
//
// public void setEnrollments(Set<Enrollment> enrollments) {
// this.enrollments = enrollments;
// }
//
//// @Override
//// public boolean equals(Object o) {
//// if (this == o) return true;
//// if (!(o instanceof Course)) return false;
//// Course course = (Course) o;
//// return Objects.equals(id, course.id);
//// }
////
//// @Override
//// public int hashCode() {
//// return Objects.hash(id);
//// }
//}
package com.example.OepAchievers.Model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
import java.util.Objects;
@Entity
@Table(name = "courses")
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String title;
@Column(length = 1000)
private String description;
private BigDecimal price;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "instructor_id")
@JsonIgnoreProperties({"coursesTeaching", "enrollments", "hibernateLazyInitializer", "handler"})
private User instructor;
@Enumerated(EnumType.STRING)
private CourseStatus status = CourseStatus.DRAFT;
@OneToMany(mappedBy = "course", cascade = CascadeType.ALL)
@JsonIgnoreProperties("course")
private Set<Enrollment> enrollments = new HashSet<>();
public enum CourseStatus {
DRAFT, PUBLISHED, ARCHIVED
}
// Constructors
public Course() {}
public Course(String title, String description, BigDecimal price, User instructor) {
this.title = title;
this.description = description;
this.price = price;
this.instructor = instructor;
}
// Getters
public Long getId() {
return id;
}
public String getTitle() {
return title;
}
public String getDescription() {
return description;
}
public BigDecimal getPrice() {
return price;
}
public User getInstructor() {
return instructor;
}
public CourseStatus getStatus() {
return status;
}
public Set<Enrollment> getEnrollments() {
return enrollments;
}
// Setters
public void setId(Long id) {
this.id = id;
}
public void setTitle(String title) {
this.title = title;
}
public void setDescription(String description) {
this.description = description;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public void setInstructor(User instructor) {
this.instructor = instructor;
}
public void setStatus(CourseStatus status) {
this.status = status;
}
public void setEnrollments(Set<Enrollment> enrollments) {
this.enrollments = enrollments;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Course)) return false;
Course course = (Course) o;
return Objects.equals(id, course.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
package com.example.OepAchievers.Model;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.List;
//@Entity
//@Table(name="security")
public class CustomUsers implements UserDetails {
private final User user;
// public final List<GrantedAuthority> authorities;
public CustomUsers(User user) {
this.user = user;
// this.authorities = List.of(new SimpleGrantedAuthority(user.getRole().name()));
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(new SimpleGrantedAuthority(user.getRole().name()));
}
@Override
public String getPassword() {
return user.getPassword();
}
@Override
public String getUsername() {
return user.getUsername();
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}// @Id
// private String username;
// private String password;
//
// public String getUsername() {
// return username;
// }
//
// public void setUsername(String username) {
// this.username = username;
// }
//
// public String getPassword() {
// return password;
// }
//
// public void setPassword(String password) {
// this.password = password;
// }
}
//package com.example.OepAchievers.Model;
//
//import com.fasterxml.jackson.annotation.JsonIgnore;
//import jakarta.persistence.*;
//import java.time.LocalDateTime;
//import java.util.Objects;
//
//@Entity
//@Table(name = "enrollments")
//public class Enrollment {
// @Id
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// private Long id;
//
//
// @ManyToOne(fetch = FetchType.LAZY)
// @JoinColumn(name = "student_id")
// private User student;
//
// @ManyToOne(fetch = FetchType.LAZY)
// @JoinColumn(name = "course_id")
// private Course course;
//
// @Column(nullable = false)
// private LocalDateTime enrollmentDate = LocalDateTime.now();
//
// @Enumerated(EnumType.STRING)
// private EnrollmentStatus status = EnrollmentStatus.ACTIVE;
//
// private Double progress = 0.0;
//
// public enum EnrollmentStatus {
// ACTIVE, COMPLETED, DROPPED
// }
//
// // Getters
// public Long getId() {
// return id;
// }
//
// public User getStudent() {
// return student;
// }
//
// public Course getCourse() {
// return course;
// }
//
// public LocalDateTime getEnrollmentDate() {
// return enrollmentDate;
// }
//
// public EnrollmentStatus getStatus() {
// return status;
// }
//
// public Double getProgress() {
// return progress;
// }
//
// // Setters
// public void setId(Long id) {
// this.id = id;
// }
//
// public void setStudent(User student) {
// this.student = student;
// }
//
// public void setCourse(Course course) {
// this.course = course;
// }
//
// public void setEnrollmentDate(LocalDateTime enrollmentDate) {
// this.enrollmentDate = enrollmentDate;
// }
//
// public void setStatus(EnrollmentStatus status) {
// this.status = status;
// }
//
// public void setProgress(Double progress) {
// this.progress = progress;
// }
//
// @Override
// public boolean equals(Object o) {
// if (this == o) return true;
// if (!(o instanceof Enrollment)) return false;
// Enrollment that = (Enrollment) o;
// return Objects.equals(id, that.id);
// }
//
// @Override
// public int hashCode() {
// return Objects.hash(id);
// }
//}
package com.example.OepAchievers.Model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import java.time.LocalDateTime;
import java.util.Objects;
@Entity
@Table(name = "enrollments")
public class Enrollment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "student_id")
@JsonIgnoreProperties({"enrollments", "coursesTeaching", "hibernateLazyInitializer", "handler"})
private User student;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "course_id")
@JsonIgnoreProperties({"enrollments", "instructor", "hibernateLazyInitializer", "handler"})
private Course course;
@Column(nullable = false)
private LocalDateTime enrollmentDate = LocalDateTime.now();
@Enumerated(EnumType.STRING)
private EnrollmentStatus status = EnrollmentStatus.ACTIVE;
private Double progress = 0.0;
public enum EnrollmentStatus {
ACTIVE, COMPLETED, DROPPED
}
// Constructors
public Enrollment() {}
public Enrollment(User student, Course course) {
this.student = student;
this.course = course;
}
// Getters
public Long getId() {
return id;
}
public User getStudent() {
return student;
}
public Course getCourse() {
return course;
}
public LocalDateTime getEnrollmentDate() {
return enrollmentDate;
}
public EnrollmentStatus getStatus() {
return status;
}
public Double getProgress() {
return progress;
}
// Setters
public void setId(Long id) {
this.id = id;
}
public void setStudent(User student) {
this.student = student;
}
public void setCourse(Course course) {
this.course = course;
}
public void setEnrollmentDate(LocalDateTime enrollmentDate) {
this.enrollmentDate = enrollmentDate;
}
public void setStatus(EnrollmentStatus status) {
this.status = status;
}
public void setProgress(Double progress) {
this.progress = progress;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Enrollment)) return false;
Enrollment that = (Enrollment) o;
return Objects.equals(id, that.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
//package com.example.OepAchievers.Model;
//
//import com.fasterxml.jackson.annotation.JsonIgnore;
//import jakarta.persistence.Embeddable;
//import java.io.Serializable;
//import java.util.Objects;
//
//@Embeddable
//public class EnrollmentId implements Serializable {
// private Long studentId;
// private String courseId;
//
// public EnrollmentId() {}
//
// public EnrollmentId(Long studentId, String courseId) {
// this.studentId = studentId;
// this.courseId = courseId;
// }
//
// // Getters
// public Long getStudentId() {
// return studentId;
// }
//
// public String getCourseId() {
// return courseId;
// }
//
// // Setters
// public void setStudentId(Long studentId) {
// this.studentId = studentId;
// }
//
// public void setCourseId(String courseId) {
// this.courseId = courseId;
// }
//
// @Override
// public boolean equals(Object o) {
// if (this == o) return true;
// if (!(o instanceof EnrollmentId)) return false;
// EnrollmentId that = (EnrollmentId) o;
// return Objects.equals(studentId, that.studentId) &&
// Objects.equals(courseId, that.courseId);
// }
//
// @Override
// public int hashCode() {
// return Objects.hash(studentId, courseId);
// }
//}
package com.example.OepAchievers.Model;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
import java.util.Objects;
@Embeddable
public class EnrollmentId implements Serializable {
private Long studentId;
private String courseId;
// Constructors
public EnrollmentId() {}
public EnrollmentId(Long studentId, String courseId) {
this.studentId = studentId;
this.courseId = courseId;
}
// Getters
public Long getStudentId() {
return studentId;
}
public String getCourseId() {
return courseId;
}
// Setters
public void setStudentId(Long studentId) {
this.studentId = studentId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof EnrollmentId)) return false;
EnrollmentId that = (EnrollmentId) o;
return Objects.equals(studentId, that.studentId) &&
Objects.equals(courseId, that.courseId);
}
@Override
public int hashCode() {
return Objects.hash(studentId, courseId);
}
}
//package com.example.OepAchievers.Model;
//
//import com.fasterxml.jackson.annotation.JsonIgnore;
//import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
//import jakarta.persistence.*;
//import java.util.HashSet;
//import java.util.Set;
//import java.util.Objects;
//
//@Entity
//@Table(name = "users")
//public class User {
// @Id
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// private Long id;
//
// @Column(nullable = false, unique = true)
// private String email;
//
// @Column(nullable = false)
// private String password;
//
// @Column(nullable = false)
// private String username;
//
// @Enumerated(EnumType.STRING)
// private Role role;
//
// private boolean active = true;
//
//
//// @OneToMany(mappedBy = "instructor")
//// @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
// private Set<Course> coursesTeaching = new HashSet<>();
//
// @OneToMany(mappedBy = "student")
// @JsonIgnore
// private Set<Enrollment> enrollments = new HashSet<>();
//
//
// public enum Role {
// STUDENT, INSTRUCTOR, ADMIN,
// }
//
// // Getters
// public Long getId() {
// return id;
// }
//
// public String getEmail() {
// return email;
// }
//
// public String getPassword() {
// return password;
// }
//
// public String getusername() {
// return username;
// }
//
// public Role getRole() {
// return role;
// }
//
// public boolean isActive() {
// return active;
// }
//
// public Set<Course> getCoursesTeaching() {
// return coursesTeaching;
// }
//
// public Set<Enrollment> getEnrollments() {
// return enrollments;
// }
//
// // Setters
// public void setId(Long id) {
// this.id = id;
// }
//
// public void setEmail(String email) {
// this.email = email;
// }
//
// public void setPassword(String password) {
// this.password = password;
// }
//
// public void setusername(String username) {
// this.username = username;
// }
//
// public void setRole(Role role) {
// this.role = role;
// }
//
// public void setActive(boolean active) {
// this.active = active;
// }
//
// public void setCoursesTeaching(Set<Course> coursesTeaching) {
// this.coursesTeaching = coursesTeaching;
// }
//
// public void setEnrollments(Set<Enrollment> enrollments) {
// this.enrollments = enrollments;
// }
//
// @Override
// public boolean equals(Object o) {
// if (this == o) return true;
// if (!(o instanceof User)) return false;
// User user = (User) o;
// return Objects.equals(id, user.id);
// }
//
// @Override
// public int hashCode() {
// return Objects.hash(id);
// }
//}
package com.example.OepAchievers.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.*;
import java.util.HashSet;
import java.util.Set;
import java.util.Objects;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String email;
private String password;
private String username;
@Enumerated(EnumType.STRING)
private Role role;
private boolean active = true;
@OneToMany(mappedBy = "instructor")
// @JsonIgnoreProperties({"instructor", "enrollments"})
private Set<Course> coursesTeaching = new HashSet<>();
@OneToMany(mappedBy = "student")
// @JsonIgnoreProperties("student")
private Set<Enrollment> enrollments = new HashSet<>();
public enum Role {
STUDENT, INSTRUCTOR, ADMIN
}
// Constructors
public User() {}
public User(String email, String password, String username, Role role) {
this.email = email;
this.password = password;
this.username = username;
this.role = role;
}
// Getters
public Long getId() {
return id;
}
public String getEmail() {
return email;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
public Role getRole() {
return role;
}
public boolean isActive() {
return active;
}
public Set<Course> getCoursesTeaching() {
return coursesTeaching;
}
public Set<Enrollment> getEnrollments() {
return enrollments;
}
// Setters
public void setId(Long id) {
this.id = id;
}
public void setEmail(String email) {
this.email = email;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public void setRole(Role role) {
this.role = role;
}
public void setActive(boolean active) {
this.active = active;
}
public void setCoursesTeaching(Set<Course> coursesTeaching) {
this.coursesTeaching = coursesTeaching;
}
public void setEnrollments(Set<Enrollment> enrollments) {
this.enrollments = enrollments;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
User user = (User) o;
return Objects.equals(id, user.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", email='" + email + '\'' +
", password='" + password + '\'' +
", username='" + username + '\'' +
", role=" + role +
", active=" + active +
", coursesTeaching=" + coursesTeaching +
", enrollments=" + enrollments +
'}';
}
}