Skip to content

Commit

Permalink
Merge pull request #122 from Chocological/Bug_fixing
Browse files Browse the repository at this point in the history
Added a new error message for calculatebudget command
  • Loading branch information
sanjukta99 committed Nov 6, 2018
2 parents 48ebfbc + 09ae0bf commit 994846a
Show file tree
Hide file tree
Showing 19 changed files with 142 additions and 146 deletions.
12 changes: 10 additions & 2 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,21 @@ endif::[]
NUSSU-Connect is an application designed and created specifically for executive committee (exco) members of the NUS Student Union (NUSSU).
It enables the committee members to reduce their daily workload and the organisation to potentially minimize manpower and logistics issues
during peak periods of activity by providing them a convenient platform to manage recruitment, contacts, budgets and projects efficiently.
The application can also be used by every organisation with a clearly defined hierarchy of roles and responsibilities of each and every member
belonging to the organisation.
The application can also be used by every organisation with various departments, and a clearly defined hierarchy of roles and
responsibilities of each and every member belonging to the organisation.

== Value Proposition
To digitise any company's or organisation's standard operating procedures, through the process of streamlining workflow to essentially
solve, or at least minimize, any manpower and logistics issues that can happen during any peak periods of business activities.

=== Notable features
The list shown below details the key features that our application provides, which any organisation or company can make full use of.

* Security:
** Log into the application with a set of login credentials
*** Gives a specific level of access to the application according to role of user account defined during account creation
** Creation of a new account with desired login credentials for logging into the application

== Site Map

* <<UserGuide#, User Guide>>
Expand Down
131 changes: 64 additions & 67 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,15 @@ Given below is the Sequence Diagram for interactions within the `Logic` componen
.Interactions Inside the Logic Component for the `delete 1` Command
image::DeletePersonSdForLogic.png[width="800"]

Given below is the Object Diagram that shows the associations between various objects within the `Logic` component for the Login functionality.
.Associations between objects in the Logic Component for Login feature
image::LoginLogicObjectDiagram.PNG[width="800"]

. `LogicManager` creates a new instance of `AddressBookParser`, which takes in the user login input details.
. This results in the simultaneous instantiation of `LoginUserIdPasswordRoleCommandParser` object and the calling of parse() method on the object.
. From the parsing of user input, three objects, idPredicate, passwordPredicate and rolePredicate, which belongs to `UserIdContainsKeywordsPredicate`, `UserPasswordContainsKeywordsPredicate` and `UserRoleContainsKeywordsPredicate` respectively, are instantiated and passed as parameters in the instantiation of a `LoginUserIdPasswordRoleCommand` object.
. Depending on the user input, some of the booleans in `LoginManager` may be set to true.

[[Design-Model]]
=== Model component

Expand All @@ -219,6 +228,15 @@ As a more OOP model, we can store a `Tag` list in `Address Book`, which `Person`
+
image:ModelClassBetterOopDiagram.png[width="800"]

Given below is the Object Diagram that shows the associations between various objects within the `Model` component for the Login functionality.
.Associations between objects in the Model Component for Login feature
image::LoginModelObjectDiagram.PNG[width="800"]

. `filteredLoginDetails` will always show all accounts when `ModelManager` is first instantiated.
. Depending on the user input during login, `filteredLoginDetails` will be gradually filtered according to matching user id first, followed by user password and then, user role.
. Whether or not the login is a success or a failure, will depend on if there is an account left in the list after the list is filtered.
. The existing user id, user password and user role fields in the `filteredLoginDetails` accounts list will not be edited in any way.

[[Design-Storage]]
=== Storage component

Expand All @@ -232,6 +250,15 @@ The `Storage` component,
* can save `UserPref` objects in json format and read it back.
* can save the Address Book data in xml format and read it back.

Given below is the Object Diagram that shows the associations between various objects within the `Storage` component for the new account creation functionality.
.Associations between objects in the Storage Component for account creation feature
image::LoginStorageObjectDiagram.PNG[width="800"]

. `XmlAccount` is instantiated, with the appropriate account details as parameters for the new `XmlAccount` object.
. An `List<XmlAccount>` object is instantiated, with the previous `XmlAccount` object containing the new account's details to be added into the `List<XmlAccount>` object in `XmlSerializableLoginBook`.
. The resulting `LoginBook` is then serialized to Xml format in `XmlSerializableLoginBook`.
. With a new `XmlSerializableLoginBook` object instantiated with the account details in a `LoginBook` object, the `XmlSerializableLoginBook` object is then passed as a parameter when the save method in `XmlLoginBookStorage` is called, to save to a location according the the `Path` specified.

