UNOFAS User Guide
Welcome to UNOFAS!
Welcome to the User Guide for UNOFAS, your comprehensive solution for efficient and organized client contact management. Ever found yourself spending countless hours sorting and managing your clients’ contacts? We understand the importance of managing your life commitments alongside maintaining strong relationships with your clients as dedicated financial advisors. UNOFAS has been designed to streamline administrative hassles, providing you with the tools you need to manage clients’ contacts efficiently.
What is UNOFAS?
UNOFAS (UNO: One FAS: Financial Advisors app) is a desktop app for Financial Advisors to manage clients contacts and schedule appointments, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). For fast typists, UNOFAS can help you manage and retrieve client’s information better than traditional GUI apps.
Purpose of this guide
This guide provides you with comprehensive instructions on utilizing UNOFAS. It also serves as a mode of referral to help learn the various commands required to effectively learn and be able to integrate the application to your daily use as financial advisors.
To help you make the most of this resource, we would recommend that you take some time to read through the entire guide. You can then utilize the Table of Contents provided below and click on the relevant links to easily navigate through the guide and access the information you might need or want to take another look at. We hope that this guide serves you well to help make managing your clients a more pleasant experience.
Legend
Important information to take note of.
Useful tips for improving usability of the application.
Mistakes to be wary of.
Table of Contents
- Quick Start
- UI Components
- Features
- Saving the data
- Editing the data file
- FAQ
- Known Issues
- Command Summary
Quick Start
-
Ensure you have Java
11
or above installed in your Computer. For further information, you may refer to these guides on how to check java version and how to install Java if needed. -
Download the latest
unofas.jar
from here. -
Copy the file to the folder you want to use as the home folder for your UNOFAS.
-
Open a command terminal,
cd
(change directory) into the folder you put the jar file in. For example, if the file is in yourDocuments
folder, go to the terminal and type incd ~/Documents
.
Once you are in the selected folder, enter thejava -jar unofas.jar
command into the terminal to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Type the command in the command box and press the Enter key to execute it. e.g. typing
help
and pressing Enter will open the help window.
Some example commands you can try:-
list
: Lists all your client-contacts. -
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 nk/David nkp/91234567
: Adds a contact namedJohn Doe
to the Contact Book. -
delete 3
: Deletes the 3rd contact shown in the contact list. -
clear
: Deletes all client contacts. -
exit
: Exits the application.
-
-
Refer to the Features below for details of each command.
UI Components
General UI information
Component | Purpose |
---|---|
Navigation Bar | Allows you to exit UNOFAS or view help |
Command Line | Location to enter commands |
Result Line | Displays the result after a command is entered |
Contact List | Displays client contacts |
Appointment List | Displays appointments |
Contact Card | Displays detailed information about a client |
Appointment Card | Displays detailed information about an appointment |
Save Location | Displays the location where your UNOFAS data is stored |
Contact Card
- Shows the client’s name, phone number, financial plan(s) (if any), address, email address, next-of-kin name, next-of-kin phone number, appointment (if any) and tag(s) (if any).
Appointment Card
- Shows the appointment name, client allocated to the appointment and the appointment date and time.
- The appointment cards displayed will only include appointments of clients displayed in the contact list.
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by users.
e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Unless explicitly allowed, blank inputs or inputting any number of spaces as an argument for a field is invalid.
-
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
Any input parameters that do not adhere to the accepted values will result in the command failing and not executing.
-
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
Argument Summary
Below is a table summarising common arguments used in add
, edit
, find
, schedule
etc. Refer to the table below
to view the arguments’ prefix, and their acceptable values. Unless specified, having only space characters i.e. an empty
value, is not an acceptable value and will result in a warning.
Prefix | Argument | Acceptable Values |
---|---|---|
- | INDEX | Number (1 to current size of the contact book) |
n/ |
NAME | Alphabets, numbers, and space characters only |
p/ |
PHONE_NUMBER | Numbers only and at least 3 digits long |
e/ |
Alphabets, numbers, and symbols only in a valid email format | |
a/ |
ADDRESS | Alphabets, numbers, space characters and symbols only |
nk/ |
NEXT_KIN | Alphabets, numbers, and space characters only |
nkp/ |
NEXT_KIN_PHONE | Numbers only and at least 3 digits long |
fp/ |
FINANCIAL_PLAN | Alphabets, numbers, and space characters only. Empty value is accepted only when using Edit |
t/ |
TAG | Alphabets and numbers only. Empty value is accepted only when using Edit |
ap/ |
APPOINTMENT_NAME | Alphabets, numbers, and space characters only |
d/ |
APPOINTMENT_DATE | Format: dd-MM-yyyy (e.g., 31-12-2023) |
d/ |
APPOINTMENT_DATE_TIME | Format: dd-MM-yyyy HH:mm (e.g., 31-12-2023 14:30) |
- | KEYWORD |
name or appointment
|
a/Blk 285 n/Clementi
for the ADDRESS argument, it will trigger the identification of the prefix n/
in the input and result in an error message.
Viewing help : help
Displays a message explaining how to access the help page, as well as a list of available keywords.
Format: help
Adding a client-contact : add
Adds a client’s contact (name, phone number, email, home address, next-of-kin name, next-of-kin phone number) into contact book. Optionally you may add financial plans or tags to the client at the same time.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS nk/NEXT_KIN nkp/NEXT_KIN_PHONE [fp/FINANCIAL_PLAN]… [t/TAG]…
- Adding a new client-contact with the exact same name (case-sensitive) as a client currently in the contact book counts as a duplicate and will cause the command to fail. Duplicate information in other fields does not count as a duplicate client.
- To prevent accidentally adding duplicates, you can use Find to check if you have already added the client.
- After performing an add, the contact list will be reset to display all client contacts.
- You MAY NOT add an empty tag or financial plan eg.(
fp/
ort/
)
Acceptable Values: Refer to Argument Summary.
Examples:
add n/John p/80101010 e/johndoe@gmail.com a/Punggol Central Blk 444 #15-32 820123 nk/Brennan nkp/82020202 t/80yo fp/Financial Plan C
Successful Output: New person added: John;
Phone: 80101010;
Email: johndoe@gmail.com;
Address: Punggol Central Blk 444 #15-32 820123;
Next-of-kin Name: Brennan;
Next-of-kin Phone: 82020202;
Appointment: No Appointment made!;
Financial Plans: [Financial Plan C];
Tags: [80yo]
t/
prefix. The same can be done for financial plans with the fp/
prefix.
Listing all client-contacts : list
Displays a list of all the clients and their contact details that are currently stored in the contact book.
Format: list
Successful Output: Listed all persons
Editing a client-contact : edit
Edit clients contact fields using an index followed by the updated details.
Format: edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [nk/NEXT_KIN] [nkp/NEXT_KIN_PHONE] [fp/FINANCIAL_PLAN]… [t/TAG]…
- Edits the client-contact at the specified
INDEX
. The index refers to the index number shown in the displayed contact 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.
- Editing the name of a client to be the exact same name as another client currently in the contact book (case-sensitive) counts as a duplicate and will cause the command to fail. Duplicate information in other ways does not count as a duplicate contact.
- When editing financial plans or tags, the existing financial plans or tags of the client will be removed i.e. adding of tags is not cumulative.
- You can remove all the client’s tags by typing
t/
without specifying any tags after it. - You can remove all the client’s financial plans by typing
fp/
without specifying any financial plans after it. - A client’s appointment cannot be edited in this manner. Refer to Schedule.
- After performing an edit, the contact list will be reset to display all contacts.
Acceptable Values: Refer to Argument Summary.
Examples:
-
edit 4 n/john doe a/23 woodlands ave 123
Edits the name and address of the 1st client to bejohn doe
andwoodlands ave 123
respectively.
Successful Output:
Edited Person: john doe;
Phone: 80101010;
Email: johndoe@gmail.com;
Address: 23 woodlands ave 123;
Next-of-kin Name: Brennan;
Next-of-kin Phone: 82020202;
Appointment: No Appointment made!;
Financial Plans: ;
Tags:
t/
prefix. The same can be done with for financial plans with the fp/
prefix.
However, multiple fields of the same type with an empty tag or financial plan is not allowed. For example, t/ t/
and fp/ fp/plan
is not accepted.
Locating clients by name, financial plan, and/or tag : find
Finds client-contact(s) whose names, tags or financial plans contain any of the specified keywords.
Format: find [n/NAME]… [fp/FINANCIAL_PLAN]… [t/TAG]…
- At least one of the optional fields must be provided.
- This command will ignore other prefixes. Using them anyway can cause undefined behaviour.
- The search is case-insensitive. e.g
hans
will matchHans
. - For names, only full words will be matched e.g.
Han
will not matchHans
. - Calling this command on a sorted list will retain the sorted quality of the list.
- For financial plans and tags, any substring will be matched e.g.
Senior
will matchSuperSenior
. - Contacts matching at least one keyword will be returned (i.e.
OR
search). e.g.n/Hans n/Bo
will returnHans Gruber
,Bo Yang
. - Upon successful execution of the command, only the relevant contact details will be reflected in the Contact list. The relevant appointment details will also be updated in the Appointment list.
Acceptable Values: Refer to Argument Summary.
Examples:
-
find n/john n/charlie
returnsCharlie
,john doe
Gathering emails of matching clients : gather
Gathers all the emails of clients with a desired financial plan or tag.
Format: gather fp/FINANCIAL PLAN
or gather t/TAG
- Generates a list of emails separated by semicolons, making it convenient for copying and pasting into the recipient input of an email application. This function currently known to be compatible with gmail and outlook but might not work for all email services.
- Either Financial Plan or Tag can be searched at once, but not both.
- The search is case-insensitive e.g.
financial
will matchFINANCIAL
orFinancial
. - A client’s email will be gathered if the prompt matches a substring of their financial plan or tag.
eg.
finan
will matchfinancial
orfinancial plan
.
Acceptable Values: Refer to Argument Summary.
Examples:
gather t/Elderly
gather fp/Financial Plan A
Successful Output:
davidmiller@gmail.com; bob@example.com;
Deleting a client : delete
Deletes the client-contact from the contact book by their index.
Format: delete INDEX
- Deletes the contact at the specified
INDEX
. - The index refers to the index number shown in the displayed contact list.
Acceptable Values: Refer to Argument Summary.
Examples:
-
list
followed bydelete 1
deletes the 1st contact in the contact book.
Successful Output:
Deleted Person: David;
Phone: 93234567;
Email: davidmiller@gmail.com;
Address: Bishan Blk 999 #08-15 569874;
Next-of-kin Name: Olivia;
Next-of-kin Phone: 56981234;
Appointment: Meeting, 15-12-2023 17:30;
Financial Plans: [Financial Plan A][Financial Plan B];
Tags:
Scheduling an Appointment : schedule
Schedules an appointment for a client using an index followed by the appointment details.
Format: schedule INDEX ap/APPOINTMENT_NAME d/APPOINTMENT_DATE_TIME
- Schedules appointment with the client contact at the specified
INDEX
. The index refers to the index number shown in the displayed contact list. - Both appointment name and date-time must be provided.
- Upon successful execution of the command, the scheduled appointment details will be updated in the Contact list. The appointment details will also be updated in the Appointment list. The contact list displayed will be reset to display all clients in the Contact Book.
Acceptable Values: Refer to Argument Summary.
Example:
schedule 1 ap/Annual review of financial goals d/20-11-2023 15:00
Successful Output:
For overridden appointment: Appointment updated!
For new appointment: New appointment added: David; Phone: 93234567; Email: davidmiller@gmail.com; Address: Bishan Blk 999 #08-15 569874; Next-of-kin Name: Olivia; Next-of-kin Phone: 56981234; Appointment: Annual review of financial goals, 20-11-2023 15:00; Financial Plans: [Financial Plan A][Financial Plan B]; Tags:
Completing an Appointment : complete
Completes an appointment either with the contact at the specified INDEX
or complete all appointments with matching APPOINTMENT_DATE
.
Format: complete [INDEX] [d/APPOINTMENT_DATE]
- Either an index or appointment date must be provided for command to execute, but not both.
- If you input an
INDEX
, the command will complete appointment with the client at the specified index. - The index refers to the index number shown in the displayed contact list.
- If you input an
APPOINTMENT_DATE
, the command will complete all appointments in contact book that have a date matching the one input by user, and is regardless of the currently displayed contact list. - After performing the complete, the contact list displayed will be reset to display all contacts in the contact book.
APPOINTMENT_DATE
if the year, month and day are the same. Time of the appointment does not matter in this command.
Acceptable Values: Refer to Argument Summary.
complete
by APPOINTMENT_DATE
once at the end of the day. This will clear all your completed appointments for the entire day.
Examples:
complete 1
complete d/01-05-2023
Successful Output: Appointment(s) Completed!
Clearing all entries : clear
Clears all client contacts from the contact book. UNOFAS will ask for confirmation first to ensure it is not a mistake. Click the clear button to confirm.
Format: clear
- If your computer runs windows, you may use the arrow keys to navigate between the clear and cancel buttons and the enter key to confirm your selection.
Example:
clear
clear
command, until confirmation or cancellation of command on the prompt, usage of the application
is temporarily halted (including trying to exit the program).
Sorting of data : sort
Sorts all the client contacts with predefined sorting functionalities. After sorting the list, the ordering of the contacts will be changed. As a result, performing any operations that require indexing (such as delete, add or edit), will reference the new ordering that is currently displayed on the screen.
Here are the current predefined sorting functions that have been implemented
-
name
: sorts list by lexicographical ordering of client name (case-insensitive). -
appointment
: sorts list by appointment timing in order of the earliest appointment first. If no appointment is found, the remaining clients without an appointment will be displayed in an arbitrary order, based on the reordering of the previous sorting functions applied.
Format: sort KEYWORD
- Calling this command after a
Find
command will preserve the results filtered by theFind
command.
Acceptable Values: Refer to Argument Summary.
Example: sort name
performs sorting by lexicographical ordering
Successful Output: 4 persons listed!
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
UNOFAS data are saved in a .json
file in the data folder found in the same folder the application is in. Data is written each time a command that alters the data in the list is executed.
There is no need to save manually.
Editing the data file
UNOFAS data are saved automatically as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.
FAQ
Q: How do I transfer my data to another computer?
A: 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 UNOFAS home folder.
Known issues
-
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.json
file created by the application before running the application again. - When sorting the list, we have chosen to not implement returning sorted list to original ordering due to the lack of necessity. However, due to feedback, we intend to implement this in the next release to enable users to return list to original order should they wish to.
- It is possible to add appointments with dates before the current date and time.
- On macOS Systems, you have to use the cursor to manually click the confirm or cancel buttons for the overriding and clear prompts. In contrast, Windows users can choose to hit enter to confirm execution of command.
- On macOS Systems, executing clear and appointment override might result in some slight UI bugs when application is used in full screen. Don’t worry as the program should still work with intended functionality.
- No current method to de-conflict clashing appointments. Users should be advised to check the appointment list to ensure appointments do not clash with each other.
- The appointment list may display appointments with the same date and time in a different order after adding a new appointment and subsequently reopening the app. This will be concurrently resolved when fixing issue 6.
- Checking for duplicate clients is done by checking their full name, case-sensitive. The future plan is to do this by checking of phone number as it is less likely 2 people share the same phone number than compared to name.
Command summary
Action | Format, Examples | |
---|---|---|
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS nk/NEXT_KIN nkp/NEXT_KIN_PHONE [fp/FINANCIAL_PLAN]… [t/TAG]… e.g., add n/John p/80101010 e/johndoe@gmail.com a/Punggol Central Blk 444 #15-32 820123 nk/Brennan nkp/82020202
|
|
Clear | clear |
|
Delete |
delete INDEX e.g., delete 3
|
|
Edit |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [nk/NEXT_KIN] [nkp/NEXT_KIN_PHONE] [fp/FINANCIAL_PLAN]… [t/TAG]… e.g., edit 1 n/john doe a/23 woodlands ave 123
|
|
Find |
find [n/NAME]… [fp/FINANCIAL_PLAN]… [t/TAG]… e.g., find n/James n/Jake
|
|
Gather |
gather [fp/FINANCIAL PLAN] or gather [t/TAG] e.g., gather fp/Basic Insurance Plan
|
|
Schedule |
schedule INDEX ap/APPOINTMENT_NAME d/APPOINTMENT_DATE_TIME e.g. schedule 1 ap/Annual review of financial goals d/20-11-2023 15:00
|
|
Complete |
complete [INDEX] [d/APPOINTMENT_DATE] e.g complete 1 e.g complete d/01-05-2023
|
|
List | list |
|
Help | help |
|
Sort |
sort KEYWORD e.g., sort appointment
|