Skip to content

Commit 2ef114a

Browse files
authored
Merge pull request #274 from darrentfy/update-DG
Update Appendix: Effort in DG
2 parents 9f38878 + 6e614b9 commit 2ef114a

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

docs/DeveloperGuide.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -631,12 +631,30 @@ Specifically, the system had to be designed to prevent the scheduling of appoint
631631
Additionally, to maintain data integrity, the deletion of a student entity necessitated the simultaneous cancellation of all associated appointments.
632632
* In tackling these challenges, we leveraged existing components to streamline development efforts.
633633
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 mid implementation.
634+
* Another challenge we faced was designing a new `Appointment` entity from scratch. The process was challenging and required tedious class refactoring mid-implementation.
635635
Initially, we designed `Appointment` to have an attribute `DateTime` to store the date and time of the appointment.
636636
To facilitate the comparison of appointments and prevent overlaps and clashes, we soon realised there was a need for a start and end time.
637637
However, having `DateTime start` and `DateTime end` results in a duplication of date, as the appointment was bound to be on the same date.
638638
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.
639647

640648
### 8.2 Technical Challenges
641649

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

Comments
 (0)