[[Design-Commons]]
=== Common classes

Expand Down Expand Up @@ -1200,84 +1227,46 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un

|`* *` |general secretary of NUSSU |have the option to backup all, or even specific segments of application data into a data file |recover the required segments of data when there is an accidental deletion of data

|`* *` |user |hide <<private-contact-detail,private contact details>> by default |minimize chance of someone else seeing them by accident
|=======================================================================

**Others** +
**Must haves**

As an executive officer of NUSSU, I would like to view which other committees my applicant has applied for so that I deconflict with the other members of the Executive Committee.

As an executive officer of NUSSU, I can log into the app with the required credentials, so that I can access certain functionalities of the app exclusive to my credentials only.

As an executive member of NUSSU, I can create a new account for myself to log into the app, so that I can access the functionalities of the app.

As a member of NUSSU, I would like to find out how to contact another member within NUSSU so that I can work more efficiently with them.

As someone that is looking for the contact information of someone in else in a committee, I would like to filter my search such that I would only be looking through the lists of that specific committee so that I will not need to look through the whole list of NUSSU members.

As someone that takes charge of sponsors for events hosted by NUSSU, I would like to filter my search such that I would be only looking at the list of sponsors so that I will not need to look through the whole list of addressbook.

As the organizer of events, I would like to keep track of the contact information for all the helpers for that event so that I can keep them updated on the progress of the events.

As an organizer of an event, I would like to remove all users that helped with the event from my contact list so that the address book will be less cluttered.

As a member of the NUSSU treasury I would like to have a budgeting function so that I can fairly allocate budgets to the different clubs/projects

As the treasurer of a club I would like to view the budget allocated to our club so I can discuss with my teammates and seek more funds if necessary.
|`* *` |general secretary of NUSSU |view a list of dates reserved for committee meetings planned beforehand |prepare for the meetings adequately

As the treasurer of a club I would like to be able to store the data about how many members there are in my club, how many events we are planning to hold, and the expected turn out so that we can be allocated a fair budget by the NUSSU treasury.
|`* *` |executive member of NUSSU |pitch in proposal ideas into the proposal suggestions section through the community proposal voting system |find out just how popular my proposals are through the number of upvotes it receives

As the treasurer of a club I would like to use a budgeting function so that I can plan the internal events of my club efficiently.
|`* *` |executive member of NUSSU |edit current proposal ideas in the proposals section |have the option to refine current proposals

As a member of the NUSSU treasury I would like to view requests for grants from the clubs so that I can allocate them the grant if the request is accepted by the NUSSU.
|`* *` |executive member of NUSSU |delete selected proposal ideas in the proposals section |have the option to remove irrelevant proposals

As an event organizer that is trying to find the contact details of some very specific group of people, I would like to have a search and filter function that is flexible enough so that all the search requirements can be done on the application without needing me to look through the whole list.
|`* *` |executive member of NUSSU |view the list of proposals currently suggested in the proposals section and upvote those that I like |find out more about the current proposals in place and express my favor in a particular proposal

**Nice to have**
|`* *` |executive member of NUSSU |filter and search for proposal ideas based on keywords |do not have to waste time searching through all the proposals just to find the one I want

As the general secretary of NUSSU, I would like to have the option to backup all, or even specific segments of application data into a data file, so that in the event where accidental deletion or corruption of data occurs, I can recover the required segments of data.
|`* *` |student welfare secretary of NUSSU |view statistics showing the number of students who signed up for student welfare packs |plan student welfare goodie events better

As the general secretary of NUSSU, I would like to view a list of dates reserved for committee meetings planned beforehand, so that i can prepare for the meetings adequately.
|`* *` |general secretary of NUSSU |delete selected proposal ideas in the proposals section |have the option to remove irrelevant proposals

As an executive member of NUSSU, I can pitch in proposal ideas into the proposal suggestions section through the community proposal voting system, so that I can find out just how popular my proposals are through the number of upvotes it receives.
|`* *` |student life secretary of NUSSU |keep track of updated statistics showing the number of students in each faculty |plan and balance the events geared towards a specific faculty

As an executive member of NUSSU, I can edit current proposal ideas in the proposals section, so that i can have the option to refine current proposals.
|`* *` |someone that keeps track of the finances for hosting events |an application that helps me simplify the process(Excel)|do my work efficiently

As an executive member of NUSSU, I can delete selected proposal ideas in the proposals section, so that i can have the option to remove irrelevant proposals.
|`* *` |someone that records what was discussed in a meeting |be able to keep a record of what everyone said |use it as a future reference for further discussion

