diff --git a/backend/src/infrastructure/email/email.service.ts b/backend/src/infrastructure/email/email.service.ts index 5fca0f6..83f744f 100644 --- a/backend/src/infrastructure/email/email.service.ts +++ b/backend/src/infrastructure/email/email.service.ts @@ -96,15 +96,16 @@ export class EmailService implements IEmailService { } async sendBookingConfirmation(data: BookingConfirmationEmailData): Promise { - const startFormatted = data.startTime.toLocaleString('en-US', { - timeZone: 'UTC', - weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', - hour: '2-digit', minute: '2-digit', - }); - const endFormatted = data.endTime.toLocaleString('en-US', { - timeZone: 'UTC', - hour: '2-digit', minute: '2-digit', - }); + const formatIST = (date: Date, opts: Intl.DateTimeFormatOptions): string => + date.toLocaleString('en-IN', { timeZone: 'Asia/Kolkata', ...opts }); + + const startFormatted = + formatIST(data.startTime, { + weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', + hour: '2-digit', minute: '2-digit', + }) + ' IST'; + const endFormatted = + formatIST(data.endTime, { hour: '2-digit', minute: '2-digit' }) + ' IST'; try { await this._transporter.sendMail({ @@ -134,11 +135,14 @@ export class EmailService implements IEmailService { } async sendBookingCancelled(data: BookingCancelledEmailData): Promise { - const startFormatted = data.startTime.toLocaleString('en-US', { - timeZone: 'UTC', - weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', - hour: '2-digit', minute: '2-digit', - }); + const formatIST = (date: Date, opts: Intl.DateTimeFormatOptions): string => + date.toLocaleString('en-IN', { timeZone: 'Asia/Kolkata', ...opts }); + + const startFormatted = + formatIST(data.startTime, { + weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', + hour: '2-digit', minute: '2-digit', + }) + ' IST'; try { await this._transporter.sendMail({ diff --git a/backend/src/services/mentor/mentor-booking.service.ts b/backend/src/services/mentor/mentor-booking.service.ts index f49574c..f4ac2f3 100644 --- a/backend/src/services/mentor/mentor-booking.service.ts +++ b/backend/src/services/mentor/mentor-booking.service.ts @@ -1,4 +1,4 @@ -import { isAfter, differenceInHours, format } from 'date-fns'; +import { isAfter, differenceInHours } from 'date-fns'; import { IMentorBookingService, MentorDashboardStats } from '../../interfaces/service-interfaces/mentor/IMentorBookingService'; import { Types } from 'mongoose'; import { IMentorBookingRepository } from '../../interfaces/repository-interfaces/mentor/IMentorBookingRepository'; @@ -130,7 +130,11 @@ export class MentorBookingService implements IMentorBookingService { } const bookingId = (booking._id as { toString(): string }).toString(); - const formattedTime = format(startTime, 'MMM d, yyyy \'at\' h:mm a'); + const formattedTime = startTime.toLocaleString('en-IN', { + timeZone: 'Asia/Kolkata', + month: 'short', day: 'numeric', year: 'numeric', + hour: 'numeric', minute: '2-digit', + }) + ' IST'; // Candidate: "Your session is confirmed" void this.notificationService.create({ @@ -192,7 +196,11 @@ export class MentorBookingService implements IMentorBookingService { return; } - const formattedTime = format(booking.startTime, 'MMM d, yyyy \'at\' h:mm a'); + const formattedTime = booking.startTime.toLocaleString('en-IN', { + timeZone: 'Asia/Kolkata', + month: 'short', day: 'numeric', year: 'numeric', + hour: 'numeric', minute: '2-digit', + }) + ' IST'; const cancelledByName = cancelledBy.fullName; const sharedData = {