From 9df93f1b5119b9dbf937eb00792d98f54c7b6c90 Mon Sep 17 00:00:00 2001
From: Ger Teck <111064611+gerteck@users.noreply.github.com>
Date: Sat, 13 Apr 2024 02:45:22 +0800
Subject: [PATCH 1/7] Fix Bug
Added missing whitespace that causes copied message to fail.
---
src/main/java/scrolls/elder/logic/commands/AddCommand.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/scrolls/elder/logic/commands/AddCommand.java b/src/main/java/scrolls/elder/logic/commands/AddCommand.java
index 68b7b79027e..d3ce0cb147c 100644
--- a/src/main/java/scrolls/elder/logic/commands/AddCommand.java
+++ b/src/main/java/scrolls/elder/logic/commands/AddCommand.java
@@ -23,14 +23,14 @@ public class AddCommand extends Command {
public static final String COMMAND_WORD = "add";
public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. "
- + "\n Parameters: "
+ + "\nParameters: "
+ PREFIX_NAME + "NAME " + PREFIX_ROLE + "{VOLUNTEER or BEFRIENDEE} "
+ PREFIX_PHONE + "PHONE " + PREFIX_EMAIL + "EMAIL "
+ PREFIX_ADDRESS + "ADDRESS " + "[" + PREFIX_TAG + "TAG]...\n"
+ "Example: " + COMMAND_WORD + " "
+ PREFIX_NAME + "John Doe " + PREFIX_ROLE + "volunteer " + PREFIX_PHONE + "98765432 "
+ PREFIX_EMAIL + "johnd@example.com " + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 "
- + PREFIX_TAG + "experienced" + PREFIX_TAG + "student";
+ + PREFIX_TAG + "experienced " + PREFIX_TAG + "student ";
public static final String MESSAGE_SUCCESS = "New person added: %1$s";
public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book";
From 7e7b60c559190c2083639bb430ccdbd9cda4a177 Mon Sep 17 00:00:00 2001
From: Ger Teck <111064611+gerteck@users.noreply.github.com>
Date: Sat, 13 Apr 2024 03:14:06 +0800
Subject: [PATCH 2/7] Added Use Cases
Added use cases, updated glossary
to match UG and added a planned
enhancement
---
docs/DeveloperGuide.md | 144 ++++++++++++++++++-----------------------
1 file changed, 64 insertions(+), 80 deletions(-)
diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md
index 975118940fb..c342b32a02f 100644
--- a/docs/DeveloperGuide.md
+++ b/docs/DeveloperGuide.md
@@ -492,7 +492,7 @@ _{more aspects and alternatives to be added}_
--------------------------------------------------------------------------------------------------------------------
-## **Appendix: Requirements**
+## **Appendix A: Requirements**
### Product scope
@@ -566,20 +566,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
1. User requests to list all contacts
2. Elder Scrolls shows a list of all contacts
-3. User requests to delete a specific contact using its unique ID (UID)
-4. Elder Scrolls deletes the contact based on its UID
+3. User requests to delete a specific contact using its list index.
+4. Elder Scrolls deletes the contact based on its list index.
Use case ends.
**Extensions**
-* 2a. The list is empty.
-
- * 2a1. Elder Scrolls shows an error message.
-
- Use case ends.
-
-* 3a. The given UID is invalid.
+* 3a. The given list index is invalid.
* 3a1. Elder Scrolls shows an error message.
@@ -600,113 +594,83 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
Use case ends.
-**Extensions**
-
-* 2a. The list is empty.
-
- * 2a1. Elder Scrolls shows an error message.
-
- Use case ends.
-
-**Use case: UC04 - List all volunteer contacts**
+**Use case: UC04 - Pair a volunteer and befriendee**
**MSS**
-1. User requests to list all volunteer contacts
-2. Elder Scrolls shows a list of all volunteer contacts
+1. User requests to list all contacts (UC03).
+2. Elder Scrolls shows a list of contacts.
+3. User requests to pair a specific volunteer and befriendee in the list.
+4. Elder Scrolls pairs the specified volunteer and befriendee.
- Use case ends.
+ Use case ends.
**Extensions**
-* 2a. The list is empty.
+* 3a. The given list index is invalid.
- * 2a1. Elder Scrolls shows an error message.
+ * 3a1. Elder Scrolls shows an error message indicating that the given list index is invalid.
- Use case ends.
+ Use case resumes at step 2.
-* 3a. The incorrect filtering parameter used, ie. 'vol' not used
+* 3b. One or both given persons at specified list index are already paired.
- * 3a1. Elder Scrolls shows an error message.
+ * 3b1. Elder Scrolls shows an error message indicating that the given person(s) are already paired.
- Use case ends.
+ Use case resumes at step 2.
-**Use case: UC05 - List all befriendee contacts**
+**Use case: UC05 - Tag contacts**
**MSS**
-1. User requests to list all befriendee contacts
-2. Elder Scrolls shows a list of all befriendee contacts
+1. User requests to list all contacts (UC03).
+2. Elder Scrolls shows a list of contacts.
+3. User requests to tag a specific person with a property.
+4. Elder Scrolls tags the specified person in the list with that specified property.
- Use case ends.
+ Use case ends.
**Extensions**
-* 2a. The list is empty.
- * 2a1. Elder Scrolls shows an error message.
-
- Use case ends.
-
-* 3a. The incorrect filtering parameter used, ie. 'bef' is not used
+* 3a. The given list index is invalid.
* 3a1. Elder Scrolls shows an error message.
- Use case ends.
+ Use case resumes at step 2.
+
-**Use case: UC06 - Pair a volunteer and befriendee**
+**Use case: UC06 - Add a log entry for volunteer-befriendee pairs**
**MSS**
1. User requests to list all contacts (UC03).
-2. Elder Scrolls shows a list of contacts.
-3. User requests to pair a specific volunteer and befriendee in the list.
-4. Elder Scrolls pairs the specified volunteer and befriendee.
+2. Elder Scrolls shows a list of contacts.
+3. User requests to add a log entry for two paired individuals, and enters details of the activity log, including date, time, and remarks.
+4. Elder Scrolls records the log entry for the selected pair.
- Use case ends.
+ Use case ends.
**Extensions**
-
-* 3a. The given UID is invalid.
-
- * 3a1. Elder Scrolls shows an error message indicating that the given UID is invalid.
-
+* 3a. The selected pair is not currently paired.
+ * 5a1. Elder Scrolls displays an error message indicating that the selected pair is not currently paired.
Use case resumes at step 2.
-* 3b. The given UIDs are both volunteers or both befriendees.
-
- * 3b1. Elder Scrolls shows an error message indicating that the given UIDs are not of different types.
-
+* 3b. The entered details for the log are incomplete or invalid.
+ * 3a1. Elder Scrolls shows an error message to prompt user to correct the incomplete or invalid details.
Use case resumes at step 2.
-* 3b. One or both given UIDs are already paired.
-
- * 3b1. Elder Scrolls shows an error message indicating that the given UID(s) are already paired.
-
- Use case resumes at step 2.
-
-**Use case: UC07 - Tag contacts**
+**Use case: UC07 - Find a person based on name keyword**
**MSS**
-1. User requests to list all contacts (UC03).
-2. Elder Scrolls shows a list of contacts.
-3. User requests to tag a specific person with a property.
-4. Elder Scrolls tags the specified person in the list with that specified property.
-
- Use case ends.
+1. User requests to find a person based on a name keyword.
+1. Elder Scrolls displays a list of contacts matching the name keyword.
-**Extensions**
-
-
-* 3a. The given UID is invalid.
-
- * 3a1. Elder Scrolls shows an error message.
+ Use case ends.
- Use case resumes at step 2.
-*{More to be added}*
### Non-Functional Requirements
1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.
@@ -719,17 +683,25 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
### Glossary
-* **Befriendee**: Elderly person seeking companionship
-* **Volunteer**: Individual offering companionship to befriendees
+* **Volunteer**: An individual who offers their time and services to social service agencies or causes without financial compensation, in this context they carry out befriending activities with the beneficiaries.
+* **Befriendee**: An individual who receives support, companionship, or assistance from volunteers, in this context they are the beneficiaries of the befriending activities.
+* **Befriending**: The act of providing companionship, support, or assistance to individuals in need, typically carried out by volunteers to enhance the well-being and quality of life of the befriendees. Examples include social visits, outings, and emotional support.
+* **Volunteer Management System (VMS)**: A digital volunteer management tool designed to aid an organisation in the management of volunteers to improve productivity and potentially enhance the volunteer experience.
+* **Elder Scrolls**: The Volunteer Management System (VMS) developed by our team for efficient management and bookkeeping of volunteers, befriendees, and their interactions.
* **Befriending Volunteer Organisations**: An organisation that aims to provide companionship to seniors by pairing them with volunteers
* **Tagging**: Adding an arbitrary detail(s) to a volunteer or befriendee profile to aid in identifying special conditions
* **Index**: The position or number assigned to each item in a list, used for reference when performing actions such as editing or deleting entries in Elder Scrolls.
* **Pairing**: The process of associating a volunteer with a befriendee in Elder Scrolls, allowing them to work together on activities or support services.
* **Logs**: Records of interactions, activities, or events between volunteers and befriendees in Elder Scrolls, used for tracking service hours, progress, and communication.
+* **Command Line Interface (CLI)**: A text-based interface used for interacting with Elder Scrolls through commands typed into a terminal or command prompt.
+* **Graphical User Interface (GUI)**: A visual interface used for interacting with Elder Scrolls, providing intuitive controls and displays for managing volunteers, befriendees and logs.
+* **Backup**: A copy of Elder Scrolls data stored separately from the main application, used to safeguard against data loss or corruption.
+* **Open Source**: Software whose source code is freely available to the public, allowing users to view, modify, and distribute it according to open-source licenses.
+
--------------------------------------------------------------------------------------------------------------------
-## **Appendix: Instructions for manual testing**
+## **Appendix B: Instructions for manual testing**
Given below are instructions to test the app manually.
@@ -781,8 +753,20 @@ testers are expected to do more *exploratory* testing.
1. _{ more test cases … }_
-## **Appendix: Effort**
+## **Appendix C: Effort**
TODO
-## **Appendix: Planned Enhancements**
-TODO add feature flaws
+## **Appendix D: Planned Enhancements**
+
+Our current version of Elder Scrolls enables users to efficiently manage volunteers, befriendees, and their interactions. However, we have identified planned enhancements that will further improve the user experience and functionality of the application.
+
+* Team size: 5.
+
+1. **Even more flexible Log Entry Editing**: The current `logedit` function does not allow users to reassign the volunteer or befriendee involved in a log, with the only way being to delete and re-add a new log. This could be inconvenient if someone accidentally inputs the wrong pair of indices resulting in a wrong pair being referenced. Hence, we plan to make `logedit` support reassignment of logs to other, valid pairs.
+
+2.
+
+
+
+
+
From 52609b22b836691c3fe32636fc7153371e223546 Mon Sep 17 00:00:00 2001
From: Ger Teck <111064611+gerteck@users.noreply.github.com>
Date: Sat, 13 Apr 2024 03:59:27 +0800
Subject: [PATCH 3/7] Widen scope of message
Make returned success message for logedit more general.
---
src/main/java/scrolls/elder/logic/Messages.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/main/java/scrolls/elder/logic/Messages.java b/src/main/java/scrolls/elder/logic/Messages.java
index ffd331142d7..ba9b1400ae6 100644
--- a/src/main/java/scrolls/elder/logic/Messages.java
+++ b/src/main/java/scrolls/elder/logic/Messages.java
@@ -1,5 +1,6 @@
package scrolls.elder.logic;
+import java.time.LocalDate;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -62,6 +63,9 @@ public static String formatPerson(Person person) {
* Formats the {@code log} for display to the user.
*/
public static String formatLog(Log log) {
+ LocalDate startDateWithoutTime = log.getStartDate()
+ .toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate();
+
final StringBuilder builder = new StringBuilder();
builder.append("Title: ")
.append(log.getLogTitle())
@@ -70,7 +74,7 @@ public static String formatLog(Log log) {
.append("; Befriendee ID: ")
.append(log.getBefriendeeId())
.append("; Start Date: ")
- .append(log.getStartDate())
+ .append(startDateWithoutTime)
.append("; Duration: ")
.append(log.getDuration())
.append("; Remarks: ")
From 5154178fb918701dbf71ddbfdbe578ca275076b6 Mon Sep 17 00:00:00 2001
From: Ger Teck <111064611+gerteck@users.noreply.github.com>
Date: Sat, 13 Apr 2024 04:07:35 +0800
Subject: [PATCH 4/7] Update UG and DG
Update appropriately to address
bug reports raised in PE-D by
adding planned enhancements
and clarifications.
---
docs/DeveloperGuide.md | 10 +++++++---
docs/UserGuide.md | 4 ++++
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md
index c342b32a02f..924f198d6fe 100644
--- a/docs/DeveloperGuide.md
+++ b/docs/DeveloperGuide.md
@@ -760,11 +760,15 @@ TODO
Our current version of Elder Scrolls enables users to efficiently manage volunteers, befriendees, and their interactions. However, we have identified planned enhancements that will further improve the user experience and functionality of the application.
-* Team size: 5.
+* Team size: 5. (Max 10 planned enhancements)
+
+1. **Even more flexible Log Entry Editing**: The current `logedit` command does not allow users to reassign the volunteer or befriendee involved in a log, with the only way being to delete and re-add a new log. This could be inconvenient if someone accidentally inputs the wrong pair of indices resulting in a wrong pair being referenced. Hence, we plan to make `logedit` support reassignment of logs to other, valid pairs.
+
+2. **Enhanced find feature**: The current `find` command returns valid entries based on full matching of user inputs. We plan to enhance our `find` command with partial name keyword/tag search functionality, enabling users to find contacts based on partial name/tag matches. Improves search efficiency and usability in case a user may not fully remember a contact's name or tag.
+
+3. **Add customizability to constraints of logs added**: Currently, logs added can have dates in the future. While this may be desirable (for e.g. to log a planned visit with todos, and subsequently update remarks after the visit), it may also be undesirable (for e.g. to prevent accidental future date inputs). We plan to add a configuration option to allow users to set constraints on the dates of logs added, such that users can customize the behavior to suit their needs.
-1. **Even more flexible Log Entry Editing**: The current `logedit` function does not allow users to reassign the volunteer or befriendee involved in a log, with the only way being to delete and re-add a new log. This could be inconvenient if someone accidentally inputs the wrong pair of indices resulting in a wrong pair being referenced. Hence, we plan to make `logedit` support reassignment of logs to other, valid pairs.
-2.
diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 440023c0136..c7861c28503 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -130,6 +130,7 @@ Your Log List Panel displays all logs associated with your befriendees and volun
* For all commands which require a `INDEX` (e.g., `VOLUNTEER_INDEX`), the index refers to the index number shown in the displayed person list.
The indexes provided **must be indexes of people currently displayed in the person lists**.
+ * As the indexes are one-based, index values must be positive integers greater than 0. Any other values are automatically invalidated, and hence constitutes an invalid command format.
* Words in `UPPER_CASE` are placeholders to represent parameters that should be supplied by the user.
e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.
@@ -307,6 +308,7 @@ Example: `find r/volunteer David` (finds all volunteers with `David` in their na
* Different types of filters can be combined to narrow down the search results further.
* When multiple filters are provided, each filter should be separated by a space.
* The order in which filters are provided does not matter.
+* Invalid filters (e.g. `r/XXX, -paired`) will be ignored, and the search will proceed with the valid filters to enhance efficiency.
Examples:
* `find alex david`
@@ -446,6 +448,8 @@ Examples:
Shows a message explaining how to access the help page/user guide.
Format: `help`
+* Any extraneous inputs/parameters (e.g. `help me`) will be ignored.
+