From 7c6ddb32f81547305a2f6ae142367a930285f62c Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Tue, 25 Jun 2024 13:10:14 +0000 Subject: [PATCH] fix comparison of dates in consultation creator, re #3350 Merge request studip/studip!3147 --- .../vue/components/ConsultationCreator.vue | 21 ++++++++++++++++++- resources/vue/components/Datepicker.vue | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/resources/vue/components/ConsultationCreator.vue b/resources/vue/components/ConsultationCreator.vue index 73c3cb1da49..487b9b97920 100644 --- a/resources/vue/components/ConsultationCreator.vue +++ b/resources/vue/components/ConsultationCreator.vue @@ -412,6 +412,25 @@ export default { event.preventDefault(); } }, + compareDates(date0, date1, operator = '=', precision = 'day') { + const mapping = { + '<': 'isBefore', + '<=': 'isSameOrBefore', + '=': 'isSame', + '>=': 'isSameOrAfter', + '>': 'isAfter', + }; + + if (mapping[operator] === undefined) { + throw new Error(`Unsupported operator '${operator}'`); + } + + const compareDate0 = moment(date0); + const compareDate1 = moment(date1); + + const method = mapping[operator]; + return compareDate0[method](compareDate1, precision); + }, validateInputs(event) { const errors = []; @@ -419,7 +438,7 @@ export default { errors.push(this.$gettext('Die Endzeit liegt vor der Startzeit!')); } - if (this.interval > 0 && this.startDate > this.endDate) { + if (this.interval > 0 && this.compareDates(this.startDate, this.endDate, '>')) { errors.push(this.$gettext('Das Enddatum liegt vor dem Startdatum!')); } diff --git a/resources/vue/components/Datepicker.vue b/resources/vue/components/Datepicker.vue index 5c2c0f75cb7..65463a947f8 100644 --- a/resources/vue/components/Datepicker.vue +++ b/resources/vue/components/Datepicker.vue @@ -76,7 +76,7 @@ export default { return this.convertInputToNativeDate(this.value).toISOString(); } - return this.convertInputToNativeDate(this.value).toLocaleDateString(); + return this.convertInputToNativeDate(this.value).toLocaleDateString(String.locale); } }, methods: { -- GitLab