diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/FitnessAdapter.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/FitnessAdapter.kt index f97d9f07..7720d3e1 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/FitnessAdapter.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/adapters/FitnessAdapter.kt @@ -30,7 +30,7 @@ import com.pennapps.labs.pennmobile.classes.FitnessRoom import com.pennapps.labs.pennmobile.classes.FitnessRoomUsage import com.pennapps.labs.pennmobile.classes.RoundedBarChartRenderer import java.time.LocalDateTime -import java.time.ZoneId +import java.time.LocalTime import java.time.ZonedDateTime import java.time.format.DateTimeFormatter @@ -225,11 +225,20 @@ class FitnessAdapter(private val fitnessRooms: List) : holder.roomView.text = room.roomName // check if the room is currently open - val currentTime = ZonedDateTime.now() - val startTime = ZonedDateTime.parse(room.openTime) - val endTime = ZonedDateTime.parse(room.closeTime) + // NOT time zone safe + val currentTime = LocalTime.now() - val isOpen = currentTime.isAfter(startTime) and currentTime.isBefore(endTime) + // Sunday -> 0, Monday -> 1, etc. + val dayOfWeek = ZonedDateTime.now().dayOfWeek.value; + + // the open and close time lists start with monday + val openTimeString = room.openTimeList?.get((dayOfWeek + 6) % 7) + val closeTimeString = room.closeTimeList?.get((dayOfWeek + 6) % 7) + + val openTime = LocalTime.parse(openTimeString) + val closeTime = LocalTime.parse(closeTimeString) + + val isOpen = currentTime.isAfter(openTime) and currentTime.isBefore(closeTime) if (isOpen) { holder.statusView.setText(R.string.fitness_room_open) holder.statusView.background = ContextCompat.getDrawable(mContext, R.drawable.label_green) @@ -238,14 +247,9 @@ class FitnessAdapter(private val fitnessRooms: List) : holder.statusView.background = ContextCompat.getDrawable(mContext, R.drawable.label_red) } - // convert time zone to display - val zid = ZoneId.systemDefault() - val localStart = startTime.withZoneSameInstant(zid) - val localEnd = endTime.withZoneSameLocal(zid) - // format and assign the times val timeFormatter = DateTimeFormatter.ofPattern("hh:mm a") - val hours = "${localStart.format(timeFormatter)} - ${localEnd.format(timeFormatter)}" + val hours = "${openTime.format(timeFormatter)} - ${closeTime.format(timeFormatter)}" holder.hoursView.text = hours // make progress bar invisible diff --git a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/FitnessRoom.kt b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/FitnessRoom.kt index 6883392a..7f7bcadd 100644 --- a/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/FitnessRoom.kt +++ b/PennMobile/src/main/java/com/pennapps/labs/pennmobile/classes/FitnessRoom.kt @@ -26,11 +26,14 @@ class FitnessRoom { @SerializedName("open") @Expose - var openTime: String? = null + var openTimeList: List? = null @SerializedName("close") @Expose - var closeTime: String? = null + var closeTimeList: List? = null + + val openTime: String = "2023-09-15T16:52:00-04:00" + val closeTime: String = "2023-09-15T16:52:00-04:00" val imageURL = "https://s3.us-east-2.amazonaws.com/labs.api/dining/1920-commons.jpg" } \ No newline at end of file