OneCompiler

Model Layer

531

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 +
            '}';
}

}