Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Constrains #169

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading