Skip to content

Commit 939be7c

Browse files
committed
initial date scheduled back to datetime, misc date bug fixes
1 parent fff9eb4 commit 939be7c

14 files changed

Lines changed: 30 additions & 33 deletions

File tree

src/backend/src/prisma/migrations/20260228000000_change_date_only_fields_to_db_date/migration.sql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ ALTER TABLE "Sponsor" ALTER COLUMN "joinDate" SET DATA TYPE date;
1111
ALTER TABLE "Sponsor_Task" ALTER COLUMN "dueDate" SET DATA TYPE date;
1212
ALTER TABLE "Sponsor_Task" ALTER COLUMN "notifyDate" SET DATA TYPE date;
1313
ALTER TABLE "Availability" ALTER COLUMN "dateSet" SET DATA TYPE date;
14-
ALTER TABLE "Event" ALTER COLUMN "initialDateScheduled" SET DATA TYPE date;
1514
ALTER TABLE "Milestone" ALTER COLUMN "dateOfEvent" SET DATA TYPE date;
1615
ALTER TABLE "Graph" ALTER COLUMN "startDate" SET DATA TYPE date;
1716
ALTER TABLE "Graph" ALTER COLUMN "endDate" SET DATA TYPE date;

src/backend/src/prisma/schema.prisma

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ model Vendor {
779779
organizationId String
780780
organization Organization @relation(fields: [organizationId], references: [organizationId])
781781
username String?
782-
password String? // password is encrypted
782+
password String? // password is encrypted
783783
discountCode String?
784784
twoFactorContacts User[] @relation(name: "twoFactorContactVendors")
785785
notes String?
@@ -1088,9 +1088,9 @@ model Event {
10881088
shops Shop[]
10891089
machinery Machinery[]
10901090
workPackages Work_Package[]
1091-
documents Document[]
1091+
documents Document[]
10921092
status Event_Status
1093-
initialDateScheduled DateTime? @db.Date
1093+
initialDateScheduled DateTime?
10941094
questionDocumentLink String?
10951095
description String?
10961096
notificationSlackThreads Message_Info[]

src/backend/src/utils/slack.utils.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ export const sendEventScheduledSlackNotif = async (threads: SlackMessageThread[]
437437
const drName = event.title + (wpNames ? ` (${wpNames})` : '');
438438

439439
// Get the first scheduled time
440+
// Fine as temporary fix because only DRs with single slots are sending notifications
440441
const [firstScheduledTime] = event.scheduledTimes;
441442
if (!firstScheduledTime) {
442443
throw new HttpException(400, 'Event has no scheduled times');

src/frontend/src/apis/transformers/calendar.transformer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const filterEventTransformer = (event: Event): Event => {
1616
}
1717
return {
1818
...event,
19+
initialDateScheduled: event.initialDateScheduled ? new Date(event.initialDateScheduled) : undefined,
1920
dateCreated: new Date(event.dateCreated),
2021
scheduledTimes: event.scheduledTimes.map((schedule) => ({
2122
...schedule,

src/frontend/src/apis/transformers/change-requests.transformers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import {
77
ChangeRequest,
8+
dbDateToLocalDate,
89
ImplementedChange,
910
ProjectProposedChanges,
1011
StandardChangeRequest,
@@ -23,7 +24,7 @@ const transformWorkPackageProposedChanges = (
2324
): WorkPackageProposedChanges => {
2425
return {
2526
...workPackageProposedChanges,
26-
startDate: new Date(workPackageProposedChanges.startDate)
27+
startDate: dbDateToLocalDate(new Date(workPackageProposedChanges.startDate))
2728
};
2829
};
2930

@@ -43,7 +44,7 @@ export const changeRequestTransformer = (changeRequest: ChangeRequest | Standard
4344
dateImplemented: changeRequest.dateImplemented ? new Date(changeRequest.dateImplemented) : changeRequest.dateImplemented
4445
};
4546
if (data.startDate) {
46-
data.startDate = new Date(data.startDate);
47+
data.startDate = dbDateToLocalDate(new Date(data.startDate));
4748
}
4849
const output = data;
4950

src/frontend/src/apis/transformers/projects.transformers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55

66
import {
7+
dbDateToLocalDate,
78
DescriptionBullet,
89
Project,
910
ProjectOverview,
@@ -40,8 +41,8 @@ export const projectTransformer = (project: Project): Project => {
4041
return {
4142
...project,
4243
dateCreated: new Date(project.dateCreated),
43-
startDate: project.startDate ? new Date(project.startDate) : undefined,
44-
endDate: project.endDate ? new Date(project.endDate) : undefined,
44+
startDate: project.startDate ? dbDateToLocalDate(new Date(project.startDate)) : undefined,
45+
endDate: project.endDate ? dbDateToLocalDate(new Date(project.endDate)) : undefined,
4546
workPackages: project.workPackages.map(workPackageTransformer),
4647
descriptionBullets: project.descriptionBullets.map(descriptionBulletTransformer),
4748
changes: project.changes.map(implementedChangeTransformer),

src/frontend/src/apis/transformers/tasks.transformers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Task } from 'shared';
1+
import { dbDateToLocalDate, Task } from 'shared';
22

33
/**
44
* Transforms a task to ensure deep field transformation of date objects.
@@ -11,7 +11,7 @@ export const taskTransformer = (task: Task): Task => {
1111
...task,
1212
dateCreated: new Date(task.dateCreated),
1313
dateDeleted: task.dateDeleted ? new Date(task.dateDeleted) : undefined,
14-
deadline: task.deadline ? new Date(task.deadline) : undefined,
15-
startDate: task.startDate ? new Date(task.startDate) : undefined
14+
deadline: task.deadline ? dbDateToLocalDate(new Date(task.deadline)) : undefined,
15+
startDate: task.startDate ? dbDateToLocalDate(new Date(task.startDate)) : undefined
1616
};
1717
};

src/frontend/src/apis/transformers/work-packages.transformers.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* See the LICENSE file in the repository root folder for details.
44
*/
55

6-
import { RetrospectiveWorkPackage, WorkPackage, WorkPackagePreview } from 'shared';
6+
import { dbDateToLocalDate, RetrospectiveWorkPackage, WorkPackage, WorkPackagePreview } from 'shared';
77
import { implementedChangeTransformer } from './change-requests.transformers';
88
import { descriptionBulletTransformer } from './projects.transformers';
99
import { eventPreviewTransformer } from './calendar.transformer';
@@ -18,8 +18,8 @@ export const workPackageTransformer = (workPackage: WorkPackage): WorkPackage =>
1818
return {
1919
...workPackage,
2020
dateCreated: new Date(workPackage.dateCreated),
21-
startDate: new Date(workPackage.startDate),
22-
endDate: new Date(workPackage.endDate),
21+
startDate: dbDateToLocalDate(new Date(workPackage.startDate)),
22+
endDate: dbDateToLocalDate(new Date(workPackage.endDate)),
2323
descriptionBullets: workPackage.descriptionBullets.map(descriptionBulletTransformer),
2424
changes: workPackage.changes.map(implementedChangeTransformer),
2525
events: workPackage.events.map(eventPreviewTransformer)
@@ -30,14 +30,14 @@ export const retrospectiveWorkPackageTransformer = (workPackage: RetrospectiveWo
3030
return {
3131
...workPackageTransformer(workPackage),
3232
originalDuration: workPackage.originalDuration,
33-
originalStartDate: new Date(workPackage.originalStartDate)
33+
originalStartDate: dbDateToLocalDate(new Date(workPackage.originalStartDate))
3434
};
3535
};
3636

3737
export const workPackagePreviewTransformer = (workPackage: WorkPackagePreview): WorkPackagePreview => {
3838
return {
3939
...workPackage,
40-
startDate: new Date(workPackage.startDate),
41-
endDate: new Date(workPackage.endDate)
40+
startDate: dbDateToLocalDate(new Date(workPackage.startDate)),
41+
endDate: dbDateToLocalDate(new Date(workPackage.endDate))
4242
};
4343
};

src/frontend/src/pages/CalendarPage/AvailabilityScheduleView.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ const AvailabilityScheduleView: React.FC<AvailabilityScheduleViewProps> = ({
3131
const totalUsers = usersToAvailabilities.size;
3232
const [selectedTimeslot, setSelectedTimeslot] = useState<number | null>(null);
3333
// Use displayDate if provided, otherwise fall back to event's initial date.
34-
// initialDateScheduled is @db.Date (midnight UTC) — normalize to local calendar date.
35-
const initialDate =
36-
displayDate || (event.initialDateScheduled ? dbDateToLocalDate(event.initialDateScheduled) : new Date());
34+
const initialDate = displayDate || (event.initialDateScheduled ?? new Date());
3735
const potentialDays = getNextSevenDays(initialDate);
3836

3937
// Handle hover - updates the sidebar with available/unavailable users and slot info

src/frontend/src/pages/CalendarPage/CalendarWeekView.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,14 +203,12 @@ const CalendarWeekView: React.FC<CalendarWeekViewProps> = ({
203203
);
204204

205205
// Build per-day all-day event lists
206-
// Unscheduled design reviews have startTime from @db.Date (midnight UTC) — use UTC comparison.
207-
// Scheduled all-day events use local time range comparison for multi-day spans.
208206
const allDayEventsByDay: EventInstance[][] = weekDays.map((day) =>
209207
allDayEvents.filter((e) => {
210208
const start = new Date(e.startTime);
211209
const end = new Date(e.endTime);
212210
if (start.getTime() === end.getTime()) {
213-
// Single-point event (e.g., unscheduled design review from @db.Date) — compare UTC date
211+
// Single-point event (e.g., unscheduled design review or all day event) — compare UTC date
214212
return (
215213
start.getUTCFullYear() === day.getFullYear() &&
216214
start.getUTCMonth() === day.getMonth() &&

0 commit comments

Comments
 (0)