diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 5f9a0d1d1f8..25cb0be2538 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -39,19 +39,27 @@ Here are some descriptions of the words we use throughout the User Guide:
# Features
-![Ui1](images/Ui1.png)
-
### Add lead
- What it does: Add potential leads and their basic information, e.g. name, age, year of study, major, etc.
-- Command format: `addlead n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG]...`.
+- Command format: `addlead n/NAME p/PHONE e/EMAIL a/ADDRESS m/MEETING_TIME [t/TAG]...`.
- Example usage: `Example: addlead n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 t/classmate`.
-- Acceptable values for each parameter:
- - `NAME`: can contain any character.
- - `PHONE`: any valid 8-digit integer.
+- Acceptable values for each compulsory parameter:
+ - `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`
- - `ADDRESS`: can contain any character.
- - `TAG`: can contain any character.
+ - 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
+ - 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:
+ - `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`
+ - `TAG`: can contain any alphanumeric character, must not be blank if any tag is declared.
- Precise expected outputs when the command succeeds:
@@ -81,16 +89,32 @@ Example: addlead n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2
### Add Client
- What it does: Add potential clients and their basic information, e.g. name, age, year of study, major, etc.
-- Command format: `addclient n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG]...`.
-- Example usage: `Example: addclient n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 t/classmate`.
-- Acceptable values for each parameter:
- - `NAME`: can contain any character.
- - `PHONE`: any valid 8-digit integer.
+- Command format: `addclient n/NAME p/PHONE e/EMAIL a/ADDRESS [m/MEETING_TIME] [t/TAG]...`.
+- Example usage: `Example: 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`.
+- Acceptable values for each compulsory parameter:
+ - `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`
- - `ADDRESS`: can contain any character.
- - `TAG`: can contain any character.
+ - 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
+ - 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:
+ - `MEETING_TIME`: only contains date in the format of `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`
+ - `TAG`: can contain any alphanumeric character, must not be blank if any tag is declared.
+
- Precise expected outputs when the command succeeds:
+
+
+
Before using addclient command
+
+
After using addclient command
@@ -101,7 +125,7 @@ Example: addlead n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2
```
Invalid command format!
addclient: Adds a client to the address book. Parameters: n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG]...
-Example: addclient n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 t/classmate
+Example: 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 clients
@@ -172,11 +196,22 @@ In output section of the
- What it does: Deletes a lead from your list of leads.
- Command format: `delete INDEX`.
- Example usage: `delete 1`.
+
+
+
+
Before delete
+
+
+
+
+
After delete
+
+
- Acceptable values for `INDEX` parameter:
- Must be an integer from `1` to the last index of the leads list
- Precise expected outputs when the command succeeds:
-`Lead deleted:
`
+`Deleted person: `
- Precise expected outputs when the command fails:
@@ -220,25 +255,85 @@ 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 for lead
+### Delete meeting time
- What it does: Delete a meeting time for meetings that has been cancelled or postponed.
-- Command format: `deletemeeting --lead --id `
-- Example usage: `deletemeeting --lead 1 --id 1`
+- Command format: `deletemeeting INDEX`
+- Example usage: `deletemeeting 1`
+
+
+
+
Before using deletemeeting
+
+
+
+
+
After using deletemeeting
+
+
- Acceptable values for each parameter:
- - `lead`: Any integer from `1` to the last index of the leads list
- - `id`: Any integer from `1` to the last index of the list
+ - `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:
+```
+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
+```
-`Meeting time deleted from : `
-- Precise expected outputs when the command fails:
+### Edit
+
+- What it does: Edit the details of a lead or client.
+- Command format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...`
+- Example usage: `edit 1 n/John Doe p/98765432
+
+
+
+
Before using edit
+
+
+
+
+
After using edit
+
-`Meeting time failed to be deleted. Please enter a valid lead id or meeting time`
+- 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)
+ - `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.
+ - 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
+ - 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.
+ - `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`.
+ - `TAG`: can contain any alphanumeric character, must not be blank if any tag is declared.
+- Precise expected outputs when the command succeeds:
+```
+Edited Person:
+```
+- Precise expected outputs when the command fails:
+```
+Invalid command format!
+edit: Edits the details of the person identified by the index number used in the displayed person list. Existing values will be overwritten by the input values.
+Parameters: INDEX (must be a positive integer) [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [m/MEETING_TIME] [t/TAG]...
+Example: edit 1 p/91234567 e/johndoe@example.com
+```
### Sort meeting time
@@ -291,4 +386,3 @@ from current date to ensure a followup by the user
- Precise expected outputs when the command fails:
`The person index provided is invalid`
-
diff --git a/docs/images/List.png b/docs/images/List.png
index 11630bf8433..e52cf4621ae 100644
Binary files a/docs/images/List.png and b/docs/images/List.png differ
diff --git a/docs/images/Listclient.png b/docs/images/Listclient.png
index 97290b39b29..f7f44cf301d 100644
Binary files a/docs/images/Listclient.png and b/docs/images/Listclient.png differ
diff --git a/docs/images/Listlead.png b/docs/images/Listlead.png
index bf2e14200b5..7a7297ff341 100644
Binary files a/docs/images/Listlead.png and b/docs/images/Listlead.png differ
diff --git a/docs/images/addclient.png b/docs/images/addclient.png
index 331ee029d2f..03ec5a1221f 100644
Binary files a/docs/images/addclient.png and b/docs/images/addclient.png differ
diff --git a/docs/images/afterdeletecommand.png b/docs/images/afterdeletecommand.png
new file mode 100644
index 00000000000..83305c9e095
Binary files /dev/null and b/docs/images/afterdeletecommand.png differ
diff --git a/docs/images/afterdeletemeeting.png b/docs/images/afterdeletemeeting.png
new file mode 100644
index 00000000000..55136997b1d
Binary files /dev/null and b/docs/images/afterdeletemeeting.png differ
diff --git a/docs/images/aftereditcommand.png b/docs/images/aftereditcommand.png
new file mode 100644
index 00000000000..c355944aabd
Binary files /dev/null and b/docs/images/aftereditcommand.png differ
diff --git a/docs/images/beforeaddclient.png b/docs/images/beforeaddclient.png
new file mode 100644
index 00000000000..12d8cd5c0e4
Binary files /dev/null and b/docs/images/beforeaddclient.png differ
diff --git a/docs/images/beforedeletemeeting.png b/docs/images/beforedeletemeeting.png
new file mode 100644
index 00000000000..299bcdce7d8
Binary files /dev/null and b/docs/images/beforedeletemeeting.png differ