You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/DeveloperGuide.md
+20-2Lines changed: 20 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -631,12 +631,30 @@ Specifically, the system had to be designed to prevent the scheduling of appoint
631
631
Additionally, to maintain data integrity, the deletion of a student entity necessitated the simultaneous cancellation of all associated appointments.
632
632
* In tackling these challenges, we leveraged existing components to streamline development efforts.
633
633
Recognising the `Person` entity in AB3, we opted to adapt the `Person` entity and repurpose to `Student` entity within WellNUS.
634
-
* Another challenge we faced was designing a new `Appointment` entity from scratch. The process was challenging and required tedious class refactoring midimplementation.
634
+
* Another challenge we faced was designing a new `Appointment` entity from scratch. The process was challenging and required tedious class refactoring mid-implementation.
635
635
Initially, we designed `Appointment` to have an attribute `DateTime` to store the date and time of the appointment.
636
636
To facilitate the comparison of appointments and prevent overlaps and clashes, we soon realised there was a need for a start and end time.
637
637
However, having `DateTime start` and `DateTime end` results in a duplication of date, as the appointment was bound to be on the same date.
638
638
Hence, we refactored `DateTime` into `Date` and `Time` to allow for 3 attributes: `Date appointmentDate`, `Time startTime`, `Time endTime`
639
+
* For the UI of WellNUS, we also faced challenges handling `Appointment` and `Note`, specifically, how these
640
+
entities are to be displayed to the user. For `Appointment`, we settled on having an `Appointment` list similar to the
641
+
`Person` list in AB3, and simultaneously display 2 lists for `Student` and `Appointment`.
642
+
* On the other hand, while we initially displayed `Note` under its corresponding `Student`, similar to `Remark` in
643
+
AB3, we eventually decided against it. Our `Note` was designed for counsellors to make consultation notes in addition
644
+
to remarks for students, and is usually much longer than a typical `Remark` in AB3, this led to each
645
+
row in the `Student` list becoming much more cluttered and wordy. Eventually, we created a separate column that
646
+
specifically displays a single `Note` of the user's choice.
639
647
640
648
### 8.2 Technical Challenges
641
649
642
-
650
+
* Since WellNUS manages both `Student` and `Appointment` entities, one of the challenges we faced was refactoring our
651
+
`Storage` component to handle both entities simultaneously. While saving `Student` and `Appointment` data to the storage
652
+
file was much easier since we could reference AB3's `Storage` component, loading data from file proved to be a much
653
+
larger challenge.
654
+
* The loading in AB3 simply checks if there are any duplicate `Persons`, on the other hand, having
655
+
an `Appointment` entity meant that, we had to perform checks for duplicate `Appointments`, overlapping `Appointments`
656
+
and also whether the `Student` provided in the `Appointment` exists in the given WellNUS data file.
657
+
* In addition, because we decided to refactor `Person` in AB3 into `Student`, the initial refactoring for `Person` was
658
+
tedious and proved to be a challenge. Removing redundant fields like `Email` and `Tags` and adding fields like `RiskLevel`
659
+
and `Note` meant that a large portion of the AB3 had to be refactored, since the majority of the code in AB3 involved
660
+
the `Person` entity, including tests, sample data and UI.
0 commit comments