From 133f6935cc6e56dc4f03c341d0edaa8a0abb9665 Mon Sep 17 00:00:00 2001
From: DavePk04 <Dave.Pikop.Pokam@ulb.be>
Date: Sat, 8 Mar 2025 22:50:18 +0100
Subject: [PATCH] Fix backward availability issue: Prevent users from selecting
 end time earlier than start time

---
 .../routes/register/[[studyId]]/+page.svelte  | 33 ++++++++++++-------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/frontend/src/routes/register/[[studyId]]/+page.svelte b/frontend/src/routes/register/[[studyId]]/+page.svelte
index 171c6e78..84b646af 100644
--- a/frontend/src/routes/register/[[studyId]]/+page.svelte
+++ b/frontend/src/routes/register/[[studyId]]/+page.svelte
@@ -19,7 +19,6 @@
 	let selectedStudy: Study | undefined = $state();
 
 	let tutors = $state(data.tutors || []);
-	console.log('data:', data);
 	let isLoading = $state(false);
 	let selectedTutorEmail = $state('');
 	let is_tutor = $state(false);
@@ -116,19 +115,29 @@
 		bio = target.value;
 		remainingCharacters = MAX_BIO_LENGTH - bio.length;
 	}
+
 	function addAvailability(): void {
-		if (selectedWeekday && selectedTimeStart && selectedTimeEnd) {
-			availability.push({
-				day: selectedWeekday,
-				start: selectedTimeStart,
-				end: selectedTimeEnd
-			});
-			selectedWeekday = '';
-			selectedTimeStart = '';
-			selectedTimeEnd = '';
-		} else {
-			console.error('Failed to add availability. Make sure all fields are selected.');
+		if (!selectedWeekday || !selectedTimeStart || !selectedTimeEnd) {
+			console.error('All fields must be selected.');
+			return;
+		}
+		const startHour = parseInt(selectedTimeStart.split(':')[0]);
+		const endHour = parseInt(selectedTimeEnd.split(':')[0]);
+
+		if (startHour >= endHour) {
+			alert('End time must be later than start time.');
+			return;
 		}
+
+		availability.push({
+			day: selectedWeekday,
+			start: selectedTimeStart,
+			end: selectedTimeEnd
+		});
+
+		selectedWeekday = '';
+		selectedTimeStart = '';
+		selectedTimeEnd = '';
 	}
 
 	function removeAvailability(index: number): void {
-- 
GitLab