diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1dba2ae99d9..ef85df7a4d7 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -24,7 +24,6 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/abdulrahmanalrammah)] -[[portfolio](team/abdulrahmanalrammah.md)] * Role: Developer * Responsibilities: Documentation diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0d45254a423..dea887d813a 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -204,7 +204,7 @@ A current contact can be assigned as another person's emergency contact. It is a -A person will then store an EmergencyContactablePerson as their emergency contact. +A person will then store a ContactablePerson as their emergency contact. -------------------------------------------------------------------------------------------------------------------- @@ -241,10 +241,10 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | Priority | As a …​ | I want to …​ | So that I can…​ | |----------|-------------------------------------------|----------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| -| `* * *` | social worker | delete a contact | remove the contact when I no longer serve them so that the contact list does not get too long | -| `* * *` | social worker/new user | add contact with phone number | remember the person i serve | +| `* * *` | social worker | delete a contact | remove the contact when I no longer serve them so that the contact list does not get too long | +| `* * *` | social worker/new user | add contact with phone number | remember the person I serve | | `* * *` | social worker/new user | add address | easily look up without needed to look up database/files | -| `* * *` | social worker | view my list of contacts | so that i can see the beneficiaries i serve | +| `* * *` | social worker | view my list of contacts | see the beneficiaries I serve | | `* *` | overwhelmed with many households | take note of how long it has been since I visited each house | ensure that no house gets forgotten in my scheduling | | `* *` | new user learning the interface | check out basic commands that are frequently used with a help command | learn the basic usage of the program more quickly | | `* *` | user with multiple contacts per household | tag multiple users to be from the same household | simplify the process of contacting other household members | @@ -252,10 +252,10 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* *` | social worker | add alternative contact method | add a contact for elderly who do not have a phone | | `* *` | social worker/expert user | look for emergency contact quickly | inform next-of-kin when something happen | | `* *` | social worker/expert user | add family contact | know how many people in the household | -| `* *` | social worker/expert user | add notes | remember if i need to take precaution before visiting the person/family or preparations i need to make | -| `* *` | social worker/expert user | sort contacts by lexicographical order | find contact quickly if i remember the name | +| `* *` | social worker/expert user | add notes | remember if I need to take precaution before visiting the person/family or preparations i need to make | +| `* *` | social worker/expert user | sort contacts by lexicographical order | find contact quickly if I remember the name | | `* *` | social worker/expert user | search through contacts using keywords | find contact quickly based on key words within the contact information | -| `* *` | social worker/expert user | add alternative phone number | incase beneficiary cannot be reached | +| `* *` | social worker/expert user | add alternative phone number | have another way of reaching the beneficiary | | `* *` | social worker/new user | edit contact | edit the contact without the need to delete and create a new one | | `* *` | forgetful individual | add tags which explain what service the person needs | remember and be able to meet the needs of beneficiaries | | `* *` | holder of sensitive information | lock the SocialBook behind a password | avoid having unsolicited sharing of personal information | @@ -478,8 +478,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * **Singapore Standard Time**: Singapore time, which is 8 hours ahead of Coordinated Universal Time (UTC + 08:00) * **Hard disk**: data storage device in laptops and computers. * **.JSON file**: JavaScript Object Notation, stores and transports data using a human-readable text format. -* **SocialBook**: SocialBook is an address book hence SocialBook and AddressBook are interchangable. SocialBook is used to reference the product while AddressBook refers to the Class object in source code. -* **Social worker**: refers to full-time employees of the [Ministry of Social and Family Developement (MSF) or its subsidaries](https://www.msf.gov.sg) +* **SocialBook**: SocialBook is an address book hence SocialBook and AddressBook are interchangeable. SocialBook is used to reference the product while AddressBook refers to the Class object in source code. +* **Social worker**: refers to full-time employees of the [Ministry of Social and Family Development (MSF) or its subsidiaries](https://www.msf.gov.sg) -------------------------------------------------------------------------------------------------------------------- @@ -601,3 +601,11 @@ testers are expected to do more *exploratory* testing. 1. Test case: `add n/hunter p/61234578` Expected: A message is displayed showing the information of the added person. The person is added to the list according to the position of their name (given ascending name order). + +-------------------------------------------------------------------------------------------------------------------- + +## **Appendix: Planned Enhancements** + +1. Make `list` command with miscellaneous parameters error message more helpful. Currently, typing `list` with miscellaneous parameters, ex. `list 123`, will result in a message that states "Please ensure your command is valid!". To improve specificity this will be changed to ask user to remove miscellaneous parameters. +2. Prevent tags from allowing underscores. When searching for tags with underscores in the find command, the underscores are interpreted as an `or`. This means that searching for the tag "low_income" will bring up all tags containing "low" and "income" instead of just "low_income". +3. Remove `remark` command while keeping remarks. Currently, remarks can be added via the edit command or the remark command but not the add command. Instead of having a dedicated remark command we will allow users to use add command to add remarks while adding a contact and edit command to add or edit the remark of a contact. This change solves an associated issue whereby the remark command currently undoes the detailed view on the contact. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 037e4e1aab2..6c81ff3902e 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -6,7 +6,7 @@ # SocialBook User Guide -SocialBook is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a social worker based in Singapore and can type fast, SocialBook can get your contact management tasks (eg. locate/contact families) done faster than traditional GUI apps. +SocialBook is a **desktop app designed for social workers in Singapore, 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, SocialBook can get your contact management tasks done faster than traditional GUI apps. It helps you manage your beneficiaries by storing contact information, important remarks and information on the last time you visited them. @@ -44,6 +44,71 @@ SocialBook is a **desktop app for managing contacts, optimized for use via a Co -------------------------------------------------------------------------------------------------------------------- +## Contact field requirements + +### Name +* Names are compulsory for all contacts, and are denoted with the `n/` prefix. +* Names can contain any characters at all, including spaces, hyphens, and other special characters. +* Names will be stored in their case-sensitive form, but capitalisation will be ignored when checking for duplicate names. + * Eg. Adding a contact as "john Doe" will save them as such, but trying to add a "John Doe" with the same phone number will be marked as a duplicate person and rejected. + * To avoid unexpected behaviour with this, it is recommended that users save contacts with consistent capitalisation rules. + +### Phone +* Phones are compulsory for all contacts, and are denoted with the `p/` prefix. +* Phone numbers can only contain 8 numbers, and must begin with a 6, 8, or 9. +* Spaces in the middle of a phone number are accepted (eg. 9123 4523), as are phone numbers without spaces (eg. 91234523). +* Spaces in unusual locations will render the phone number invalid (eg. 912 34523). + +### Address +* Addresses are optional for contacts, and are denoted by the `a/` prefix. +* Addresses can contain any characters, including spaces, commas, hyphens, etc. +* To indicate no address for a contact, you can `add` a contact without the `a/` prefix, or with a `a/` followed by whitespace. + +### Email +* Emails are optional for contacts, and are denoted by the `e/` prefix. +* Email addresses are confined to the limits of the traditional email format: **`localPart@domainName`**. This includes a few restrictions: + * The `localPart` component of the email can only contain alphanumeric characters and the following 4 special characters: **`+`, `-`, `.`, `_`**. But take note that it cannot start or end with these special characters. + * The `domainName` component of the email will consist of one or more domain labels, separated by periods (`.`). + * Every domain label can only contain alphanumeric characters, or hyphens (`-`). They must also start and end with alphanumeric characters, so no starting or ending email addresses with hyphens! + * The last domain label in the `domainName` must be at least 2 characters long. + * The `localPart` and `domainName` components of the email must be separated by a `@`. +* To indicate no email for a contact, you can `add` a contact without the `e/` prefix, or with a `e/` followed by whitespace. + +### Date of Last Visit +* Dates of last visit are optional for contacts, and are denoted by the `d/` prefix. +* Dates of last visit are confined to the `dd-MM-yyyy` format and range of dates follows the [ISO-8601 calendar system](https://en.wikipedia.org/wiki/ISO_8601). +* The date provided must be valid, i.e., either today's date or any date before today. This prevents accidental entering of future dates. +* To indicate no date of last visit for a contact, you can `add` a contact without the `d/` prefix, or with a `d/` followed by whitespace. + +### Emergency Contact +* Emergency contacts are optional fields, and are denoted by the `ec/` prefix. +* Emergency contacts are subject to the same formatting requirements as `Phone`. +* To indicate no emergency contact for a person, you can `add` a contact without the `ec/` prefix, or with a `ec/` followed by whitespace. + +### Tags +* Tags are optional for contacts, and are denoted by the `t/` prefix. +* More than one tag can be added to a contact. +* Tags can contain any characters, but they should not begin with whitespace. +* You can include hyphens and spaces as necessary between words for tags that are multiple words long! +* To indicate no tags for a contact, you can `add` a contact without any `t/` prefixes. + * Take note that `add`ing a contact with a `t/` prefix followed by whitespace is not supported. Omit the `t/` tag for contacts without tags. + +### Remarks +* Remarks are optional for contacts, and are denoted by the `r/` prefix. +* It is recommended that long-form notes about a particular contact should be saved in remarks. +* Remarks can contain any characters, as they allow long-form writing with multiple sentences.
+* **IMPORTANT:** Only one `r/` prefix can be used when adding remarks. + * Adding another `r/` prefix will cause the first part of the `r/` prefix to be lost. + * If needed to add the prefix `r/` to remark, enclose the prefix with " ". e.g. `remark 1 r/ use "r/" to add remark` + + + +**Take note:** contacts will always be created without remarks. To write a remark about a contact, you can do this with the `remark` command, or with the `edit` command by specifying an `r/` prefix. + + + +-------------------------------------------------------------------------------------------------------------------- + ## Features @@ -195,10 +260,12 @@ Format: `sort PARAMETER_PREFIX/ORDER` * By default, if `ORDER` is omitted, contacts will be sorted in ascending order based on the `PARAMETER`. * An ascending order can be specified by replacing `ORDER` with `ascending` or its short form `asc`. * A descending order can be specified by replacing `ORDER` with `descending` or its short form `desc`. +* Ascending name order will **generally** be special characters and numbers followed by letters (case-insensitive). +* Persons without date of last visit will always appear at the end when sorting by date of last visit. Examples: * `sort n/` sorts by name in ascending order. -* `sort d/`, `sort d/asc`, `sort d/ascending` are all equivalent, and they sort the date of last visit in ascending order. +* `sort d/`, `sort d/asc`, `sort d/ascending` are all equivalent, and they sort by date of last visit in ascending order. * `sort d/desc` sorts by date of last visit in descending order. ### Viewing a person : `view` @@ -220,7 +287,7 @@ Examples: -**Take Note:** Viewing is executed based on the currently displayed list. +**Take Note:** Viewing is executed based on the currently displayed list. Executing any commands that alter the displayed list (such as `delete`, `sort`, or `find`) may change the person being viewed. For this reason, it is recommended to execute `view` commands after the displayed list has been modified as intended. @@ -242,7 +309,13 @@ Format: `seed` - `seed` will add them to the contact list if they are not presently inside. - `seed` does not clear or reset the list. -- If your exisitng contact list has a person with the same name and phone number, it will **not** be overwritten. +- If your existing contact list has a person with the same name and phone number, it will **not** be overwritten. + + + +**Note:** Seed command does not inform you if a duplicate person was skipped, it will only state that it has "seeded sample data" regardless of outcome. + + ### Exiting the program : `exit` @@ -265,75 +338,6 @@ If a person's data values are changed to an invalid format, Socialbook will disc Furthermore, certain edits can cause the SocialBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly. -### Archiving data files `[coming in v2.0]` - -_Details coming soon ..._ - --------------------------------------------------------------------------------------------------------------------- - -## Contact field requirements - -### Name -* Names are compulsory for all contacts, and are denoted with the `n/` prefix. -* Names can contain any characters at all, including spaces, hyphens, and other special characters. -* Names will be stored in their case-sensitive form, but capitalisation will be ignored when checking for duplicate names. - * Eg. Adding a contact as "john Doe" will save them as such, but trying to add a "John Doe" with the same phone number will be marked as a duplicate person and rejected. - * Other instances of possible duplicates such as identical names except for extra spaces are not handled. - -### Phone -* Phones are compulsory for all contacts, and are denoted with the `p/` prefix. -* Phone numbers can only contain 8 numbers, and must begin with a 6, 8, or 9. -* Spaces in the middle of a phone number are accepted (eg. 9123 4523), as are phone numbers without spaces (eg. 91234523). -* Spaces in unusual locations will render the phone number invalid (eg. 912 34523). - -### Address -* Addresses are optional for contacts, and are denoted by the `a/` prefix. -* Addresses can contain any characters, including spaces, commas, hyphens, etc. -* To indicate no address for a contact, you can `add` a contact without the `a/` prefix, or with a `a/` followed by whitespace. - -### Email -* Emails are optional for contacts, and are denoted by the `e/` prefix. -* Email addresses are confined to the limits of the traditional email format: **`localPart@domainName`**. This includes a few restrictions: - * The `localPart` component of the email can only contain alphanumeric characters and the following 4 special characters: **`+`, `-`, `.`, `_`**. But take note that it cannot start or end with these special characters. - * The `domainName` component of the email will consist of one or more domain labels, separated by periods (`.`). - * Every domain label can only contain alphanumeric characters, or hyphens (`-`). They must also start and end with alphanumeric characters, so no starting or ending email addresses with hyphens! - * The last domain label in the `domainName` must be at least 2 characters long. - * The `localPart` and `domainName` components of the email must be separated by a `@`. -* To indicate no email for a contact, you can `add` a contact without the `e/` prefix, or with a `e/` followed by whitespace. - -### Date of Last Visit -* Dates of last visit are optional for contacts, and are denoted by the `d/` prefix. -* Dates of last visit are confined to the `dd-MM-yyyy` format and range of dates follows the [ISO-8601 calendar system](https://en.wikipedia.org/wiki/ISO_8601). -* The date provided must be valid, i.e., either today's date or any date before today. This prevents accidental entering of future dates. -* To indicate no date of last visit for a contact, you can `add` a contact without the `d/` prefix, or with a `d/` followed by whitespace. - -### Emergency Contact -* Emergency contacts are optional fields, and are denoted by the `ec/` prefix. -* Emergency contacts are subjected to the same formatting requirements as `Phone`. -* To indicate no emergency contact for a person, you can `add` a contact without the `ec/` prefix, or with a `ec/` followed by whitespace. - -### Tags -* Tags are optional for contacts, and are denoted by the `t/` prefix. -* More than one tag can be added to a contact. -* Tags can contain any characters, but they should not begin with whitespace. -* You can include hyphens and spaces as necessary between words for tags that are multiple words long! -* To indicate no tags for a contact, you can `add` a contact without any `t/` prefixes. - * Take note that `add`ing a contact with a `t/` prefix followed by whitespace is not supported. Omit the `t/` tag for contacts without tags. - -### Remarks -* Remarks are optional for contacts, and are denoted by the `r/` prefix. -* It is recommended that long-form notes about a particular contact should be saved in remarks. -* Remarks can contain any characters, as they allow long-form writing with multiple sentences.
-* **IMPORTANT:** Only one `r/` prefix can be used when adding remarks. - * Adding another `r/` prefix will cause the first part of the `r/` prefix to be lost. - * If needed to add the prefix `r/` to remark, enclose the prefix with " ". e.g. `remark 1 r/ use "r/" to add remark` - - - -**Take note:** contacts will always be created without remarks. To write a remark about a contact, you can do this with the `remark` command, or with the `edit` command by specifying an `r/` prefix. - - - -------------------------------------------------------------------------------------------------------------------- ## FAQ diff --git a/docs/diagrams/EmergencyContact.puml b/docs/diagrams/EmergencyContact.puml index 0574232dbd0..06250ad553a 100644 --- a/docs/diagrams/EmergencyContact.puml +++ b/docs/diagrams/EmergencyContact.puml @@ -1,6 +1,7 @@ @startuml 'https://plantuml.com/class-diagram +hide circle class ContactablePerson class Person class EmergencyOnlyContact diff --git a/docs/diagrams/VisitHistory.puml b/docs/diagrams/VisitHistory.puml index 7a3c89ad2d9..3254aa1e494 100644 --- a/docs/diagrams/VisitHistory.puml +++ b/docs/diagrams/VisitHistory.puml @@ -2,6 +2,7 @@ 'https://plantuml.com/class-diagram +hide circle class Person class VisitHistory class Visit diff --git a/docs/team/abdulrahmanalrammah.md b/docs/team/abdulrahmanalrammah.md deleted file mode 100644 index 86aa7ebfc34..00000000000 --- a/docs/team/abdulrahmanalrammah.md +++ /dev/null @@ -1,46 +0,0 @@ ---- - layout: default.md - title: "John Doe's Project Portfolio Page" ---- - -### Project: AddressBook Level 3 - -AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. - -Given below are my contributions to the project. - -* **New Feature**: Added the ability to undo/redo previous commands. - * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command. - * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. - * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands. - * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}* - -* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys. - -* **Code contributed**: [RepoSense link]() - -* **Project management**: - * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub - -* **Enhancements to existing features**: - * Updated the GUI color scheme (Pull requests [\#33](), [\#34]()) - * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]()) - -* **Documentation**: - * User Guide: - * Added documentation for the features `delete` and `find` [\#72]() - * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]() - * Developer Guide: - * Added implementation details of the `delete` feature. - -* **Community**: - * PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]() - * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]()) - * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]()) - * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]()) - -* **Tools**: - * Integrated a third party library (Natty) to the project ([\#42]()) - * Integrated a new Github plugin (CircleCI) to the team repo - -* _{you can add/remove categories in the list above}_