From cdfbad985766b710b8124bb1d9e0cb323ba50fbe Mon Sep 17 00:00:00 2001 From: JP-CC-Projects Date: Thu, 28 Mar 2024 02:59:52 -0500 Subject: [PATCH] See: https://github.com/CodersCampus/cp/issues/520 --- .../com/coderscampus/cp/domain/Checkin.java | 40 ++++++++++++++++--- .../cp/domain/CheckinListener.java | 12 ++++++ 2 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/coderscampus/cp/domain/CheckinListener.java diff --git a/src/main/java/com/coderscampus/cp/domain/Checkin.java b/src/main/java/com/coderscampus/cp/domain/Checkin.java index 959fb208..1c2381d5 100644 --- a/src/main/java/com/coderscampus/cp/domain/Checkin.java +++ b/src/main/java/com/coderscampus/cp/domain/Checkin.java @@ -2,9 +2,10 @@ import jakarta.persistence.*; +import java.math.BigInteger; +import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; - @Entity public class Checkin { @Id @@ -22,6 +23,8 @@ public class Checkin { private Instant endTime; private CodingType codingType; private Integer issueNumber; + private BigInteger timeInClassInSeconds; + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "student_id") private Student student; @@ -138,12 +141,28 @@ public void setStudent(Student student) { this.student = student; } + public Boolean getSetUp() { + return isSetUp; + } + + public void setSetUp(Boolean setUp) { + isSetUp = setUp; + } + + public BigInteger getTimeInClassInSeconds() { + return timeInClassInSeconds; + } + + public void setTimeInClassInSeconds(BigInteger timeInClassInSeconds) { + this.timeInClassInSeconds = timeInClassInSeconds; + } + // ENUMS public enum CodingType{ FOUNDATIONS, CRUD, CODE_REVIEW, DESIGN, DOCUMENTATION } public enum Role{ - FOUNDATIONS, OBSERVER, CODER, GUIDE, SCRUM_MASTER, PRODUCT_OWNER + FOUNDATIONS, OBSERVER, CODER, GUIDE, SCRUM_MASTER, PRODUCT_OWNER } @Override @@ -152,7 +171,7 @@ public String toString() { "id=" + id + ", uid='" + uid + '\'' + ", date=" + date + - ", assignment=" + nextAssignment + + ", nextAssignment=" + nextAssignment + ", blockers=" + blockers + ", blockerDescription='" + blockerDescription + '\'' + ", isSetUp=" + isSetUp + @@ -160,9 +179,18 @@ public String toString() { ", role=" + role + ", startTime=" + startTime + ", endTime=" + endTime + - ", issueNumber=" + issueNumber + ", codingType=" + codingType + - ", student=" + student + + ", issueNumber=" + issueNumber + + ", timeInClassInSeconds=" + timeInClassInSeconds + '}'; } -} + + public void calculateTimeInClass() { + if (startTime != null && endTime != null) { + long seconds = Duration.between(startTime, endTime).getSeconds(); + setTimeInClassInSeconds(BigInteger.valueOf(seconds)); + } else { + setTimeInClassInSeconds(BigInteger.ZERO); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/coderscampus/cp/domain/CheckinListener.java b/src/main/java/com/coderscampus/cp/domain/CheckinListener.java new file mode 100644 index 00000000..942ed6dd --- /dev/null +++ b/src/main/java/com/coderscampus/cp/domain/CheckinListener.java @@ -0,0 +1,12 @@ +package com.coderscampus.cp.domain; + +import jakarta.persistence.PrePersist; +import jakarta.persistence.PreUpdate; + +public class CheckinListener { + @PrePersist + @PreUpdate + public void beforeSave(Checkin checkin) { + checkin.calculateTimeInClass(); + } +} \ No newline at end of file