From cd6ae123bb004e0a03c61a9e9eb7b868e0156f8c Mon Sep 17 00:00:00 2001 From: Thomas Ruoff Date: Mon, 9 Nov 2020 22:51:19 +0100 Subject: [PATCH] daysbooked in timezone Europe/Berlin --- db/booking.ts | 5 +++-- helpers/date.ts | 6 ++++++ package-lock.json | 5 +++++ package.json | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/db/booking.ts b/db/booking.ts index 8db62c9..d10b004 100644 --- a/db/booking.ts +++ b/db/booking.ts @@ -1,6 +1,6 @@ import * as mongoose from 'mongoose' import { v4 as uuidv4 } from 'uuid' -import { dateFormatBackend, getDays } from '../helpers/date' +import { dateFormatBackend, getDays, nowInTz } from '../helpers/date' import { Bill } from './bill' import { Booker } from './booker' import { BOOKING_STATUS } from './enums' @@ -89,12 +89,13 @@ BookingSchema.pre('save', function (next) { BookingSchema.static('findBookedDays', async function (): Promise { const model = this as BookingModel + const now = nowInTz() const bookedDays = await model .find( { status: { $in: [BOOKING_STATUS.REQUESTED, BOOKING_STATUS.CONFIRMED] }, // dateFormatBackend uses YYYY-MM-DD, which is startOfDay anyway - endDate: { $gt: dateFormatBackend(new Date()) }, + endDate: { $gt: dateFormatBackend(now) }, }, 'days' ) diff --git a/helpers/date.ts b/helpers/date.ts index 24f0d44..a4cccfd 100644 --- a/helpers/date.ts +++ b/helpers/date.ts @@ -1,4 +1,5 @@ import { parse, format, addDays } from 'date-fns' +import { utcToZonedTime } from 'date-fns-tz' const FRONTEND_FORMAT = 'dd.MM.yyyy' const BACKEND_FORMAT = 'yyyy-MM-dd' @@ -66,3 +67,8 @@ function dateParse(input: string, formatString: string) { export function dateParseFrontend(input: string) { return dateParse(input, FRONTEND_FORMAT) } + +export function nowInTz(timezone = 'Europe/Berlin') { + const now = new Date() + return utcToZonedTime(now, timezone) +} diff --git a/package-lock.json b/package-lock.json index 1a9f2d7..9502280 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4478,6 +4478,11 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" }, + "date-fns-tz": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.0.12.tgz", + "integrity": "sha512-Ca+9pjGkU90XDHnclfSjz9o7g/ZqyYyYI0aCYmbf65P75oy8gktuaRslO3UPXl3ADgAnF9/KCykQkpU3/xvtWQ==" + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", diff --git a/package.json b/package.json index 0aba850..bd18ac4 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "date-fns": "^2.16.1", + "date-fns-tz": "^1.0.12", "ics": "^2.26.1", "mongoose": "^5.10.13", "next": "^10.0.1",