Skip to content

Commit

Permalink
Merge pull request #169 from ZHANGTIANYAO1/update-ug-constraints
Browse files Browse the repository at this point in the history
Update Constrains
  • Loading branch information
ZHANGTIANYAO1 authored Apr 13, 2024
2 parents a89d292 + 6a60bd5 commit 7c5c131
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 39 deletions.
125 changes: 88 additions & 37 deletions docs/UserGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ layout: page
title: User Guide
---

Career Connect Bot (CCBot) is a **desktop app for managing job interview contacts, optimized for use via a Command Line
Interface**
(CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, CCBot can get your
Career Connect Bot (CCBot) is a **desktop app for managing job interview contacts, optimized for use via a Command Line
Interface**
(CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, CCBot can get your
contact management tasks done faster than traditional GUI apps.

* Table of Contents
Expand All @@ -31,9 +31,9 @@ contact management tasks done faster than traditional GUI apps.
* `list` : Lists all contacts.

* `add cn/Google n/John Doe p/98765432 e/[email protected] a/311, Clementi Ave 2, #02-25 tt/121220221400
i/remote work s/5000 pl/Java t/friends t/referral pri/2` :
i/remote work s/5000 pl/Java t/friends t/referral pri/2` :
Adds a contact named `John Doe` to the Address Book.

* `delete 3` : Deletes the 3rd contact shown in the current list.

* `clear` : Deletes all contacts.
Expand All @@ -48,7 +48,7 @@ contact management tasks done faster than traditional GUI apps.
<span style="display: inline-block; width: 20px; height: 20px; background-color: #ff0000;"></span>

**<span style="color:#E11F1F;">0 - High Priority</span>** - This is the highest priority.
**<span style="color:#E11F1F;">0 - High Priority</span>** - This is the highest priority.

<span style="display: inline-block; width: 20px; height: 20px; background-color: #E18D1F;"></span>

Expand Down Expand Up @@ -105,7 +105,7 @@ Format: `help`

Adds a person to the address book.

Format: `add cn/COMPANY_NAME n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [tt/INTERVIEW-TIME] [i/INFO]
Format: `add cn/COMPANY_NAME n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [tt/INTERVIEW-TIME] [i/INFO]
[s/SALARY] [pl/PROGRAMMING-LANGUAGE] [t/TAG] [pri/PRIORITY(0-4)] …​`


Expand All @@ -119,6 +119,19 @@ i/Birthday: 12 May 2001 s/5000 pl/Java t/friends t/owesMoney pri/2`
* `add cn/ Amazon n/Betsy Crowe p/81234567 e/[email protected] a/Newgate Prison tt/121220241200
i/Remote work s/4000 pl/Python t/criminal pri/4`

#### Constraint
* The `COMPANY_NAME` should be less than 100 chracters, and it should not be blank.
* The `NAME` should only contain alphanumeric characters and spaces, and it should not be blank.
* The `PHONE_NUMBER` should only contain numbers, and it should be at least 3 digits long.
* The `EMAIL` should be a valid email address.
* The `ADDRESS` can take any values, and it should not be blank.
* The `SALARY` should only contain numbers, with range [0, 2147483647] or two pure digital numbers with '-' in between. Both digital numbers should be within the range [0, 2147483647].
* The `PROGRAMMING_LANGUAGE` should be alphanumeric and may contain some special characters (+ and #), and must be less than 50 characters.
* The `TAG` should be alphanumeric.
* The `PRIORITY` should be a number between 0 and 4.
* The `INTERVIEW_TIME` should be in the format `ddMMyyyyHHmm`.
* The `INFO` can take any values, and it should not be blank.

### Adding a resume: `resume`

Adds a resume to the addressbook.
Expand All @@ -129,6 +142,15 @@ Examples:
* `resume cn/Google n/John Doe p/98765432 e/[email protected] s/3000 edu/NUS a/311, Clementi Ave 2, #02-25 pl/Java pl/C++`
* `resume cn/Apple n/Amy Birch p/87654321 e/[email protected] s/3000 edu/NUS a/311, Clementi Ave 2, #02-25`

#### Constraint
* The `COMPANY_NAME` should be less than 100 chracters, and it should not be blank.
* The `NAME` should only contain alphanumeric characters and spaces, and it should not be blank.
* The `PHONE_NUMBER` should only contain numbers, and it should be at least 3 digits long.
* The `EMAIL` should be a valid email address.
* The `ADDRESS` can take any values, and it should not be blank.
* The `SALARY` should only contain numbers, with range [0, 2147483647] or two pure digital numbers with '-' in between. Both digital numbers should be within the range [0, 2147483647].
* The `EDUCATION` should only contain alphanumeric characters and spaces, and it should not be blank.

### Listing all persons : `list`

Shows a list of all persons in the address book.
Expand All @@ -145,14 +167,27 @@ Format: `edit INDEX [cn/COMPANY_NAME] [n/NAME] [p/PHONE_NUMBER] [e/EMAIL a/ADDRE
* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​
* At least one of the optional fields must be provided.
* Existing values will be updated to the input values.
* When editing tags and info, the existing tags and info of the person will be removed i.e adding of tags and info are
* When editing tags and info, the existing tags and info of the person will be removed i.e adding of tags and info are
not cumulative.
* You can remove all the person’s tags by typing `t/` without specifying any tags after it.
* You can remove all the person’s info by typing `i/` without specifying any info after it.
Examples:
* `edit 1 p/91234567 e/[email protected]` Edits the phone number and email address of the 1st person to be `91234567` and `[email protected]` respectively.
* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.

#### Constraint
* The `COMPANY_NAME` should be less than 100 chracters, and it should not be blank.
* The `NAME` should only contain alphanumeric characters and spaces, and it should not be blank.
* The `PHONE_NUMBER` should only contain numbers, and it should be at least 3 digits long.
* The `EMAIL` should be a valid email address.
* The `ADDRESS` can take any values, and it should not be blank.
* The `SALARY` should only contain numbers, with range [0, 2147483647] or two pure digital numbers with '-' in between. Both digital numbers should be within the range [0, 2147483647].
* The `PROGRAMMING_LANGUAGE` should be alphanumeric and may contain some special characters (+ and #), and must be less than 50 characters.
* The `TAG` should be alphanumeric.
* The `PRIORITY` should be a number between 0 and 4.
* The `INTERVIEW_TIME` should be in the format `ddMMyyyyHHmm`.
* The `INFO` can take any values, and it should not be blank.

### Locating persons by name / company name: `find`

Finds persons whose names / company names contain any of the given keywords.
Expand Down Expand Up @@ -201,8 +236,8 @@ Format: `filter tt/INTERVIEW_TIME_RANGE [MORE_INTERVIEW_TIME_RANGE]...`
* `from/INTERVIEWTIME-INTERVIEWTIME`

Examples:
* `filter tt/before/010120200000 from/010120220000-010120230000` returns persons with interview times before 1 Jan
2020, 1200am `(010120200000)` or persons with interview times within 1 Jan 2022, 1200am `(010120220000)` and 1 Jan
* `filter tt/before/010120200000 from/010120220000-010120230000` returns persons with interview times before 1 Jan
2020, 1200am `(010120200000)` or persons with interview times within 1 Jan 2022, 1200am `(010120220000)` and 1 Jan
2023, 1200am `(010120230000)`.
* `filter tt/after/010120220000` returns persons with interview times after 1 Jan 2022, 1200am `(010120220000)`.

Expand All @@ -213,15 +248,15 @@ Format: `filter s/SALARY_RANGE [MORE_SALARY_RANGE]...`
* Only the salaries of each of the contacts are searched.
* Persons with salaries within the range provided will be returned.
* Valid `SALARY_RANGE` includes:
* Valid `SALARY`
* Valid `SALARY`
* `>=INTEGER`
* `<=INTEGER`

where `INTEGER` is a number between 0 and 2147483647.

Examples:
* `filter s/5000` returns persons with salaries of $5000.
* `filter s/2000-5000 >=7000` returns persons with salaries that contain any number from $2000 to $5000 or with
* `filter s/2000-5000 >=7000` returns persons with salaries that contain any number from $2000 to $5000 or with
salaries more than or equals to $7000. (e.g. persons with salaries `3000-6000`, `4000`, `8000-20900` are returned).

#### Filter by programming language: `filter pl/`
Expand Down Expand Up @@ -337,31 +372,47 @@ This value cannot be modified or added by the `edit` or `add` commands.

## Command summary

Action | Format, Examples
--------|------------------
**Add** | `add cn/COMPANY_NAME n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [tt/INTERVIEW-TIME] [i/INFO] [s/SALARY] [pl/PROGRAMMING-LANGUAGE] [t/TAG] [pri/PRIORITY(0-4)]...` <br> e.g., `add n/James Ho p/22224444 e/[email protected] a/123, Clementi Rd, 1234665 t/friend t/colleague`
**Clear** | `clear`
**Delete** | `delete INDEX`<br> e.g., `delete 3`
**Edit** | `edit INDEX [cn/COMPANY_NAME] [n/NAME] [p/PHONE_NUMBER] [e/EMAIL a/ADDRESS] [tt/INTERVIEW-TIME] [i/INFO] [s/SALARY] [pl/PROGRAMMING-LANGUAGE] [t/TAG] [pri/PRIORITY(0-4)]…​`<br> e.g.,`edit 2 n/James Lee e/[email protected]`
**Find** | `find KEYWORD [MORE_KEYWORDS]`<br> e.g., `find James Jake`
**Filter**| `filter t/TAG [MORE TAGS]...`<br> e.g., `filter t/manager HR`<br> `filter tt/INTERVIEW_TIME_RANGE [MORE INTERVIEW_TIME_RANGE]...`<br> e.g., `filter tt/before/010120200000 from/010120220000-010120230000 after/010120220000`<br> `filter s/SALARY_RANGE [MORE SALARY_RANGE]...`<br> e.g., `filter s/2000-5000 >=7000` <br> `filter pl/PROGRAMMING_LANGUAGE [MORE PROGRAMMING_LANGUAGE]...`<br> e.g., `filter pl/python C`
**List** | `list`
**Help** | `help`
**Sort** | `sort` or `sort rev/ [pri/PRIORITY] [n/NAME] [cn/COMPANY_NAME] [s/SALARY] [tt/INTERVIEW_TIME] [jd/JOB_DIFFICULTY]` <br> e.g., `sort pri/`<br> e.g., `sort rev/ tt/`
**Resume**|`resume cn/COMPANY_NAME n/NAME p/PHONE e/EMAIL edu/EDUCATION s/SALARY [pl/SKILLS]` <br> e.g., `resume cn/Google n/John Doe p/98765432 e/[email protected] s/3000 edu/NUS a/311, Clementi Ave 2, #02-25 pl/Java pl/C++ `
| Action | Format, Examples |
|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Add** | `add cn/COMPANY_NAME n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [tt/INTERVIEW-TIME] [i/INFO] [s/SALARY] [pl/PROGRAMMING-LANGUAGE] [t/TAG] [pri/PRIORITY(0-4)]...` <br> e.g., `add n/James Ho p/22224444 e/[email protected] a/123, Clementi Rd, 1234665 t/friend t/colleague` |
| **Clear** | `clear` |
| **Delete** | `delete INDEX`<br> e.g., `delete 3` |
| **Edit** | `edit INDEX [cn/COMPANY_NAME] [n/NAME] [p/PHONE_NUMBER] [e/EMAIL a/ADDRESS] [tt/INTERVIEW-TIME] [i/INFO] [s/SALARY] [pl/PROGRAMMING-LANGUAGE] [t/TAG] [pri/PRIORITY(0-4)]…​`<br> e.g.,`edit 2 n/James Lee e/[email protected]` |
| **Find** | `find KEYWORD [MORE_KEYWORDS]`<br> e.g., `find James Jake` |
| **Filter** | `filter t/TAG [MORE TAGS]...`<br> e.g., `filter t/manager HR`<br> `filter tt/INTERVIEW_TIME_RANGE [MORE INTERVIEW_TIME_RANGE]...`<br> e.g., `filter tt/before/010120200000 from/010120220000-010120230000 after/010120220000`<br> `filter s/SALARY_RANGE [MORE SALARY_RANGE]...`<br> e.g., `filter s/2000-5000 >=7000` <br> `filter pl/PROGRAMMING_LANGUAGE [MORE PROGRAMMING_LANGUAGE]...`<br> e.g., `filter pl/python C` |
| **List** | `list` |
| **Help** | `help` |
| **Sort** | `sort` or `sort rev/ [pri/PRIORITY] [n/NAME] [cn/COMPANY_NAME] [s/SALARY] [tt/INTERVIEW_TIME] [jd/JOB_DIFFICULTY]` <br> e.g., `sort pri/`<br> e.g., `sort rev/ tt/` |
| **Resume** | `resume cn/COMPANY_NAME n/NAME p/PHONE e/EMAIL edu/EDUCATION s/SALARY [pl/SKILLS]` <br> e.g., `resume cn/Google n/John Doe p/98765432 e/[email protected] s/3000 edu/NUS a/311, Clementi Ave 2, #02-25 pl/Java pl/C++ ` |

## CLI Syntax Summary

Character | Explaination, Examples
----------|------------------
**n/**|Name of the contact
**cn/**|The company name
**tt/**|The time of the interview
**s/**|The salary
**a/**|The place of residence
**e/**|The email address
**i/**|Any additional info
**pri/**|Priority of the job
**edu/**|Education level
**pl/**|Programming languages
**jd/**|The job difficulty (only for `sort` command)
| Character | Explaination, Examples |
|-----------|----------------------------------------------|
| **n/** | Name of the contact |
| **cn/** | The company name |
| **tt/** | The time of the interview |
| **s/** | The salary |
| **a/** | The place of residence |
| **e/** | The email address |
| **i/** | Any additional info |
| **pri/** | Priority of the job |
| **edu/** | Education level |
| **pl/** | Programming languages |
| **jd/** | The job difficulty (only for `sort` command) |

## Constraints Summary
| Field | Constraint |
|----------------------|----------------------------------------------------------------------------------------------------------|
| `COMPANY_NAME` | Should be less than 100 characters, and it should not be blank. |
| `NAME` | Should only contain alphanumeric characters and spaces, and it should not be blank. |
| `PHONE_NUMBER` | Should only contain numbers, and it should be at least 3 digits long. |
| `EMAIL` | Should be a valid email address. |
| `ADDRESS` | Can take any values, and it should not be blank. |
| `SALARY` | Should only contain numbers, with range [0, 2147483647] or two pure digital numbers with '-' in between. Both digital numbers should be within the range [0, 2147483647]. |
| `PROGRAMMING_LANGUAGE` | Should be alphanumeric and may contain some special characters (+ and #), and must be less than 50 characters. |
| `TAG` | Should be alphanumeric. |
| `PRIORITY` | Should be a number between 0 and 4. |
| `INTERVIEW_TIME` | Should be in the format `ddMMyyyyHHmm`. |
| `INFO` | Can take any values, and it should not be blank. |
| `EDUCATION` | Should only contain alphanumeric characters and spaces, and it should not be blank. |
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ layout: page
title: CCBOT
---

[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)
[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)
[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T08-3/tp/graph/badge.svg?token=0RG4SRDBHW)](https://codecov.io/gh/AY2324S2-CS2103T-T08-3/tp)


Expand Down
Loading

0 comments on commit 7c5c131

Please sign in to comment.