diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 292e9b5d4b8..d4fd9b2caba 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -11,22 +11,24 @@ Here’s a quick overview of D.A.V.E.’s features:
- Delete leads and clients
- Keep track of upcoming meetings with leads/clients
-D.A.V.E. is here to enhance your advisory journey by simplifying information management, lead conversion, policy tracking and more.
+D.A.V.E. is here to enhance your advisory journey by simplifying information management, lead conversion, meeting scheduling and more.
# Table of Contents
- [Glossary](#glossary)
- [Quick Start](#quick-start)
- [Features](#features)
+ - [Help](#help)
- [Add lead](#add-lead)
- [Add client](#add-client)
+ - [View all leads and clients](#view-all-leads-and-clients)
- [View all clients](#view-all-clients)
- [View all leads](#view-all-leads)
- [View specific person](#view-specific-person)
- - [Delete](#delete)
+ - [Delete lead/client](#delete)
+ - [Edit lead/client](#edit)
- [Add meeting time](#add-meeting-time)
- [Delete meeting time](#delete-meeting-time)
- - [Edit](#edit)
- [Sort meeting time](#sort-meeting-time)
- [Convert lead to client](#convert-lead-to-client)
- [Convert client to lead](#convert-client-to-lead)
@@ -99,20 +101,6 @@ Opened help window.
After using help command
-### List
-
-- What it does: Lists all leads and clients in the address book to the user. The information displayed includes the Lead/Client's name, phone number, email, address, meeting time and tags.
-- Command: `list`.
-- Precise expected output when the command succeeds:
-```
-Listed all persons
-```
-
-
-
-
After using list command
-
-
### Add lead
- What it does: Adds a lead and their basic information, e.g. name, phone number, email, address, key milestone etc. The key milestone is a date that represents a lead's life-changing event, e.g. ORD, marriage, graduation etc.
@@ -138,21 +126,21 @@ Listed all persons
- `NAME`: can contain any string of alphanumeric characters.
- The name can contain spaces but cannot be blank (only contain spaces).
- Names are case-sensitive. This means that "John" and "john" are treated as different names, and you can enter both in the record without any issues.
- - `PHONE`: any valid 8-digit integer, at least 3 digits long.
- - `EMAIL`: a string of the format `local-part@domain`
+ - `PHONE`: any valid string of integers, between 3 digits and 8 digits long.
+ - `EMAIL`: a string of the format `local-part@domain`.
- The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).
- The local-part may not start or end with any special characters.
- The domain name is made up of domain labels separated by periods.
- - The domain name must end with a domain label at least 2 characters long
+ - The domain name must end with a domain label at least 2 characters long.
- Each domain label must start and end with alphanumeric characters and only separated by hyphens, if any.
- `ADDRESS`: can contain any alphanumeric character, must not be blank.
- - `KEY_MILESTONE`: only contains date in the format of `dd/MM/yyyy`
+ - `KEY_MILESTONE`: only contains date in the format of `dd/MM/yyyy`.
- ``KEY_MILESTONE`` is the date of a lead's life-changing event.
- - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`
+ - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`.
- Acceptable values for each optional parameter:
- `MEETING_TIME`: A string of format `dd/MM/yyyy HH:mm`, must not be blank if any meeting time is declared.
- - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`
- - The time must be a valid time in the 24-hour format, these are invalid: `25:00`, `12:60`
+ - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`.
+ - The time must be a valid time in the 24-hour format, these are invalid: `25:00`, `12:60`.
- Meeting time can be before the current date and time.
- `TAG`: can contain any alphanumeric character, must not be blank if any tag is declared.
- Precise expected outputs when the command succeeds:
@@ -198,12 +186,12 @@ This lead already exists in the address book
- `NAME`: can contain any string of alphanumeric characters.
- The name can contain spaces but cannot be blank (only contain spaces).
- Names are case-sensitive. This means that "John" and "john" are treated as different names, and you can enter both in the record without any issues.
- - `PHONE`: any valid 8-digit integer, at least 3 digits long.
- - `EMAIL`: a string of the format `local-part@domain`
+ - `PHONE`: any valid string of integers, between 3 digits and 8 digits long.
+ - `EMAIL`: a string of the format `local-part@domain`.
- The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).
- The local-part may not start or end with any special characters.
- The domain name is made up of domain labels separated by periods.
- - The domain name must end with a domain label at least 2 characters long
+ - The domain name must end with a domain label at least 2 characters long.
- Each domain label must start and end with alphanumeric characters and only separated by hyphens, if any.
- `ADDRESS`: can contain any alphanumeric character, must not be blank.
- Acceptable values for each optional parameter:
@@ -232,15 +220,27 @@ When adding a client with the same name as an existing client:
This client already exists in the address book
```
-### View all clients
+### View all leads and clients
+
+- What it does: Lists all leads and clients in the address book to the user. The information displayed includes the Lead/Client's name, phone number, email, address, meeting time and tags.
+- Command: `list`.
+- Example usage:
+
+
+
After using list command
+
-- What it does: View all clients you have stored, including their basic information and index in the list of clients, e.g. id, name, age, gender, occupation, etc.
-- Command: `listclient`.
- Precise expected outputs when the command succeeds:
+```
+Listed all persons
+```
-In output section of the
-`List of all clients`
+### View all clients
+
+- What it does: View all clients you have stored, including their basic information and index in the list of clients, e.g. id, name, age, gender, occupation, etc.
+- Command: `listclient`.
+- Example usage:
@@ -249,7 +249,7 @@ In output section of the
After using listclient command
-- Precise expected outputs when the commands succeeds:
+- Precise expected outputs when there are clients stored:
```
Listed all clients
```
@@ -262,10 +262,7 @@ There are no clients in the address book
- What it does: View all leads you have stored, including their basic information and index in the list of leads, e.g. id, name, age, gender, occupation, etc.
- Command: `listlead`.
-- Precise expected outputs when the command succeeds:
-
-`List of all leads`
-
+- Example usage:
@@ -274,7 +271,7 @@ There are no clients in the address book
After using listlead command
-- Precise expected outputs when commands succeeds:
+- Precise expected outputs when there are leads stored:
```
Listed all leads
```
@@ -301,19 +298,31 @@ There are no leads in the address book
- Acceptable values for `INDEX` parameter:
- - Must be an integer from `1` to the last index of the main list.
+ - Must be an integer from `1` to the last index of the filtered list shown in the address book.
- Precise expected output when the command succeeds:
-
-`Viewed Person Successfully`
+```
+Viewed Person Successfully
+```
- Precise expected output when command fails:
-`The person index provided is invalid`
+When viewing a person without specifying an index:
+```
+Invalid command format!
+view: Views the person identified by the index number used.
+Parameters: INDEX (must be a positive integer)
+Example: view 1
+```
+
+When viewing a person with an invalid index:
+```
+The person index provided is invalid
+```
### Delete
-- What it does: Deletes a lead from your list of leads.
+- What it does: Deletes a lead/client from the list of leads and/or clients shown.
- Command format: `delete INDEX`.
- Example usage: `delete 1`.
@@ -328,13 +337,16 @@ There are no leads in the address book
- Acceptable values for `INDEX` parameter:
- - Must be an integer from `1` to the last index of the leads list
+ - Must be an integer from `1` to the last index of the filtered list shown in the address book.
- Precise expected outputs when the command succeeds:
-`Deleted person: `
+```
+Deleted person:
+```
- Precise expected outputs when the command fails:
+When deleting a person without specifying an index:
```
Invalid command format!
delete: Deletes the person identified by the index number used in the displayed person list.
@@ -342,82 +354,12 @@ Parameters: INDEX (must be a positive integer)
Example: delete 1
```
-### Add meeting time
-
-- What it does: Adds a meeting time to a person.
-- Command format: `addmeeting INDEX m/MEETING_TIME`
-- Example usage: `addmeeting 1 m/12/10/2023 16:00`
-
-
-
-
Before using addmeeting
-
-
-
-
-
After using addmeeting
-
-
-- Acceptable values for each parameter:
- - `INDEX`: Any integer from `1` to the last index of the displayed list.
- - `MEETING_TIME`: A string of format `dd/MM/yyyy HH:mm`.
- - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`.
- - The time must be a valid time in the 24-hour format, these are invalid: `25:00`, `12:60`.
- - Meeting time can be before the current date and time.
-- Precise expected outputs when the command succeeds:
-
-`Added Meeting: to Person `
-
-- Precise expected outputs when the command fails:
-
-When adding a meeting time to an invalid index or with an invalid datetime format:
-```
-Invalid command format!
-addmeeting: Adds a new meeting time to the person identified by the displayed index in the address book.
-Parameters: INDEX (must be a positive integer) m/MEETING_TIME
-Example: addmeeting 1 m/12/10/2023 16:00
-```
-
-When adding a meeting time to a person who already has an existing meeting:
-
-`Person already has a meeting time, use the edit command instead`
-
-### Delete meeting time
-
-- What it does: Delete a meeting time for meetings that has been cancelled or postponed.
-
-
-**:bulb: Tip:**
-If the person has no meeting time, delete meeting will leave the person's meeting time as null.
-
-- Command format: `deletemeeting INDEX`
-- Example usage: `deletemeeting 1`
-
-
-
-
Before using deletemeeting
-
-
-
-
-
After using deletemeeting
-
-
-- Acceptable values for each parameter:
- - `INDEX`: Any integer from `1` to the last index of the filtered list shown in the addressbook.
-- Precise expected outputs when the command succeeds:
-```
-Deleted Meeting: from Person
-```
-- Precise expected outputs when the command fails:
+When deleting a person with an invalid index:
```
-Invalid command format!
-deletemeeting: Deletes the meeting identified by the index number used in the displayed meeting list.
-Parameters: INDEX (must be a positive integer)
-Example: deletemeeting 1
+The person index provided is invalid
```
-### Edit
+### Edit
- What it does: Edit the details of a lead or client.
@@ -425,12 +367,8 @@ Example: deletemeeting 1
Duplicate names are not allowed in the record. The system will prevent the entry of the same name for more than once.
-- Command format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [k/KEY_MILESTONE] [t/TAG]...`
-- Example usage: `edit 1 p/98765432`
-
-
- This command will clear the tags of a lead or client.
-
+- Command format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [k/KEY_MILESTONE] [t/TAG]...`.
+- Example usage: `edit 1 p/91234567 e/johndoe@example.com`.
@@ -443,31 +381,35 @@ Example: deletemeeting 1
- Acceptable values for each compulsory parameter:
- - `INDEX`: Any integer from `1` to the last index of the filtered list shown in the addressbook.
-- Acceptable values for each optional parameter (at least one of the optional parameters must be provided)
+ - `INDEX`: Any integer from `1` to the last index of the filtered list shown in the address book.
+- Acceptable values for each optional parameter (at least one of the optional parameters must be provided):
- `NAME`: can contain any string of alphanumeric characters.
- The name can contain spaces but cannot be blank (only contain spaces).
- - `PHONE`: any valid 8-digit integer, at least 3 digits long.
- - `EMAIL`: a string of the format `local-part@domain`
- - The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).
- - The local-part may not start or end with any special characters.
+ - `PHONE`: any valid string of integers, between 3 digits and 8 digits long.
+ - `EMAIL`: a string of the format `local-part@domain`.
+ - The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).
+ - The local-part may not start or end with any special characters.
- The domain name is made up of domain labels separated by periods.
- - The domain name must end with a domain label at least 2 characters long
+ - The domain name must end with a domain label at least 2 characters long.
- Each domain label must start and end with alphanumeric characters and only separated by hyphens, if any.
- `ADDRESS`: can contain any alphanumeric character, must not be blank.
- - `KEY_MILESTONE`: only contains date in the format of `dd/MM/yyyy`
- - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`
- - If the edited person is a client, no ``KEY_MILESTONE`` of the person will be edited as client does not have ``KEY_MILESTONE``
- - `MEETING_TIME`: only contains date in the format of `dd/MM/yyyy HH:mm`
- - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`
- - The time must be a valid time in the 24-hour format, these are invalid: `25:00`, `12:60`
+ - `KEY_MILESTONE`**(Only for leads)**: only contains date in the format of `dd/MM/yyyy`.
+ - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`.
+ - If the edited person is a client, no ``KEY_MILESTONE`` of the person will be edited as client does not have ``KEY_MILESTONE``.
+ - `MEETING_TIME`: only contains date in the format of `dd/MM/yyyy HH:mm`.
+ - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`.
+ - The time must be a valid time in the 24-hour format, these are invalid: `25:00`, `12:60`.
- If the edited `MEETING_TIME` is `null`, it will not remove the existing person's `MEETING_TIME`.
Lead/Client's meeting time can be added using edit command. However, it is more convenient to use the addmeeting
command.
- - `TAG`: can contain any alphanumeric character, must not be blank if any tag is declared.
+- `TAG`: can contain any alphanumeric character, must not be blank if any tag is declared.
+
+
+ edit INDEX t\
will clear the tags of a lead or client.
+
You can add more tags to a person using the edit
command. For example, if person 1 already has the tag classmate
@@ -499,11 +441,89 @@ When editing a person with an invalid index:
The person index provided is invalid
```
+### Add meeting time
+
+- What it does: Adds a meeting time to a person.
+- Command format: `addmeeting INDEX m/MEETING_TIME`.
+- Example usage: `addmeeting 1 m/12/10/2023 16:00`.
+
+
+
+
Before using addmeeting
+
+
+
+
+
After using addmeeting
+
+
+- Acceptable values for each compulsory parameter:
+ - `INDEX`: Any integer from `1` to the last index of the displayed list.
+ - `MEETING_TIME`: A string of format `dd/MM/yyyy HH:mm`.
+ - The date must be a valid date, these are invalid: `31/02/2020`, `25/13/2021`.
+ - The time must be a valid time in the 24-hour format, these are invalid: `25:00`, `12:60`.
+ - Meeting time can be before the current date and time.
+- Precise expected outputs when the command succeeds:
+
+```
+Added Meeting: to Person
+```
+
+- Precise expected outputs when the command fails:
+
+When adding a meeting time to an invalid index or with an invalid datetime format:
+```
+Invalid command format!
+addmeeting: Adds a new meeting time to the person identified by the displayed index in the address book.
+Parameters: INDEX (must be a positive integer) m/MEETING_TIME
+Example: addmeeting 1 m/12/10/2023 16:00
+```
+
+When adding a meeting time to a person who already has an existing meeting:
+
+```
+Person already has a meeting time, use the edit command instead
+```
+
+### Delete meeting time
+
+- What it does: Delete a meeting time for meetings that has been cancelled or postponed.
+
+If the person has no meeting time, delete meeting will leave the person's meeting time as null.
+
+
+- Command format: `deletemeeting INDEX`.
+- Example usage: `deletemeeting 1`.
+
+
+
+
Before using deletemeeting
+
+
+
+
+
After using deletemeeting
+
+
+- Acceptable values for `INDEX` parameter:
+ - Any integer from `1` to the last index of the filtered list shown in the address book.
+- Precise expected outputs when the command succeeds:
+```
+Deleted Meeting: from Person
+```
+- Precise expected outputs when the command fails:
+```
+Invalid command format!
+deletemeeting: Deletes the meeting identified by the index number used in the displayed meeting list.
+Parameters: INDEX (must be a positive integer)
+Example: deletemeeting 1
+```
+
### Sort meeting time
-- What it does: Sorts the meeting times of all leads and clients chronologically, displaying
-only entries with a meeting time.
-- Command format: `sortmeeting`
+- What it does: Sorts the meeting times of all leads and clients chronologically, displaying
+ only entries with a meeting time.
+- Command format: `sortmeeting`.
- Example usage:
@@ -523,11 +543,11 @@ only entries with a meeting time.
### Convert lead to client
- What it does: Converts a lead to client.
-- Command format: `converttoclient INDEX`
-- Example usage: `converttoclient 1`
-- Acceptable values for each parameter:
- - `INDEX`: Any integer from `1` to the last index of the leads list
-- Example usage
+- Command format: `converttoclient INDEX`.
+- Example usage: `converttoclient 1`.
+- Acceptable values for `INDEX` parameter:
+ - Any integer from `1` to the last index of the filtered list shown in the address book, person must be a lead.
+- Example usage:
@@ -541,22 +561,26 @@ only entries with a meeting time.
- Precise expected outputs when the command succeeds:
-`Converted lead to client`
+```
+Converted lead to client
+```
- Precise expected outputs when the command fails:
-`The person index provided is invalid`
+```
+The person index provided is invalid
+```
### Convert client to lead
-- What it does: Converts a client into lead, the ``KEY_MILESTONE`` is 1 year
+- What it does: Converts a client into lead. The ``KEY_MILESTONE`` is 1 year
from current date to ensure a follow-up by the user.
-- Command format: `converttolead INDEX`
-- Example usage: `converttolead 1`
-- Acceptable values for each parameter:
- - `INDEX`: Any integer from `1` to the last index of the leads list.
-- Example usage
+- Command format: `converttolead INDEX`.
+- Example usage: `converttolead 1`.
+- Acceptable values for `INDEX` parameter:
+ - Any integer from `1` to the last index of the filtered list shown in the address book, person must be a client.
+- Example usage:
@@ -569,31 +593,20 @@ from current date to ensure a follow-up by the user.
- Precise expected outputs when the command succeeds:
-`Converted client to lead`
+
+```
+Converted client to lead
+```
- Precise expected outputs when the command fails:
-`The person index provided is invalid`
+```
+The person index provided is invalid
+```
### Locating persons by name
-- What it does: Finds persons whose names contain any of the given keywords.
-- Command format: `find KEYWORD [MORE_KEYWORDS]`
-- Example usage: `find John David`
-- Acceptable values for parameter:
- - `KEYWORD`: Any name from the list.
-- Precise expected output when the command succeeds:
-
-`
persons listed!`
-
-- Precise expected output when the command fails:
-
-```
-Invalid command format!
-find: Finds all persons whose names contain any of the specified names (case-insensitive) and displays them as a list with index numbers.
-Parameters: NAME [MORE_NAMES]...
-Example: find alice bob charlie
-```
+- What it does: Finds persons whose names contain any of the given keywords as names.
@@ -603,7 +616,8 @@ Example: find alice bob charlie
-Example usage:
+- Command format: `find NAME [MORE_NAMES]`.
+- Example usage: `find John David`.
@@ -615,12 +629,31 @@ Example usage:
After using find john david
+- Acceptable values for parameter:
+ - `NAME`: A keyword used to match against the names of all persons in the list.
+- Precise expected output when the command succeeds:
+
+```
+ persons listed!
+```
+
+- Precise expected output when the command fails:
+
+```
+Invalid command format!
+find: Finds all persons whose names contain any of the specified names (case-insensitive) and displays them as a list with index numbers.
+Parameters: NAME [MORE_NAMES]...
+Example: find alice bob charlie
+```
+
### Clear address book
- What it does: Clears all entries from the address book.
- Command format: `clear`.
- Precise expected output when the command succeeds:
-`Address book has been cleared!`
+```
+Address book has been cleared!
+```
This command will delete all the data from the address book. This command cannot be reversed. Proceed with caution.
@@ -660,20 +693,20 @@ can download it [here](https://www.oracle.com/java/technologies/downloads/#java1
| Action | Format, Examples |
|--------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Help** | `help` |
| **Add lead** | `addlead n/NAME p/PHONE e/EMAIL a/ADDRESS k/KEY_MILESTONE [m/MEETING_TIME] [t/TAG]...`
e.g. `addlead n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 k/01/12/2023 m/10/10/2023 14:30 t/classmate` |
| **Add client** | `addclient n/NAME p/PHONE e/EMAIL a/ADDRESS [m/MEETING_TIME] [t/TAG]...`
e.g. `addclient n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 m/10/10/2023 14:30 t/classmate` |
| **View all leads and clients** | `list` |
| **View all clients** | `listclient` |
| **View all leads** | `listlead` |
| **View a specific person** | `view INDEX`
e.g. `view 1` |
-| **Delete** | `delete INDEX`
e.g. `delete 1` |
+| **Delete lead/client** | `delete INDEX`
e.g. `delete 1` |
+| **Edit lead/client** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [k/KEY_MILESTONE] [t/TAG]...`
e.g. `edit 1 n/John Doe p/98765432` |
| **Add meeting time** | `addmeeting INDEX m/MEETING_TIME`
e.g. `addmeeting 1 m/12/10/2023 16:00` |
| **Delete meeting time** | `deletemeeting INDEX`
e.g. `deletemeeting 1` |
-| **Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [k/KEY_MILESTONE] [t/TAG]...`
e.g. `edit 1 n/John Doe p/98765432` |
| **Sort meeting time** | `sortmeeting` |
| **Convert lead to client** | `converttoclient INDEX`
e.g. `converttoclient 1` |
| **Convert client to lead** | `converttolead INDEX`
e.g. `converttolead 1` |
| **Locating person by name** | `find NAME [MORE_NAMES]`
e.g. `find John David` |
-| **Clear** | `clear` |
-| **Help** | `help` |
-| **Exit** | `exit` |
+| **Clear address book** | `clear` |
+| **Exit the program** | `exit` |