As a student in the student union of NUSSU, I want to view the list of proposals currently suggested in the proposals section and upvote those that I like, so that I can find out more about the current proposals in place and express my favor in a particular proposal.
|`* *` |someone that constantly sends email to other members of NUSSU/ Sponsors/ Public |have an access to multiple different templates of emails |focus more on writing the content of the email instead of spending too much time on crafting the overall structure

As a student in the student union of NUSSU, I would like to be able to filter and search for proposal ideas based on keywords, so that I do not have to waste time searching through all the proposals just to find the one I want.

As the student welfare secretary of NUSSU, I would like to view statistics showing the number of students who signed up for student welfare packs, so that logistically wise, I can plan student welfare goodie events better.

As the general secretary of NUSSU, I would like to keep track of a register containing details of all members serving in the union.

As the student life secretary of NUSSU, I would like to keep track of updated statistics showing the number of students in each faculty, so that i can plan and balance the events geared towards a specific faculty, logistically and relevancy wise.

As someone that keeps track of the finances for hosting events, I would like an application that helps me simplify the process(Excel) so that I can do my work efficiently.

As someone that records what was discussed in a meeting, I would like to be able to keep a record of what everyone said, so that we can use it as a future reference for further discussion.

As someone that constantly sends email to other members of NUSSU/ Sponsors/ Public, I would like to have an access to multiple different templates of emails so that I can focus more on writing the content of the email instead of spending too much time on crafting the overall structure.

_{More to be added}_
|=======================================================================

[appendix]
== Use Cases

(For all use cases below, the *System* is the `AddressBook` and the *Actor* is the `user`, unless specified otherwise)
(For all use cases below, the *System* is the `NUSSU-Connect` and the *Actor* is the `user`, unless specified otherwise)

[discrete]
=== Use case: Delete person

*MSS*

1. User requests to list persons
2. AddressBook shows a list of persons
2. NUSSU-Connect shows a list of persons
3. User requests to delete a specific person in the list
4. AddressBook deletes the person
4. NUSSU-Connect deletes the person
+
Use case ends.

Expand All @@ -1291,7 +1280,7 @@ Use case ends.
* 3a. The given index is invalid.
+
[none]
** 3a1. AddressBook shows an error message.
** 3a1. NUSSU-Connect shows an error message.
+
Use case resumes at step 2.

Expand Down Expand Up @@ -1385,34 +1374,42 @@ Actor: Typical NUSSU member +

Use case ends

=== Use case: Log into system
=== Use case: Log into system and multi user access level

System: NUSSU Connect Application +
Actor: Typical NUSSU member +
*MSS*

1. NUSSU-Connect prompts user to login first by entering login credentials
1. System prompts user to login first by entering login credentials
2. User types in login credentials along with the login command
3. NUSSU-Connect queries against login book and authorizes the user full access to NUSSU-Connect
3. System queries against login book and authorizes the user a specific level of access to NUSSU-Connect depending on user role
+
Use case ends.

*Extensions*

[none]
* 2a. User types in wrong password or user ID
* 2a. User types in wrong password, user ID or user role
+
[none]
** 2a1. System continues to prompt user for login credentials before giving access to user
+
Use case ends.
* 2b. User decides not to log into the application and closes the login dialog box
+
[none]
** 2a1. NUSSU-Connect continues to prompt user for login credentials before giving access to user
** 2b1. System performs a system exit and application is exited
+
Use case ends.

=== Use case: Create new user accounts

System: NUSSU Connect Application +
Actor: Typical NUSSU member +
*MSS*

1. User types in command to create a new account with chosen user ID and password
2. NUSSU prompts user to type in master password for creation of new account
3. User types in the correct master password
4. NUSSU-Connect creates new account with chosen login details, and shows successful execution message
1. User types in command to create a new account with chosen user ID, password and role
2. System creates new account with chosen login details, and shows successful execution message
+
Use case ends.

Expand All @@ -1422,13 +1419,13 @@ Use case ends.
* 1a. User creates a new account with a user ID which already exists
+
[none]
** 1a1. NUSSU-Connect shows error message to user and does not create a new account
** 1a1. System shows error message to user and does not create a new account
+
Use case ends.
* 3a. User types in the wrong master password
* 1b. User types in an invalid user role
+
[none]
** 3a1. NUSSU-Connect shows error message to user and and does not create a new account
** 1b1. System shows error message to user and and shows user role constraints message
+
Use case ends.

Expand Down

0 comments on commit 994846a

Please sign in to comment.