From 92b88311599ee6b80fe5fbf276e66eab67b44c07 Mon Sep 17 00:00:00 2001 From: FionaQY Date: Mon, 11 Nov 2024 11:53:00 +0800 Subject: [PATCH 1/6] Update UG, DG and HelpWindow --- docs/DeveloperGuide.md | 70 ++++++++-------- docs/UserGuide.md | 79 +++++++++++-------- .../address/logic/commands/AddCommand.java | 36 ++++----- .../java/seedu/address/ui/HelpWindow.java | 4 +- 4 files changed, 99 insertions(+), 90 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8f8626b7b4f..729d93297d7 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -309,7 +309,7 @@ Additionally, certain command hints could benefit from more clarity on constrain 1. The current error messages are functional and provide sufficient guidance for users. However, standardizing them will improve usability by minimizing confusion and ensuring consistent messaging. 2. The restriction on using `rn/` and `ra/` flags simultaneously is already documented in the user guide, and an error message is triggered if both flags are used together. This allows users to learn about the constraint through multiple avenues. -### 5. Relax Parsing Requirements for `income` and `email` Arguments in Filter Command +### 6. Relax Parsing Requirements for `income` and `email` Arguments in Filter Command **Current issue:** The current parsing requirements for the Filter command are overly strict, particularly for the `income` and `email` fields. Specifically: - `income` must be a full, valid 8-digit phone number. - `email` must be a valid email address. @@ -320,6 +320,15 @@ These requirements can be restrictive for agents who may prefer more flexible fi **Status:** Scheduled for future release due to current timeline priorities. +### 7. Prevent Duplicate Client Entries by Standardizing Name Formatting +**Current issue:** Client names are currently considered distinct if they contain minor differences in whitespace (e.g., `John Doe` vs. `John Doe`). This can lead to duplicate entries due to minor typos when using the `add` or `edit` commands. + +This can result in duplication of clients when using the `add` or `edit` command due to typos. + +**Proposed Enhancement:** Standardize client names by trimming excess whitespace from each part of the name before storing and comparing entries. This ensures that variations in spacing do not create duplicates. + +**Status:** Scheduled for future release due to current timeline priorities. + -------------------------------------------------------------------------------------------------------------------- ## **Documentation, logging, testing, configuration, dev-ops** @@ -352,28 +361,28 @@ These requirements can be restrictive for agents who may prefer more flexible fi Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can…​ | -|----------|-----------------|----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| -| `* * *` | user | save current data | when I close & open the app, details I have added persist | -| `* * *` | user | be able to edit data of my client | I can change client details without having to delete a contact and re-add it with the new details | -| `* * *` | banking agent | add a client | I can save the records and details of the new client | -| `* * *` | banking agent | remove a client | I can remove a client that is no longer going to use our credit card services or is blacklisted | -| `* * *` | banking agent | view details of a client | I need not ask clients for details again | -| `* * *` | banking agent | save contact details of the clients | I can contact clients who are more willing to spend money and call back clients with updates | -| `* * *` | banking agent | edit contact details of the clients | I need not delete and re-add a client just for a small change in detail (i.e. moved house) | -| `* * *` | banking agent | delete contact details | I can remove clients who are no longer valid or for whatever reason are not worth saving | -| `* * *` | banking agent | save a note/remarks about the clients | I can recall any particular notable details about the client (for e.g. This client is very concerned about pricing) | -| `* *` | banking agent | check which credit card services or plans a client has/had | I avoid selling products that the client already has | -| `* *` | banking agent | filter using details like occupation and income | I can target a group of clients more quickly | -| `* *` | first time user | have a walkthrough guide to show me the user interface | I am familiar with the features available and how I can find and use them | -| `*` | user | export current data | I can backup the data regularly | -| `*` | user | import data from a backup | I can use my data backed up in case of data loss, or initialise the app with a set of data if I am transferring from a prior source | -| `*` | banking agent | view common urls/card information | I can read/send them to the client quickly when inquired | -| `*` | banking agent | be reminded to call back a client when I open the application | I can immediately know which client I need to follow up today | -| `*` | impatient user | get the results that falls into a specific group/category | I don’t waste time querying all the result in that category one by one | -| `*` | impatient user | enter details quickly using a user-friendly interface | I can quickly add/view data and not get mad because it’s fast | -| `*` | long time user | access my most frequently used features easily | I can save time when accessing my most used features | -| `*` | beginner user | have a help menu | I know how to perform a particular task | +| Priority | As a …​ | I want to …​ | So that I can…​ | +|----------|-----------------|--------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| +| `* * *` | user | save current data | when I close & open the app, details I have added persist | +| `* * *` | user | be able to edit data of my client | I can change client details without having to delete a contact and re-add it with the new details | +| `* * *` | banking agent | add a client | I can save the records and details of the new client | +| `* * *` | banking agent | remove a client | I can remove a client that is no longer going to use our credit card services or is blacklisted | +| `* * *` | banking agent | view details of a client | I need not ask clients for details again | +| `* * *` | banking agent | save contact details of the clients | I can contact clients who are more willing to spend money and call back clients with updates | +| `* * *` | banking agent | edit contact details of the clients | I need not delete and re-add a client just for a small change in detail (i.e. moved house) | +| `* * *` | banking agent | delete contact details | I can remove clients who are no longer valid or for whatever reason are not worth saving | +| `* * *` | banking agent | save a note/remarks about the clients | I can recall any particular notable details about the client (for e.g. This client is very concerned about pricing) | +| `* *` | banking agent | check which credit card services or plans a client has/had | I avoid selling products that the client already has | +| `* *` | banking agent | filter using details like occupation and income | I can target a group of clients more quickly | +| `* *` | first time user | have a walkthrough guide to show me the user interface | I am familiar with the features available and how I can find and use them | +| `*` | user | export current data | I can backup the data regularly | +| `*` | user | import data from a backup | I can use my data backed up in case of data loss, or initialise the app with a set of data if I am transferring from a prior source | +| `*` | banking agent | view common urls/card information | I can read/send them to the client quickly when inquired | +| `*` | banking agent | be reminded to call back a client when I open the application | I can immediately know which client I need to follow up today | +| `*` | impatient user | get the results that falls into a specific group/category | I don’t waste time querying all the result in that category one by one | +| `*` | impatient user | enter details quickly using a user-friendly interface | I can quickly add/view data and not get mad because it’s fast | +| `*` | long time user | access my most frequently used features easily | I can save time when accessing my most used features | +| `*` | beginner user | have a help menu | I know how to perform a particular task | | `*` | beginner user | have some sample client data that has already been inputted into the app | I can find out information can be saved in the application | ### Use cases @@ -507,16 +516,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case ends. -**Use case: U7 - Remove remarks about a client** - -**MSS** - -1. User performs Edit remarks about a client (U4). -2. User removes existing remark through editing. - - Use case ends. - -**Use case: U8 - Clear clients' contacts** +**Use case: U7 - Clear clients' contacts** **MSS** @@ -535,7 +535,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case ends. -**Use case: U9 - Undo the most recent change** +**Use case: U8 - Undo the most recent change** **MSS** 1. User requests to undo the last change made to the list of contacts. @@ -551,7 +551,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case ends. -**Use case: U10 - Exit** +**Use case: U9 - Exit** **MSS** diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 5e7ff19cfbd..cc16eed798a 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -170,7 +170,7 @@ A pie chart provides a visual summary of client case statuses (e.g., **Urgent**, To learn more about how to use commands in AgentAssist, proceed to the next section. ### Tier Color Code for AgentAssist GUI: -The tier is label with color-coded fill located next to a client's name on the list, or under a client's name +The tier is labeled with color-coded fill located next to a client's name on the list, or under a client's name on Client Detail Panel, aiming to help represent the credit card tier. This will help agents quickly assess the importance of each client and serve them with right credit card promotion. #### Gold Tier @@ -185,7 +185,7 @@ Clients that are not being assigned to any tier (**NA** tier) will not display a ### Status Color Code of AgentAssist GUI: -The status is label with color-coded fill located next to a client's name on the list, or under a client's name +The status is labeled with color-coded fill located next to a client's name on the list, or under a client's name on Client Detail Panel, aiming to represent case status: the urgency of the client's case, and help agents prioritize their actions. #### Urgent Status @@ -313,17 +313,17 @@ Some initial commands to try: * `list`: This command displays all clients currently in your database, making it easy to browse through entries. **Adding a New Client** -* `add n/Jane Doe p/87654321 e/jane@example.com a/123 Jane Road j/doctor i/120000`: Adds Jane Doe to your database with detailed contact information, job title, and income. +* `add n/ Jane Doe p/ 87654321 e/ jane@example.com a/ 123 Jane Road j/ doctor i/ 120000`: Adds Jane Doe to your database with detailed contact information, job title, and income. **Editing a Client's Information** -* `edit 1 p/12345678`: Updates the phone number of the first client in your list to `12345678`. -* `edit 4 rn/Updated remark(s) here`: Replaces the remark(s) of the fourth client with "Updated remark(s) here". +* `edit 1 p/ 12345678`: Updates the phone number of the first client in your list to `12345678`. +* `edit 4 rn/ Updated remark(s) here`: Replaces the remark(s) of the fourth client with "Updated remark(s) here". **Removing a Client** * `delete 3`: Removes the third client from your list. Ensure you have the correct index to avoid deleting the wrong client. **Searching for a Client** -* `filter n/Jane`: Finds all clients named Jane in your database. It’s a powerful tool for quickly locating clients or filtering for a specific type of client. +* `filter n/ Jane`: Finds all clients named Jane in your database. It’s a powerful tool for quickly locating clients or filtering for a specific type of client. **Viewing Detailed Client Information** * `view 1`: Opens a split view showing detailed information for the first client in your list. @@ -340,7 +340,7 @@ Refer to the [Commands Section](#5-commands) for more comprehensive details of e > > Combine commands like `filter` followed by `edit` or `delete` to manage your contacts more effectively. > -> For example, use `filter j/doctor` to display all doctors, then `edit 2 a/321 New Address` to update the address for the second listed doctor. +> For example, use `filter j/ doctor` to display all doctors, then `edit 2 a/ 321 New Address` to update the address for the second listed doctor. [↑ Return to Table of Contents](#table-of-contents) @@ -414,18 +414,18 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio ``` The following mandatory prefixes are missing: [...] Invalid command format! - add: Adds a client to the address book. Parameters: n/NAME p/PHONE e/EMAIL a/ADDRESS j/JOB i/INCOME [t/TIER]... + add: Adds a client to the address book. Parameters: n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME [t/ TIER]... [r/REMARK]...[s/STATUS]... - Example: 'add n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 j/doctor i/300 t/GOLD r/He is very smart s/NON_URGENT' + Example: 'add n/ John Doe p/ 98765432 e/ johnd@example.com a/ 311, Clementi Ave 2, #02-25 j/ doctor i/ 300 t/ GOLD r/ He is very smart s/ NON_URGENT' ``` - Error caused by invalid values for some fields - Message: ``` Invalid command format! ... - add: Adds a client to the address book. Parameters: n/NAME p/PHONE e/EMAIL a/ADDRESS j/JOB i/INCOME [t/TIER]... + add: Adds a client to the address book. Parameters: n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME [t/ TIER]... [r/REMARK]...[s/STATUS]... - Example: 'add n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 j/doctor i/300 t/GOLD r/He is very smart s/NON_URGENT' + Example: 'add n/ John Doe p/ 98765432 e/ johnd@example.com a/ 311, Clementi Ave 2, #02-25 j/ doctor i/ 300 t/ GOLD r/ He is very smart s/ NON_URGENT' ``` > **Note on Duplicates:** @@ -551,10 +551,14 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio Command has been cancelled. ``` - **On Error:** - - Invalid index error message: - ``` - The client index provided is invalid. - ``` + - Error caused by invalid index + - Message: + ``` + Invalid command format! + delete: : Deletes the client identified by the index number used in the displayed client list. + Parameters: INDEX (must be a positive integer) + Example: 'delete 1' + ``` > 💡 **Pro Tip:** > No need to worry about duplicate indexes—AgentAssist guarantees that every client has a unique index automatically. @@ -564,7 +568,7 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio ### 5.2.4 Delete All Existing Clients -**Purpose:** Delete all clients from the database, effectively resetting the application’s contact list +**Purpose:** Delete all clients from the database, effectively resetting the application’s contact list. **Command Format:** ``` @@ -611,7 +615,7 @@ list **Command Format:** ``` -filter [n/] [p/] [e/] [a/
] [j/] [r/] [t/] [i/ (=/) ] [s/] +filter [n/ ] [p/ ] [e/ ] [a/
] [j/ ] [r/ ] [t/ ] [i/ (=/) ] [s/ ] ``` - **Mandatory Field**: One or more flags with corresponding search terms. The search term cannot be left empty. - **Special Syntax for Income (i/)**: @@ -682,14 +686,15 @@ For detailed explanations for the matching criteria of each flag and the accepta where `x` is the number of matching results. - **On Error:** - If no valid flags are used: - ``` - Invalid command format! - filter: Searches for all clients whose specified field contains the given substring (case-insensitive) and displays the results in a numbered list. - Parameters: / - Flags: n/ NAME, p/ PHONE, e/ EMAIL, a/ ADDRESS, j/ JOB, i/ (=/) INCOME r/ REMARK t/ TIER s/ STATUS - Example: filter n/ Alice p/ 9111222 - This will find all clients whose names contain 'Alice'and whose phone number is '91112222'. - ``` + - Message: + ``` + Invalid command format! + filter: Searches for all clients whose specified field contains the given substring (case-insensitive) and displays the results in a numbered list. + Parameters: / + Flags: n/ NAME, p/ PHONE, e/ EMAIL, a/ ADDRESS, j/ JOB, i/ (=/) INCOME r/ REMARK t/ TIER s/ STATUS + Example: filter n/ Alice p/ 9111222 + This will find all clients whose names contain 'Alice'and whose phone number is '91112222'. + ``` - If a search term fails to meet the requirements (e.g., invalid phone number length), the system will display usage hints specific to all the invalid search terms. @@ -720,10 +725,14 @@ view - A split view opens showing the selected client's complete information - The main list remains visible and functional on the left while detailed information appears on the right - **On Error:** - - Invalid index error message: - ``` - The client index provided is invalid. - ``` + - Error caused by invalid index + - Message: + ``` + Invalid command format! + view: Views the client identified by the index number used in the displayed client list. + Parameters: INDEX (must be a positive integer) + Example: 'view 1' + ``` > 💡 **Pro Tip:** > You can use the split view to compare client details side by side with the main list, making it easier to reference multiple clients at once. @@ -742,10 +751,10 @@ close **What to Expect:** - **On Success:** - - The split view closes - - The main list view returns to full width + - The split view closes. + - The main list view returns to full width. - **On Error:** - - No error messages are shown; the command is simply ignored if no split view is open + - No error messages are shown; the command is simply ignored if no split view is open. ### 5.4.3 Undo Previous Command @@ -820,7 +829,7 @@ The data in AgentAssist is automatically saved as a [JSON](https://developer.moz Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AgentAssist home folder. ### How do I change the remarks, credit card tier, or status of an existing client? -Use the [`edit` command](#522-edit-an-existing-clients-information), and specify the `t/` flag for the credit card tier, and `rn/` or `ra/` for remark(s). If you wish to remove the visible `Tier` or `Status` label of a client, use `t/ NA` or `s/ NA` with the `edit` command. +Use the [`edit` command](#522-edit-an-existing-clients-information), and specify the `t/` flag for the credit card tier, and `rn/` or `ra/` for remark(s). If you wish to remove the visible `Tier` or `Status` label of a client, use `t/ NA` or `s/ NA` with the `edit` command. To remove all remarks of a client, use `rn/ NA` with the `edit` command. ### Why am I getting an error when trying to edit the remark of an existing client? Ensure that the command syntax is correct, and note that the `rn/` and `ra/` flags cannot be used together. The `rn/` flag replaces the existing remark(s), while `ra/` appends to the current remark(s). @@ -852,11 +861,11 @@ Each status type is visually distinguished in the UI: Urgent is denoted by a red | **Action** | **Command Format** | **Example** | |----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------| -| **Add New Client** | `add n/ p/ e/ a/
j/ i/ [t/] [r/] [s/]` | `add n/ GORDON MOORE p/ 99007766 e/ gmoore@ntu.sg a/ COM3 j/ engineer i/ 99999 t/ gold r/ remark s/ urgent` | +| **Add New Client** | `add n/ p/ e/ a/
j/ i/ [t/ ] [r/ ] [s/ ]` | `add n/ GORDON MOORE p/ 99007766 e/ gmoore@ntu.sg a/ COM3 j/ engineer i/ 99999 t/ gold r/ remark s/ urgent` | | **Delete Existing Client** | `delete ` | `delete 69` | | **Edit Existing Client** | `edit [n/ ] [p/ ] [e/ ] [a/
] [j/ ] [i/ ] [t/ ] [rn/ ] [ra/ ] [s/ ]` | `edit 69 n/ GORDON MOORE p/ 77337733 e/ gmoore_new@ntu.sg a/ COM3 j/ doctor i/ 1000000000 ra/ added info s/ urgent` | | **List All Clients** | `list` | `list` | -| **Filter Client List** | `filter [n/] [p/] [e/] [a/
] [j/] [r/] [t/] [i/ (=/) ] [s/]` | `filter n/ GORDON MOORE j/ doctor t/ gold s/ urgent` | +| **Filter Client List** | `filter [n/ ] [p/ ] [e/ ] [a/
] [j/ ] [r/ ] [t/ ] [i/ (=/) ] [s/ ]` | `filter n/ GORDON MOORE j/ doctor t/ gold s/ urgent` | | **View Client Details** | `view ` | `view 1` | | **Close Client Details** | `close` | `close` | | **Clear All Data** | `clear` | `clear` | diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index 25b5b0b73fc..c668d6449a4 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -28,25 +28,25 @@ public class AddCommand extends Command { public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a client to the address book. " + "Parameters: " - + PREFIX_NAME + "NAME " - + PREFIX_PHONE + "PHONE " - + PREFIX_EMAIL + "EMAIL " - + PREFIX_ADDRESS + "ADDRESS " - + PREFIX_JOB + "JOB " - + PREFIX_INCOME + "INCOME " - + "[" + PREFIX_TIER + "TIER]...\n" - + "[" + PREFIX_REMARK + "REMARK]..." - + "[" + PREFIX_STATUS + "STATUS]...\n" + + PREFIX_NAME + " NAME " + + PREFIX_PHONE + " PHONE " + + PREFIX_EMAIL + " EMAIL " + + PREFIX_ADDRESS + " ADDRESS " + + PREFIX_JOB + " JOB " + + PREFIX_INCOME + " INCOME " + + "[" + PREFIX_TIER + " TIER]...\n" + + "[" + PREFIX_REMARK + " REMARK]..." + + "[" + PREFIX_STATUS + " STATUS]...\n" + "Example: '" + COMMAND_WORD + " " - + PREFIX_NAME + "John Doe " - + PREFIX_PHONE + "98765432 " - + PREFIX_EMAIL + "johnd@example.com " - + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 " - + PREFIX_JOB + "doctor " - + PREFIX_INCOME + "300 " - + PREFIX_TIER + "GOLD " - + PREFIX_REMARK + "He is very smart " - + PREFIX_STATUS + "NON_URGENT" + + PREFIX_NAME + " John Doe " + + PREFIX_PHONE + " 98765432 " + + PREFIX_EMAIL + " johnd@example.com " + + PREFIX_ADDRESS + " 311, Clementi Ave 2, #02-25 " + + PREFIX_JOB + " doctor " + + PREFIX_INCOME + " 300 " + + PREFIX_TIER + " GOLD " + + PREFIX_REMARK + " He is very smart " + + PREFIX_STATUS + " NON_URGENT" + "'"; public static final String MESSAGE_SUCCESS = "New client added: %1$s"; diff --git a/src/main/java/seedu/address/ui/HelpWindow.java b/src/main/java/seedu/address/ui/HelpWindow.java index 124e0ccb771..841a4b3698f 100644 --- a/src/main/java/seedu/address/ui/HelpWindow.java +++ b/src/main/java/seedu/address/ui/HelpWindow.java @@ -117,8 +117,8 @@ private void initializeCommandTable() { "list", "list"), new CommandSummary("Filter Client List", - "filter [n/] [p/] [e/] [a/
] [j/] [i/] " - + "[t/] [r/] [s/ ]", + "filter [n/ ] [p/ ] [e/ ] [a/
] [j/ ] [i/ ] " + + "[t/ ] [r/ ] [s/ ]", "filter n/ TAN LESHEW t/ gold"), new CommandSummary("View Client Details", "view ", From 62dcdd1947ad7b43e74da4a3ff0537c5853003a4 Mon Sep 17 00:00:00 2001 From: FionaQY Date: Mon, 11 Nov 2024 13:06:40 +0800 Subject: [PATCH 2/6] Update DG --- docs/DeveloperGuide.md | 28 ++++++++++++++++++++++---- docs/diagrams/AddSequenceDiagram.puml | 4 ++-- docs/images/AddSequenceDiagram.png | Bin 32689 -> 97010 bytes 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 86aba570cb5..c42fdad7c36 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -193,9 +193,8 @@ There are a total of 3 checks that occur: - **Flag Validation:** Checks that all required flags are present and that there are no invalid flags. - **Value Validation:** Checks that the values provided for each specified flag are valid. - **Duplicate Check:** Checks that there is no existing client with the same details (same `name`, `phone` and `email`) to prevent duplicate entries. -![AddActivityDiagram-Add_Activity_Diagram.png] -(images%2FAddActivityDiagram-Add_Activity_Diagram.png) +![AddActivityDiagram.png](images%2FAddActivityDiagram.png) Note: The error messages shown will differ based on which check fails. The checks also occur in the same sequential order that they are listed in above. @@ -225,7 +224,7 @@ To execute the delete command, users must specify a valid client index from the 1. The index is a **positive number**. 2. The index is **within the bounds** of the currently viewed client list. -Here is a high-level view of the methods involved when the `delete` command is executed, and the user approves of the deletion after a confirmation prompt is showed. +Here is a high-level view of the methods involved when the user inputs `delete 1`, and approves of the deletion after a confirmation prompt is showed. ![DeleteSequenceDiagram.png](images%2FDeleteSequenceDiagram.png) This follows the activity diagram shown below: @@ -621,7 +620,28 @@ testers are expected to do more *exploratory* testing. 1. Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained. -1. _{ more test cases …​ }_ +### Adding a client + +1. Adding a new client to AgentAssist + + 1. Prerequisites: There must not be an existing client with the same name, phone number and email as the new client. + + 2. Test case: `add n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME`
+ Expected: A client with the given details is added to the end of the list of clients. Details are shown in the results box and any details that are truncated can be seen by using the `view` command with the client's displayed index. + + 3. Test case: `add n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME t/ TIER r/ REMARK s/ Status`
+ Expected: A client with the given details, including the optional ones, is added to the end of the list of clients. Similar to previous. + + 4. Missing compulsory fields: `add n/ NAME p/ PHONE`, `add n/ NAME p/ PHONE e/ EMAIL`, `...`
+ Expected: An error message is shown to user. No client is added. Missing fields are shown in the error message. + + 5. Invalid command formats: `add`, `add n/ NAME p/ INVALID_PHONE e/ E/ EMAIL...`, `...`
+ Expected: An error message is shown to user. No client is added. Error details shown in the status message. + +2. Add an existing client + 1. Prerequisites: There exists a client in AddressBook which has the same name, phone number and email as the client to be added. + 2. Test case: `add n/ SAME_NAME p/ SAME_PHONE e/ SAME_EMAIL a/ ADDRESS j/ JOB i/ INCOME`
+ Expected: An error message indicating that the client already exists is shown to user. No client is added. ### Deleting a client diff --git a/docs/diagrams/AddSequenceDiagram.puml b/docs/diagrams/AddSequenceDiagram.puml index a24c942616f..45f6f95ab03 100644 --- a/docs/diagrams/AddSequenceDiagram.puml +++ b/docs/diagrams/AddSequenceDiagram.puml @@ -17,7 +17,7 @@ end box [-> LogicManager : execute add new client activate LogicManager -LogicManager -> AgentAssistParser : parse add command +LogicManager -> AgentAssistParser : parseCommand(userInput) activate AgentAssistParser create AddCommandParser @@ -27,7 +27,7 @@ activate AddCommandParser AddCommandParser --> AgentAssistParser deactivate AddCommandParser -AgentAssistParser -> AddCommandParser : parse add command +AgentAssistParser -> AddCommandParser : parse(args) activate AddCommandParser create AddCommand diff --git a/docs/images/AddSequenceDiagram.png b/docs/images/AddSequenceDiagram.png index ac90f47ad067204289629aad79eebd1aadf64a5a..856121bb047453bc7c9edf4d5642800119babe87 100644 GIT binary patch literal 97010 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 literal 32689 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 Date: Mon, 11 Nov 2024 13:11:07 +0800 Subject: [PATCH 3/6] Fix spacing --- docs/UserGuide.md | 8 ++++---- .../java/seedu/address/logic/commands/EditCommand.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index caf737e6947..1ffbeb4fcd3 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -448,7 +448,7 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio The following mandatory prefixes are missing: [...] Invalid command format! add: Adds a client to the address book. Parameters: n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME [t/ TIER]... - [r/REMARK]...[s/STATUS]... + [r/ REMARK]...[s/ STATUS]... Example: 'add n/ John Doe p/ 98765432 e/ johnd@example.com a/ 311, Clementi Ave 2, #02-25 j/ doctor i/ 300 t/ GOLD r/ He is very smart s/ NON_URGENT' ``` - Error caused by invalid values for some fields @@ -457,7 +457,7 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio Invalid command format! ... add: Adds a client to the address book. Parameters: n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME [t/ TIER]... - [r/REMARK]...[s/STATUS]... + [r/ REMARK]...[s/ STATUS]... Example: 'add n/ John Doe p/ 98765432 e/ johnd@example.com a/ 311, Clementi Ave 2, #02-25 j/ doctor i/ 300 t/ GOLD r/ He is very smart s/ NON_URGENT' ``` @@ -532,7 +532,7 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio edit: Edits the details of the client identified by the index number used in the displayed client list. Existing values will be overwritten by the input values. Any fields unspecified will not be modified. Required Parameters: INDEX (must be a positive integer) Optional Parameters: [n/ NAME] [p/ PHONE] [e/ EMAIL] [a/ ADDRESS] [j/ JOB] [i/ INCOME] [t/ TIER] [rn/ NEW REMARK] [ra/ ADD-ON TO EXISTING REMARK] [s/ STATUS] - Example Usage: 'edit 1 p/91234567 e/johndoe@example.com' + Example Usage: 'edit 1 p/ 91234567 e/ johndoe@example.com' ``` - Error caused by invalid values for some fields - Message: @@ -544,7 +544,7 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio > 💡 **Pro Tip:** > No need to worry about duplicate indexes—AgentAssist guarantees that every client has a unique index automatically. - **Note:** If the value for `Tier`, `Status` or `REMARK` is the default value (`NA`), they will not be shown. - - This can be used to remove all remarks for a given client: `edit rn/NA` . + - This can be used to remove all remarks for a given client: `edit rn/ NA` . diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index e8df46a0b4b..5edb64171a2 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -51,8 +51,8 @@ public class EditCommand extends Command { + "[" + PREFIX_APPEND_REMARK + " ADD-ON TO EXISTING REMARK] " + "[" + PREFIX_STATUS + " STATUS] \n" + "Example Usage: '" + COMMAND_WORD + " 1 " - + PREFIX_PHONE + "91234567 " - + PREFIX_EMAIL + "johndoe@example.com'"; + + PREFIX_PHONE + " 91234567 " + + PREFIX_EMAIL + " johndoe@example.com'"; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the client identified " + "by the index number used in the displayed client list. " From 787760a08c11f8b690d239cd9c87119d42603540 Mon Sep 17 00:00:00 2001 From: FionaQY Date: Mon, 11 Nov 2024 13:12:49 +0800 Subject: [PATCH 4/6] Fix bugs --- docs/DeveloperGuide.md | 4 +--- docs/UserGuide.md | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c42fdad7c36..0979bc475b4 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -312,9 +312,7 @@ These requirements can be restrictive for agents who may prefer more flexible fi **Status:** Scheduled for future release due to current timeline priorities. ### 7. Prevent Duplicate Client Entries by Standardizing Name Formatting -**Current issue:** Client names are currently considered distinct if they contain minor differences in whitespace (e.g., `John Doe` vs. `John Doe`). This can lead to duplicate entries due to minor typos when using the `add` or `edit` commands. - -This can result in duplication of clients when using the `add` or `edit` command due to typos. +**Current issue:** Duplicate client entries can occur when minor differences in whitespace are present in names due to user input errors (e.g., `John Doe` vs. `John Doe`). These variations, often caused by unintentional typos when using the `add` or `edit` commands, are currently treated as distinct entries. **Proposed Enhancement:** Standardize client names by trimming excess whitespace from each part of the name before storing and comparing entries. This ensures that variations in spacing do not create duplicates. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 1ffbeb4fcd3..eec06d40cbf 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -349,7 +349,7 @@ Some initial commands to try: * `add n/ Jane Doe p/ 87654321 e/ jane@example.com a/ 123 Jane Road j/ doctor i/ 120000`: Adds Jane Doe to your database with detailed contact information, job title, and income. **Editing a Client's Information** -* `edit 1 p/ 12345678`: Updates the phone number of the first client in your list to `12345678`. +* `edit 1 p/ 92345678`: Updates the phone number of the first client in your list to `92345678`. * `edit 4 rn/ Updated remark(s) here`: Replaces the remark(s) of the fourth client with "Updated remark(s) here". **Removing a Client** From 1c1d9ea28bc82dc7f8b9fef1454c0b7f2b57ef83 Mon Sep 17 00:00:00 2001 From: FionaQY Date: Mon, 11 Nov 2024 14:48:15 +0800 Subject: [PATCH 5/6] Standardise brackets --- docs/DeveloperGuide.md | 10 +++++----- docs/UserGuide.md | 12 +++++------ .../address/logic/commands/AddCommand.java | 18 ++++++++--------- .../address/logic/commands/EditCommand.java | 20 +++++++++---------- .../address/logic/commands/FilterCommand.java | 3 ++- 5 files changed, 32 insertions(+), 31 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0979bc475b4..970a90fbb2f 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -624,21 +624,21 @@ testers are expected to do more *exploratory* testing. 1. Prerequisites: There must not be an existing client with the same name, phone number and email as the new client. - 2. Test case: `add n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME`
+ 2. Test case: `add n/ p/ e/ a/
j/ i/ `
Expected: A client with the given details is added to the end of the list of clients. Details are shown in the results box and any details that are truncated can be seen by using the `view` command with the client's displayed index. - 3. Test case: `add n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME t/ TIER r/ REMARK s/ Status`
+ 3. Test case: `add n/ p/ e/ a/
j/ i/ t/ r/ s/ Status`
Expected: A client with the given details, including the optional ones, is added to the end of the list of clients. Similar to previous. - 4. Missing compulsory fields: `add n/ NAME p/ PHONE`, `add n/ NAME p/ PHONE e/ EMAIL`, `...`
+ 4. Missing compulsory fields: `add n/ p/ `, `add n/ p/ e/ `, `...`
Expected: An error message is shown to user. No client is added. Missing fields are shown in the error message. - 5. Invalid command formats: `add`, `add n/ NAME p/ INVALID_PHONE e/ E/ EMAIL...`, `...`
+ 5. Invalid command formats: `add`, `add n/ p/ e/ E/ ...`, `...`
Expected: An error message is shown to user. No client is added. Error details shown in the status message. 2. Add an existing client 1. Prerequisites: There exists a client in AddressBook which has the same name, phone number and email as the client to be added. - 2. Test case: `add n/ SAME_NAME p/ SAME_PHONE e/ SAME_EMAIL a/ ADDRESS j/ JOB i/ INCOME`
+ 2. Test case: `add n/ SAME_NAME p/ SAME_PHONE e/ SAME_EMAIL a/
j/ i/ `
Expected: An error message indicating that the client already exists is shown to user. No client is added. ### Deleting a client diff --git a/docs/UserGuide.md b/docs/UserGuide.md index eec06d40cbf..500f60d70b2 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -447,8 +447,8 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio ``` The following mandatory prefixes are missing: [...] Invalid command format! - add: Adds a client to the address book. Parameters: n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME [t/ TIER]... - [r/ REMARK]...[s/ STATUS]... + add: Adds a client to the address book. Parameters: n/ p/ e/ a/
j/ i/ [t/ ]... + [r/ ]...[s/ ]... Example: 'add n/ John Doe p/ 98765432 e/ johnd@example.com a/ 311, Clementi Ave 2, #02-25 j/ doctor i/ 300 t/ GOLD r/ He is very smart s/ NON_URGENT' ``` - Error caused by invalid values for some fields @@ -456,8 +456,8 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio ``` Invalid command format! ... - add: Adds a client to the address book. Parameters: n/ NAME p/ PHONE e/ EMAIL a/ ADDRESS j/ JOB i/ INCOME [t/ TIER]... - [r/ REMARK]...[s/ STATUS]... + add: Adds a client to the address book. Parameters: n/ p/ e/ a/
j/ i/ [t/ ]... + [r/ ]...[s/ ]... Example: 'add n/ John Doe p/ 98765432 e/ johnd@example.com a/ 311, Clementi Ave 2, #02-25 j/ doctor i/ 300 t/ GOLD r/ He is very smart s/ NON_URGENT' ``` @@ -531,7 +531,7 @@ For detailed explanations of each flag and acceptable arguments, refer to Sectio Invalid command format! edit: Edits the details of the client identified by the index number used in the displayed client list. Existing values will be overwritten by the input values. Any fields unspecified will not be modified. Required Parameters: INDEX (must be a positive integer) - Optional Parameters: [n/ NAME] [p/ PHONE] [e/ EMAIL] [a/ ADDRESS] [j/ JOB] [i/ INCOME] [t/ TIER] [rn/ NEW REMARK] [ra/ ADD-ON TO EXISTING REMARK] [s/ STATUS] + Optional Parameters: [n/ ] [p/ ] [e/ ] [a/
] [j/ ] [i/ ] [t/ ] [rn/ ] [ra/ ] [s/ ] Example Usage: 'edit 1 p/ 91234567 e/ johndoe@example.com' ``` - Error caused by invalid values for some fields @@ -724,7 +724,7 @@ For detailed explanations for the matching criteria of each flag and the accepta Invalid command format! filter: Searches for all clients whose specified field contains the given substring (case-insensitive) and displays the results in a numbered list. Parameters: / - Flags: n/ NAME, p/ PHONE, e/ EMAIL, a/ ADDRESS, j/ JOB, i/ (=/) INCOME r/ REMARK t/ TIER s/ STATUS + Flags: n/ , p/ , e/ , a/
, j/ , i/ (=/) r/ t/ s/ Example: filter n/ Alice p/ 9111222 This will find all clients whose names contain 'Alice' and whose phone number is '91112222'. ``` diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index c668d6449a4..87f48b1d31e 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -28,15 +28,15 @@ public class AddCommand extends Command { public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a client to the address book. " + "Parameters: " - + PREFIX_NAME + " NAME " - + PREFIX_PHONE + " PHONE " - + PREFIX_EMAIL + " EMAIL " - + PREFIX_ADDRESS + " ADDRESS " - + PREFIX_JOB + " JOB " - + PREFIX_INCOME + " INCOME " - + "[" + PREFIX_TIER + " TIER]...\n" - + "[" + PREFIX_REMARK + " REMARK]..." - + "[" + PREFIX_STATUS + " STATUS]...\n" + + PREFIX_NAME + " " + + PREFIX_PHONE + " " + + PREFIX_EMAIL + " " + + PREFIX_ADDRESS + "
" + + PREFIX_JOB + " " + + PREFIX_INCOME + " " + + "[" + PREFIX_TIER + " ]...\n" + + "[" + PREFIX_REMARK + " ]..." + + "[" + PREFIX_STATUS + " ]...\n" + "Example: '" + COMMAND_WORD + " " + PREFIX_NAME + " John Doe " + PREFIX_PHONE + " 98765432 " diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 5edb64171a2..a1d046152f5 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -40,16 +40,16 @@ public class EditCommand extends Command { public static final String COMMAND_WORD = "edit"; public static final String MESSAGE_USAGE_OPTIONAL_PARAMETERS = "Optional Parameters: " - + "[" + PREFIX_NAME + " NAME] " - + "[" + PREFIX_PHONE + " PHONE] " - + "[" + PREFIX_EMAIL + " EMAIL] " - + "[" + PREFIX_ADDRESS + " ADDRESS] " - + "[" + PREFIX_JOB + " JOB] " - + "[" + PREFIX_INCOME + " INCOME] " - + "[" + PREFIX_TIER + " TIER] " - + "[" + PREFIX_NEW_REMARK + " NEW REMARK] " - + "[" + PREFIX_APPEND_REMARK + " ADD-ON TO EXISTING REMARK] " - + "[" + PREFIX_STATUS + " STATUS] \n" + + "[" + PREFIX_NAME + " ] " + + "[" + PREFIX_PHONE + " ] " + + "[" + PREFIX_EMAIL + " ] " + + "[" + PREFIX_ADDRESS + "
] " + + "[" + PREFIX_JOB + " ] " + + "[" + PREFIX_INCOME + " ] " + + "[" + PREFIX_TIER + " ] " + + "[" + PREFIX_NEW_REMARK + " ] " + + "[" + PREFIX_APPEND_REMARK + " ] " + + "[" + PREFIX_STATUS + " ] \n" + "Example Usage: '" + COMMAND_WORD + " 1 " + PREFIX_PHONE + " 91234567 " + PREFIX_EMAIL + " johndoe@example.com'"; diff --git a/src/main/java/seedu/address/logic/commands/FilterCommand.java b/src/main/java/seedu/address/logic/commands/FilterCommand.java index 31a0470a9ba..76a9a369c77 100644 --- a/src/main/java/seedu/address/logic/commands/FilterCommand.java +++ b/src/main/java/seedu/address/logic/commands/FilterCommand.java @@ -20,7 +20,8 @@ public class FilterCommand extends Command { public static final String MESSAGE_USAGE = COMMAND_WORD + ": Searches for all clients whose specified field " + "contains the given substring (case-insensitive) and displays the results in a numbered list.\n" + "Parameters: / \n" - + "Flags: n/ NAME, p/ PHONE, e/ EMAIL, a/ ADDRESS, j/ JOB, i/ (=/) INCOME r/ REMARK t/ TIER s/ STATUS\n" + + "Flags: n/ , p/ , e/ , a/
, j/ , i/ (=/) r/ " + + "t/ s/ \n" + "Example: '" + COMMAND_WORD + " n/ Alice" + " p/ 91112222'\n" + "This will find all clients whose names contain 'Alice' and whose phone number is '91112222'."; From 1127932542634f96aa3b78cfcf9f250ae5184613 Mon Sep 17 00:00:00 2001 From: FionaQY Date: Mon, 11 Nov 2024 15:27:02 +0800 Subject: [PATCH 6/6] Update brackets --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 970a90fbb2f..f49b710d162 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -638,7 +638,7 @@ testers are expected to do more *exploratory* testing. 2. Add an existing client 1. Prerequisites: There exists a client in AddressBook which has the same name, phone number and email as the client to be added. - 2. Test case: `add n/ SAME_NAME p/ SAME_PHONE e/ SAME_EMAIL a/
j/ i/ `
+ 2. Test case: `add n/ p/ e/ a/
j/ i/ ` (where , and are the name, phone number and email of an existing client)
Expected: An error message indicating that the client already exists is shown to user. No client is added. ### Deleting a client