date issue 10

This commit is contained in:
2025-05-19 09:28:57 +05:30
parent 169456d184
commit 40a4276b71

View File

@@ -116,6 +116,23 @@ export function AppointmentForm({
color: colorMap[staff.name] || "bg-gray-400", color: colorMap[staff.name] || "bg-gray-400",
})); }));
function parseLocalDate(dateString: string): Date {
const parts = dateString.split("-");
if (parts.length !== 3) {
return new Date();
}
const year = parseInt(parts[0] ?? "", 10);
const month = parseInt(parts[1] ?? "", 10);
const day = parseInt(parts[2] ?? "", 10);
if (isNaN(year) || isNaN(month) || isNaN(day)) {
return new Date();
}
// Create date at UTC midnight instead of local midnight
return new Date(year, month - 1, day);
}
// Get the stored data from session storage // Get the stored data from session storage
const storedDataString = sessionStorage.getItem("newAppointmentData"); const storedDataString = sessionStorage.getItem("newAppointmentData");
let parsedStoredData = null; let parsedStoredData = null;
@@ -134,7 +151,10 @@ export function AppointmentForm({
? { ? {
patientId: appointment.patientId, patientId: appointment.patientId,
title: appointment.title, title: appointment.title,
date: new Date(appointment.date), date:
typeof appointment.date === "string"
? parseLocalDate(appointment.date)
: appointment.date,
startTime: appointment.startTime || "09:00", // Default "09:00" startTime: appointment.startTime || "09:00", // Default "09:00"
endTime: appointment.endTime || "09:30", // Default "09:30" endTime: appointment.endTime || "09:30", // Default "09:30"
type: appointment.type, type: appointment.type,
@@ -148,7 +168,12 @@ export function AppointmentForm({
: parsedStoredData : parsedStoredData
? { ? {
patientId: Number(parsedStoredData.patientId), patientId: Number(parsedStoredData.patientId),
date: new Date(parsedStoredData.date), date: parsedStoredData.date
? typeof parsedStoredData.date === "string"
? parseLocalDate(parsedStoredData.date)
: new Date(parsedStoredData.date) // in case its a stringified date or timestamp
: new Date(),
title: parsedStoredData.title || "", title: parsedStoredData.title || "",
startTime: parsedStoredData.startTime, startTime: parsedStoredData.startTime,
endTime: parsedStoredData.endTime, endTime: parsedStoredData.endTime,
@@ -211,7 +236,11 @@ export function AppointmentForm({
} }
if (parsedStoredData.date) { if (parsedStoredData.date) {
form.setValue("date", new Date(parsedStoredData.date)); const parsedDate =
typeof parsedStoredData.date === "string"
? parseLocalDate(parsedStoredData.date)
: new Date(parsedStoredData.date);
form.setValue("date", parsedDate);
} }
// Clean up session storage // Clean up session storage
@@ -259,7 +288,6 @@ export function AppointmentForm({
const formattedDate = data.date.toLocaleDateString("en-CA"); const formattedDate = data.date.toLocaleDateString("en-CA");
onSubmit({ onSubmit({
...data, ...data,
title, title,
@@ -404,8 +432,12 @@ export function AppointmentForm({
<PopoverContent className="w-auto p-0" align="start"> <PopoverContent className="w-auto p-0" align="start">
<Calendar <Calendar
mode="single" mode="single"
selected={field.value ? new Date(field.value) : undefined} selected={field.value}
onSelect={field.onChange} onSelect={(date) => {
if (date) {
field.onChange(date);
}
}}
disabled={(date) => disabled={(date) =>
date < new Date(new Date().setHours(0, 0, 0, 0)) date < new Date(new Date().setHours(0, 0, 0, 0))
} }