From 70dcd2d077d0d24c7d5c6de03a09d36580c2f08c Mon Sep 17 00:00:00 2001 From: Luciano Belotto Date: Thu, 29 Aug 2024 12:51:17 -0400 Subject: [PATCH 1/5] 2024-08-29 - Added new fields period start/end date to back-end --- .../services/reviews/ReviewPeriod.java | 24 ++++++++++++-- .../reviews/ReviewPeriodCreateDTO.java | 13 +++++++- .../common/V111__add_review_period_dates.sql | 2 ++ .../reviews/ReviewPeriodControllerTest.java | 32 ++++++++++++++++++- 4 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 server/src/main/resources/db/common/V111__add_review_period_dates.sql diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java index 254102e502..c51753c1a3 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java @@ -76,9 +76,22 @@ public class ReviewPeriod { @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") private LocalDateTime closeDate; + @Nullable + @Column(name = "period_start_date") + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + private LocalDateTime periodStartDate; + + @Nullable + @Column(name = "period_end_date") + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + private LocalDateTime periodEndDate; + public ReviewPeriod(String name, ReviewStatus reviewStatus, @Nullable UUID reviewTemplateId, @Nullable UUID selfReviewTemplateId, @Nullable LocalDateTime launchDate, - @Nullable LocalDateTime selfReviewCloseDate, @Nullable LocalDateTime closeDate) { + @Nullable LocalDateTime selfReviewCloseDate, @Nullable LocalDateTime closeDate, + @Nullable LocalDateTime periodStartDate, @Nullable LocalDateTime periodEndDate) { this.name = name; this.reviewStatus = reviewStatus; this.reviewTemplateId = reviewTemplateId; @@ -86,11 +99,13 @@ public ReviewPeriod(String name, ReviewStatus reviewStatus, @Nullable UUID revie this.launchDate = launchDate; this.selfReviewCloseDate = selfReviewCloseDate; this.closeDate = closeDate; + this.periodStartDate = periodStartDate; + this.periodEndDate = periodEndDate; } @Override public int hashCode() { - return Objects.hash(id, name, reviewStatus, reviewTemplateId, selfReviewTemplateId, launchDate, selfReviewCloseDate, closeDate); + return Objects.hash(id, name, reviewStatus, reviewTemplateId, selfReviewTemplateId, launchDate, selfReviewCloseDate, closeDate, this.periodStartDate, this.periodEndDate); } @Override @@ -103,6 +118,8 @@ public String toString() { ", launchDate=" + launchDate + ", selfReviewCloseDate=" + selfReviewCloseDate + ", closeDate=" + closeDate + + ", periodStartDate=" + periodStartDate + + ", periodEndDate=" + periodEndDate + '}'; } @@ -114,6 +131,7 @@ public boolean equals(Object o) { return Objects.equals(id, that.id) && Objects.equals(name, that.name) && Objects.equals(reviewStatus, that.reviewStatus) && Objects.equals(reviewTemplateId, that.reviewTemplateId) && Objects.equals(selfReviewTemplateId, that.selfReviewTemplateId) && Objects.equals(launchDate, that.launchDate) && Objects.equals(selfReviewCloseDate, that.selfReviewCloseDate) && - Objects.equals(closeDate, that.closeDate); + Objects.equals(closeDate, that.closeDate) && Objects.equals(periodStartDate, that.periodStartDate) && Objects.equals(periodEndDate, that.periodEndDate) + ; } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java index b0eb19d859..6b10842e33 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java @@ -49,8 +49,19 @@ public class ReviewPeriodCreateDTO { @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") private LocalDateTime closeDate; + @Nullable + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + private LocalDateTime periodStartDate; + + @Nullable + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + private LocalDateTime periodEndDate; + public ReviewPeriod convertToEntity(){ return new ReviewPeriod(this.name, this.reviewStatus, this.reviewTemplateId, - this.selfReviewTemplateId, this.launchDate, this.selfReviewCloseDate, this.closeDate); + this.selfReviewTemplateId, this.launchDate, this.selfReviewCloseDate, this.closeDate, + this.periodStartDate, this.periodEndDate); } } diff --git a/server/src/main/resources/db/common/V111__add_review_period_dates.sql b/server/src/main/resources/db/common/V111__add_review_period_dates.sql new file mode 100644 index 0000000000..2dad4776a9 --- /dev/null +++ b/server/src/main/resources/db/common/V111__add_review_period_dates.sql @@ -0,0 +1,2 @@ +ALTER TABLE review_periods ADD COLUMN period_start_date TIMESTAMP; +ALTER TABLE review_periods ADD COLUMN period_end_date TIMESTAMP; diff --git a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java index 7cecbdf621..2cb0255617 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java @@ -188,6 +188,8 @@ void testReviewPeriodCreateDTOSerialization() throws JsonProcessingException { reviewPeriodCreateDTO.setLaunchDate(LocalDateTime.now()); reviewPeriodCreateDTO.setSelfReviewCloseDate(LocalDateTime.now()); reviewPeriodCreateDTO.setCloseDate(LocalDateTime.now()); + reviewPeriodCreateDTO.setPeriodStartDate(LocalDateTime.now()); + reviewPeriodCreateDTO.setPeriodEndDate(LocalDateTime.now()); final HttpRequest request = HttpRequest. POST("/", reviewPeriodCreateDTO).basicAuth(ADMIN_ROLE, ADMIN_ROLE); @@ -212,6 +214,14 @@ void testReviewPeriodCreateDTOSerialization() throws JsonProcessingException { String expectedCloseDateFormat = objectMapper.readTree(expectedJson).get("closeDate").asText(); String actualCloseDateFormat = objectMapper.readTree(actualJson).get("closeDate").asText(); assertEquals(expectedCloseDateFormat, actualCloseDateFormat); + + String expectedPeriodStartDateFormat = objectMapper.readTree(expectedJson).get("periodStartDate").asText(); + String actualPeriodStartDateFormat = objectMapper.readTree(actualJson).get("periodStartDate").asText(); + assertEquals(expectedPeriodStartDateFormat, actualPeriodStartDateFormat); + + String expectedPeriodEndDateFormat = objectMapper.readTree(expectedJson).get("periodEndDate").asText(); + String actualPeriodEndDateFormat = objectMapper.readTree(actualJson).get("periodEndDate").asText(); + assertEquals(expectedPeriodEndDateFormat, actualPeriodEndDateFormat); } @Test @@ -222,6 +232,8 @@ void testReviewPeriodCreateDTOSerializationForbiddenWithoutPermission() throws J reviewPeriodCreateDTO.setLaunchDate(LocalDateTime.now()); reviewPeriodCreateDTO.setSelfReviewCloseDate(LocalDateTime.now()); reviewPeriodCreateDTO.setCloseDate(LocalDateTime.now()); + reviewPeriodCreateDTO.setPeriodStartDate(LocalDateTime.now()); + reviewPeriodCreateDTO.setPeriodEndDate(LocalDateTime.now()); final HttpRequest request = HttpRequest. POST("/", reviewPeriodCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); @@ -237,6 +249,8 @@ void testPOSTCreateAReviewPeriodWithTimelines() { LocalDateTime launchDate = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); LocalDateTime selfReviewCloseDate = LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS); LocalDateTime closeDate = LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodStartDate = LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodEndDate = LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS); ReviewPeriodCreateDTO reviewPeriodCreateDTO = new ReviewPeriodCreateDTO(); reviewPeriodCreateDTO.setName("reincarnation"); @@ -244,6 +258,8 @@ void testPOSTCreateAReviewPeriodWithTimelines() { reviewPeriodCreateDTO.setLaunchDate(launchDate); reviewPeriodCreateDTO.setSelfReviewCloseDate(selfReviewCloseDate); reviewPeriodCreateDTO.setCloseDate(closeDate); + reviewPeriodCreateDTO.setPeriodStartDate(periodStartDate); + reviewPeriodCreateDTO.setPeriodEndDate(periodEndDate); final HttpRequest request = HttpRequest. POST("/", reviewPeriodCreateDTO).basicAuth(ADMIN_ROLE, ADMIN_ROLE); @@ -259,6 +275,8 @@ void testPOSTCreateAReviewPeriodWithTimelines() { assertEquals(reviewPeriodCreateDTO.getLaunchDate(), body.getLaunchDate()); assertEquals(reviewPeriodCreateDTO.getSelfReviewCloseDate(), body.getSelfReviewCloseDate()); assertEquals(reviewPeriodCreateDTO.getCloseDate(), body.getCloseDate()); + assertEquals(reviewPeriodCreateDTO.getPeriodStartDate(), body.getPeriodStartDate()); + assertEquals(reviewPeriodCreateDTO.getPeriodEndDate(), body.getPeriodEndDate()); } @Test @@ -266,6 +284,8 @@ void testPOSTCreateAReviewPeriodWithTimelinesForbiddenWithoutPermission() { LocalDateTime launchDate = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); LocalDateTime selfReviewCloseDate = LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS); LocalDateTime closeDate = LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodStartDate = LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodEndDate = LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS); ReviewPeriodCreateDTO reviewPeriodCreateDTO = new ReviewPeriodCreateDTO(); reviewPeriodCreateDTO.setName("reincarnation"); @@ -273,6 +293,8 @@ void testPOSTCreateAReviewPeriodWithTimelinesForbiddenWithoutPermission() { reviewPeriodCreateDTO.setLaunchDate(launchDate); reviewPeriodCreateDTO.setSelfReviewCloseDate(selfReviewCloseDate); reviewPeriodCreateDTO.setCloseDate(closeDate); + reviewPeriodCreateDTO.setPeriodStartDate(periodStartDate); + reviewPeriodCreateDTO.setPeriodEndDate(periodEndDate); final HttpRequest request = HttpRequest. POST("/", reviewPeriodCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); @@ -511,6 +533,14 @@ void testReviewPeriodSerialization() throws JsonProcessingException { String expectedCloseDateFormat = objectMapper.readTree(expectedJson).get("closeDate").asText(); String actualCloseDateFormat = objectMapper.readTree(actualJson).get("closeDate").asText(); assertEquals(expectedCloseDateFormat, actualCloseDateFormat); + + String expectedPeriodStartDateFormat = objectMapper.readTree(expectedJson).get("periodStartDate").asText(); + String actualPeriodStartDateFormat = objectMapper.readTree(actualJson).get("periodStartDate").asText(); + assertEquals(expectedPeriodStartDateFormat, actualPeriodStartDateFormat); + + String expectedPeriodEndDateFormat = objectMapper.readTree(expectedJson).get("periodEndDate").asText(); + String actualPeriodEndDateFormat = objectMapper.readTree(actualJson).get("periodEndDate").asText(); + assertEquals(expectedPeriodEndDateFormat, actualPeriodEndDateFormat); } @Test @@ -613,4 +643,4 @@ void deleteReviewPeriodWithFeedbackRequests() { responseException.getMessage() ); } -} \ No newline at end of file +} From fb6c4fd730930ec6bf6ed31bf37705a57625ea30 Mon Sep 17 00:00:00 2001 From: Luciano Belotto Date: Thu, 29 Aug 2024 13:59:48 -0400 Subject: [PATCH 2/5] 2024-08-29 - Added new fields period start/end date to back-end --- .../checkins/services/fixture/ReviewPeriodFixture.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java index 85d3ed94a7..941284f0cc 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java @@ -11,24 +11,24 @@ public interface ReviewPeriodFixture extends RepositoryFixture { default ReviewPeriod createADefaultReviewPeriod() { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Time", ReviewStatus.OPEN, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); } default ReviewPeriod createADefaultReviewPeriod(ReviewStatus reviewStatus) { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Time", reviewStatus, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); } default ReviewPeriod createASecondaryReviewPeriod() { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Play", ReviewStatus.OPEN, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); } default ReviewPeriod createAClosedReviewPeriod() { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Closure", ReviewStatus.CLOSED, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); } } From 6e178fdde81b5df5785569181b09a3205fb698d4 Mon Sep 17 00:00:00 2001 From: Luciano Belotto Date: Thu, 29 Aug 2024 14:36:32 -0400 Subject: [PATCH 3/5] 2024-08-29 - Added new fields period start/end date to back-end --- .../services/fixture/ReviewPeriodFixture.java | 12 ++++++++---- .../services/reviews/ReviewPeriodControllerTest.java | 8 ++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java index 941284f0cc..c2f8746035 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/fixture/ReviewPeriodFixture.java @@ -11,24 +11,28 @@ public interface ReviewPeriodFixture extends RepositoryFixture { default ReviewPeriod createADefaultReviewPeriod() { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Time", ReviewStatus.OPEN, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS) + , LocalDateTime.now().minusDays(30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.MILLIS))); } default ReviewPeriod createADefaultReviewPeriod(ReviewStatus reviewStatus) { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Time", reviewStatus, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS) + , LocalDateTime.now().minusDays(30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.MILLIS))); } default ReviewPeriod createASecondaryReviewPeriod() { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Play", ReviewStatus.OPEN, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS) + , LocalDateTime.now().minusDays(30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.MILLIS))); } default ReviewPeriod createAClosedReviewPeriod() { return getReviewPeriodRepository().save(new ReviewPeriod("Period of Closure", ReviewStatus.CLOSED, null, null, LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS), - LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS))); + LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS) + , LocalDateTime.now().minusDays(30).truncatedTo(ChronoUnit.MILLIS), LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.MILLIS))); } } diff --git a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java index 2cb0255617..d770df6f90 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java @@ -249,8 +249,8 @@ void testPOSTCreateAReviewPeriodWithTimelines() { LocalDateTime launchDate = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); LocalDateTime selfReviewCloseDate = LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS); LocalDateTime closeDate = LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS); - LocalDateTime periodStartDate = LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS); - LocalDateTime periodEndDate = LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodStartDate = LocalDateTime.now().minusDays(30).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodEndDate = LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.MILLIS); ReviewPeriodCreateDTO reviewPeriodCreateDTO = new ReviewPeriodCreateDTO(); reviewPeriodCreateDTO.setName("reincarnation"); @@ -284,8 +284,8 @@ void testPOSTCreateAReviewPeriodWithTimelinesForbiddenWithoutPermission() { LocalDateTime launchDate = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS); LocalDateTime selfReviewCloseDate = LocalDateTime.now().plusDays(1).truncatedTo(ChronoUnit.MILLIS); LocalDateTime closeDate = LocalDateTime.now().plusDays(2).truncatedTo(ChronoUnit.MILLIS); - LocalDateTime periodStartDate = LocalDateTime.now().plusDays(-30).truncatedTo(ChronoUnit.MILLIS); - LocalDateTime periodEndDate = LocalDateTime.now().plusDays(-1).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodStartDate = LocalDateTime.now().minusDays(30).truncatedTo(ChronoUnit.MILLIS); + LocalDateTime periodEndDate = LocalDateTime.now().minusDays(1).truncatedTo(ChronoUnit.MILLIS); ReviewPeriodCreateDTO reviewPeriodCreateDTO = new ReviewPeriodCreateDTO(); reviewPeriodCreateDTO.setName("reincarnation"); From 9c078b87a783db9b67a794b04e37bc3443d7cc4d Mon Sep 17 00:00:00 2001 From: Luciano Belotto Date: Thu, 29 Aug 2024 16:06:00 -0400 Subject: [PATCH 4/5] 2024-08-29 - Added new fields period start/end date to front-end --- web-ui/src/components/reviews/TeamReviews.jsx | 51 +++++++++++++++++-- .../periods/ReviewPeriodStepper.stories.jsx | 2 + .../periods/ReviewPeriodStepper.test.jsx | 2 + .../reviews/periods/ReviewPeriods.jsx | 8 ++- 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/web-ui/src/components/reviews/TeamReviews.jsx b/web-ui/src/components/reviews/TeamReviews.jsx index 03529d58c5..8ebeee1aaa 100644 --- a/web-ui/src/components/reviews/TeamReviews.jsx +++ b/web-ui/src/components/reviews/TeamReviews.jsx @@ -463,6 +463,38 @@ const TeamReviews = ({ onBack, periodId }) => { updateReviewPeriodDates(newPeriod); }; + const handlePeriodStartDateChange = (val, period) => { + /* + const newDate = val?.$d; + const isoDate = newDate?.toISOString() ?? null; + const newPeriod = { ...period, closeDate: isoDate }; + + // Clear dates that are not correctly ordered. + const launchDate = new Date(period.launchDate); + const selfReviewCloseDate = new Date(period.selfReviewCloseDate); + if (launchDate >= newDate) newPeriod.launchDate = null; + if (selfReviewCloseDate >= newDate) newPeriod.selfReviewCloseDate = null; + + updateReviewPeriodDates(newPeriod); + */ + }; + + const handlePeriodEndDateChange = (val, period) => { + /* + const newDate = val?.$d; + const isoDate = newDate?.toISOString() ?? null; + const newPeriod = { ...period, closeDate: isoDate }; + + // Clear dates that are not correctly ordered. + const launchDate = new Date(period.launchDate); + const selfReviewCloseDate = new Date(period.selfReviewCloseDate); + if (launchDate >= newDate) newPeriod.launchDate = null; + if (selfReviewCloseDate >= newDate) newPeriod.selfReviewCloseDate = null; + + updateReviewPeriodDates(newPeriod); + */ + }; + const loadReviews = useCallback(async () => { let newSelfReviews = {}; let newReviews = {}; @@ -580,15 +612,16 @@ const TeamReviews = ({ onBack, periodId }) => { const validateReviewPeriod = period => { if (!period) return 'No review period was created.'; if (!period.launchDate) return 'No launch date was specified.'; - if (!period.selfReviewCloseDate) - return 'No self-review date was specified.'; + if (!period.selfReviewCloseDate) return 'No self-review date was specified.'; if (!period.closeDate) return 'No close date was specified.'; + if (!period.periodStartDate) return 'No period-start-date was specified.'; + if (!period.periodEndDate) return 'No period-end-date was specified.'; if (teamMembers.length === 0) return 'No members were added.'; const haveReviewers = teamMembers.every( member => getReviewers(member).length > 0 ); if (!haveReviewers) return 'One or more members have no reviewer.'; - return null; // no validtation errors + return null; // no validation errors }; const updateReviewPeriodStatus = async reviewStatus => { @@ -897,6 +930,18 @@ const TeamReviews = ({ onBack, periodId }) => { label="Close Date" disabled={!canUpdate} /> + handlePeriodStartDateChange(val, period)} + label="Period Start Date" + disabled={!canUpdate} + /> + handlePeriodEndDateChange(val, period)} + label="Period End Date" + disabled={!canUpdate} + /> {approvalButton()} diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx index 2c60b98d46..cb395d6c7e 100644 --- a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx +++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx @@ -25,6 +25,8 @@ const reviewPeriodStepperData = { launchDate: '2024-05-03T15:53:56.673Z', selfReviewCloseDate: '2024-05-03T15:53:56.673Z', closeDate: '2024-05-03T15:53:56.673Z', + periodStartDate: '2024-04-01T00:00:00.000Z', + periodEndDate: '2024-05-01T00:00:00.000Z', reviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57', selfReviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57' } diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx index d45c699b44..f2badd3de7 100644 --- a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx +++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx @@ -9,6 +9,8 @@ const reviewPeriod = { launchDate: '2024-05-03T15:53:56.673Z', selfReviewCloseDate: '2024-05-03T15:53:56.673Z', closeDate: '2024-05-03T15:53:56.673Z', + periodStartDate: '2024-04-01T00:00:00.000Z', + periodEndDate: '2024-05-01T00:00:00.000Z', reviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57', selfReviewTemplateId: 'd1e94b60-47c4-4945-87d1-4dc88f088e57' }; diff --git a/web-ui/src/components/reviews/periods/ReviewPeriods.jsx b/web-ui/src/components/reviews/periods/ReviewPeriods.jsx index 3ed2f22aef..2d0402169e 100644 --- a/web-ui/src/components/reviews/periods/ReviewPeriods.jsx +++ b/web-ui/src/components/reviews/periods/ReviewPeriods.jsx @@ -109,7 +109,9 @@ const ReviewPeriods = ({ onPeriodSelected, mode }) => { reviewStatus: ReviewStatus.PLANNING, launchDate: null, selfReviewCloseDate: null, - closeDate: null + closeDate: null, + periodStartDate: null, + periodEndDate: null }); const [reviewStatus, setReviewStatus] = useState(ReviewStatus.CLOSED); const [selfReviews, setSelfReviews] = useState({}); @@ -178,7 +180,9 @@ const ReviewPeriods = ({ onPeriodSelected, mode }) => { reviewStatus: ReviewStatus.OPEN, launchDate: null, selfReviewCloseDate: null, - closeDate: null + closeDate: null, + periodStartDate: null, + periodEndDate: null }); }, [ From 7428599652ce20bb8557154b0572d8b6821c51a2 Mon Sep 17 00:00:00 2001 From: Luciano Belotto Date: Thu, 29 Aug 2024 20:10:39 -0400 Subject: [PATCH 5/5] 2024-08-29 - Added new fields period start/end date to front-end --- web-ui/src/components/reviews/TeamReviews.jsx | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/web-ui/src/components/reviews/TeamReviews.jsx b/web-ui/src/components/reviews/TeamReviews.jsx index 8ebeee1aaa..1d4e976b3e 100644 --- a/web-ui/src/components/reviews/TeamReviews.jsx +++ b/web-ui/src/components/reviews/TeamReviews.jsx @@ -464,35 +464,27 @@ const TeamReviews = ({ onBack, periodId }) => { }; const handlePeriodStartDateChange = (val, period) => { - /* const newDate = val?.$d; const isoDate = newDate?.toISOString() ?? null; - const newPeriod = { ...period, closeDate: isoDate }; + const newPeriod = { ...period, periodStartDate: isoDate }; // Clear dates that are not correctly ordered. - const launchDate = new Date(period.launchDate); - const selfReviewCloseDate = new Date(period.selfReviewCloseDate); - if (launchDate >= newDate) newPeriod.launchDate = null; - if (selfReviewCloseDate >= newDate) newPeriod.selfReviewCloseDate = null; + const periodEndDate = new Date(period.periodEndDate); + if (newDate > periodEndDate) newPeriod.periodEndDate = null; updateReviewPeriodDates(newPeriod); - */ }; const handlePeriodEndDateChange = (val, period) => { - /* const newDate = val?.$d; const isoDate = newDate?.toISOString() ?? null; - const newPeriod = { ...period, closeDate: isoDate }; + const newPeriod = { ...period, periodEndDate: isoDate }; // Clear dates that are not correctly ordered. - const launchDate = new Date(period.launchDate); - const selfReviewCloseDate = new Date(period.selfReviewCloseDate); - if (launchDate >= newDate) newPeriod.launchDate = null; - if (selfReviewCloseDate >= newDate) newPeriod.selfReviewCloseDate = null; + const periodStartDate = new Date(period.periodStartDate); + if (newDate < periodStartDate) newPeriod.periodStartDate = null; updateReviewPeriodDates(newPeriod); - */ }; const loadReviews = useCallback(async () => {