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` |