Skip to content
This repository has been archived by the owner on Apr 28, 2021. It is now read-only.

Commit

Permalink
Merge pull request #334 from fatclarence/branch-update-ppp
Browse files Browse the repository at this point in the history
Update PPP for Clarence
  • Loading branch information
tanamaroby authored Nov 11, 2019
2 parents 1c84b8d + 93dbdaa commit 52fd457
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 69 deletions.
6 changes: 4 additions & 2 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ lexicographically smaller than Nasi Lemak.

//end::sorting[]

//tag::savings[]

=== Savings feature
The Savings feature encompasses a Savings Account feature and a Savings History feature, both of which work together to allow the user
to track his/her savings effectively.
Expand Down Expand Up @@ -466,6 +466,7 @@ The `SavingsHistory` Class Diagram is shown below to reflect the interactions ab

image::SavingsHistoryClassDiagram.png[align=center,width=400]

//tag::savings[]
==== Making a saving in $aveNUS

When a user requests for a saving to be made in the application by calling the `save AMOUNT` command, the following processes
Expand Down Expand Up @@ -540,6 +541,8 @@ class.

|===

//end::savings[]

==== Making a withdrawal from user's savings account.

Similar to making a saving, the following steps occur when the user requests for a withdrawal.
Expand Down Expand Up @@ -645,7 +648,6 @@ returns an unmodifiable list of savings made by the user thus far.
Finally, the savings history panel in the `MainWindow` class is updated with this unmodifiable list. The result
is that the user will see only his savings being displayed within the application's savings history panel.

//end::savings[]

//tag::budgeting[]
=== Budget Tracking feature
Expand Down
10 changes: 6 additions & 4 deletions docs/UserGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,14 @@ by clicking the `Guide` button.
*Example*: `help`
****


[width="100%",cols="5%,95%", grid=none]
|===
ifdef::env-github[| :white_check_mark: a| You will see the help the help window, diplaying the list of commands available.]
ifndef::env-github[a| icon:check[role="green", size="2x"] a| You will see the help the help window, diplaying the list of commands available.]
|===

//tag::history[]
==== Viewing previously typed commands: `history`

Shows the user's previously typed commands in the Results Display. +
Expand Down Expand Up @@ -180,6 +182,7 @@ image::HistoryCommandUI.png[]
The `history` command will only display previous commands with no duplicate commands. +
Eg. typing `history` twice will only result in a display of `history` only ONCE in the Results Display.

//end::history[]

==== Viewing information about a command: `info`

Expand Down Expand Up @@ -619,14 +622,14 @@ Allows users to top up the money into their wallet.
If the top up was successful, you should be able to see the update to your wallet immediately.
//end::budgeting[]

//tag::savings[]
=== Savings

Unlike your wallet which has a limit to the amount you can have, i.e. $1,000,000, your savings account has a limit that is imposed by the limitations of the user's computer's memory. +
The savings account is presented to the user in the display as shown in figure below. +

We will be introducing a higher limit for savings so user's can aim to save more, but that will be in v2.0.

//tag::savings[]
==== Transfer money from user's wallet into savings account: `save`
The user can save an amount of money from the user's wallet, into his/her savings account.

Expand Down Expand Up @@ -659,6 +662,8 @@ image::SavingsSuccessMessage.png[]
{empty}
|===

//end::savings[]

==== Withdraw money from user's savings account into wallet: `withdraw`
The user can withdraw a sum from his/her savings account, and add it into his/her wallet.

Expand Down Expand Up @@ -711,9 +716,6 @@ The user can restrict his/her view of the savings history display, such that the
The restricted display will not be applied after another command is typed. +
When new command is entered that is not `show` the savings history display is reverted back to display all savings and withdrawals.


//end::savings[]

//tag::purchasing[]
=== Purchasing

Expand Down
169 changes: 106 additions & 63 deletions docs/team/fatclarence.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -17,87 +17,88 @@ The table below provides a quick summary of the symbols and formatting used in t

[width="70%",cols="^15%,85%"]
|===
a| `code` | Command that can be typed into the command box
ifndef::env-github[]
a| icon:check[role="green", size="2x"] | Success execution of command
a| icon:lightbulb-o[role="icon-tip", size="2x"] | Tips that might be useful
a| icon:info-circle[role="icon-note", size="2x"] | Additional information that is good to know
a| icon:exclamation-circle[role="icon-important", size="2x"] | Important pointers to take note
endif::[]
a| `code` | A grey highlight with monospaced font indicates a command that can be typed into the command box of the application.
a| [.java]#name# | A blue highlight with monospaced font indicates a reference to the codebase. This could be a component, class, method, attribute or file name.
a| icon:check[role="green", size="2x"] | A green tick indicates the expected result that you should see after executing a command in the application.
a| icon:lightbulb-o[role="icon-tip", size="2x"] | A lightbulb indicates tips and tricks that might be useful to the user.
a| icon:info-circle[role="icon-note", size="2x"] | A blue information symbol indicates additional information for that section that is good to know.
a| icon:exclamation-circle[role="icon-important", size="2x"] | A red exclamation mark symbol indicates important pointers to take note.
|===

== Summary of contributions

This section provides a summary of the contributions that I have made to the team project.
In this section, I will provide a summary of the contributions I have made to the team project.
THese include features which I have implemented as well as other project-related contributions.

=== Major enhancement: Savings and Withdrawal Feature
=== Major enhancement: Savings Feature

I have added a savings and withdrawal feature that enables users to keep track of their savings and withdrawals from their savings account.
I have added the Savings feature and all of its related commands.

==== What it does

The savings and withdrawal feature allows users to manage their savings.
It allows users to track their saving habits. Users can transfer money from their $aveNUS wallets into their savings account
using the `save` command. In addition, users can transfer money from their savings account and into their $aveNUS wallets
using the `withdraw` command.

Firstly, the user must have money set in their wallet. This can be added by using the "budget" command which specifies their budget amount for a budget duration,
or by calling "topup" to topup the amount of money in the wallet without a budget duration. With this, the user can then add an amount of money
into their savings account by using the "save" command.

Next, if the user has money in his savings account, he/she will be able to use the "withdraw" command to transfer money from the savings account
into his/her wallet.

Lastly, the user can track his/her savings and withdrawal history from the graphical user interface (GUI).
The user can also keep track of his current savings account balance from the GUI.
Users can then track their savings and withdrawals made from the Savings History Panel of the application's GUI. The savings of a user
is displayed in Green, while the withdrawals are displayed as a negative sum of money, and in red.

==== Justification

In university, students are keen to plan for their lives after they graduate. Students would like to graduate with at least
a certain amount of money in their banks so that they can either pay for their student loans, or return the amount they borrowed
from their parents for paying off their school fees. To do this, they have to start saving from the time they stepped into university.

With the savings and withdrawal feature encompassed into the expenditure tracking application of $aveNUS, the application
serves as a one-stop application for them to plan their finances. Students can not only track their expenditure history,
but also take note of their savings and withdrawals they have made over time conveniently in one application. Thus, they will have a
better understanding of their personal spending and savings behaviour, which can encourage them to take the necessary measures to make changes
in these behaviours to suit their financial goals.
With the savings feature encompassed into the expenditure tracking application of $aveNUS, the application
serves as a one-stop application for them to efficiently plan their finances when they are in school. The Green display
for the savings added provides a friendlier display to encourage users to save more. The Red display for the withdrawals
made by the user is intentionally harsh, to serve as a warning to the users when they make a withdrawal.

==== Highlights

While implementing this feature, I had to implement new models such as `Savings`, `TimeStamp`, which allowed users to keep their savings in a structured manner
and track when the saving or withdrawal occurred respectively. I also implemented the model for `SavingsAccount`, so that the user can reference their SavingsAccount
and make changes to it accordingly.
I had to implement new classes such as `ReadOnlySavingsHistory`, `SavingsHistory`, `ReadOnlySavingsAccount`, `SavingsAccount`
`Savings`, `CurrentSavings` and `SavingsHistoryList`. These classes had to be
implemented across the multiple components within the application architecture to support the Savings
feature, allowing me to better understand the project's architecture.

Storage functionality was also implemented for the user's savings history to conveniently save the user's savings history into their hard disk.
This functionality is persistent even when the application is restarted.
Furthermore, additional user interface classes such as `ReadOnlySavingsHistory` and `SavingsHistory` ensures that a user's savings history is accurately
updated on a timely basis on the GUI.
Storage functionality to keep track of the user's savings and withdrawals, was also implemented in this savings feature,
which allowed me to understanding how data can be saved persistently in a Jackson file.

=== Minor Enhancement: History Command Retrieval
I also learnt to write unit and integration tests for automated testing within the Savings feature.

==== What it does
It also gave me the opportunity to interact more in depth with the application's GUI, so
as to effectively present the savings history to the user.

Retrieves the list of commands previously typed by the user from the users command history.
=== Other enhancements added: History Retrieval and Restricted Display in Savings History

This allows users to refer to the results display to reference the list of commands they have previously typed.
If the user wishes to view the past commands he/she has entered, they can simply type "history" to see the past commands
being reflected in the results display.
I assisted my team mate in enhancing his command history feature, allowing users to review the 10 latest
commands that they have typed using the `history` command.

The command alias of "h" is also provided to allow the users to engage the same command with less typing.
In addition, I conceptualised the restricted viewing of Savings History and added the classes related to the feature.

==== Justification
==== What it does

Users can retrieve the 10 most recently typed commands by using the `history` command.

This feature allows the user to conveniently refer to the list of commands he/she typed previously without the hassle of scrolling through his past commands
one by one using the "UP" or "DOWN" arrow. This can speed up input as users can simply copy and paste a command that was typed many commands earlier, increasing
convenience to the user.
Users can also view only their savings/withdrawals in the Savings History panel, by using the `show` command that I
have implemented.

==== Justification

The history feature allows the user to conveniently refer to the list of commands he/she typed previously without the hassle of scrolling through his past commands
one by one using the "UP" or "DOWN" arrow. This speeds up input as well, since users can simply copy and paste a command that was typed much earlier.
This is especially useful since this application is a Command-Line application.

On the other hand, the show feature allows the users to view only their savings/withdrawals, thus allowing them to
track for themselves the savings/withdrawals they have made so far and decide if they have been withdrawing too much.

==== Highlights

It references the Singleton class of `CommandHistory`, which was implemented as a queue, and served to primarily allow users to access previously typed commands
from the command-line.
I had to work closely with my other team members to implement the history feature as we worked on implementing different parts
of it.

However, I enabled the user to reference the full list of commands previous type from the `CommandHistory`. Now, previously typed commands are observable all at once.
This is an enhancement to the implemented command-line command history feature.
The restricted view of the user's savings history also involves the change of certain commands that affects other
commands in the GUI such as the `CommandResult` class, which is used by multiple components within the application.

=== Code contributions

Expand All @@ -108,46 +109,88 @@ https://nus-cs2103-ay1920s1.github.io/tp-dashboard/#search=fatclarence&sort=grou

* Project Management:

** Added user stories as issues on GitHub
** Adding users stories to share the goals of our application for the users

** Idealised and conceptualised the addition of the Savings feature

** Reviewed pull requests by team members
** Managed the integration of code by merging Pull Requests and ensuring compatibility

** Opened issues when enhancements could be made by team members [Issue https://github.com/AY1920S1-CS2103T-F13-2/main/issues/202[#202],
https://github.com/AY1920S1-CS2103T-F13-2/main/issues/140[#140]]

** Opened issues when bugs were found [Issue https://github.com/AY1920S1-CS2103T-F13-2/main/issues/133[#133]]

** Fixed bugs after they were found [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/159[#159]]
** Fixed bugs after they were found [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/159[#159],
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/297[#297]]

* Enhancements to existing features:

** Updated the GUI by introducting the Savings History Panel and Savings History Cards to enable the
display of the user's savings history. [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/177[#177]]

* Documentation:

** Updated User Guide and Developer Guide
** Updated User Guide

*** Added into the User Guide the instructions to use the Savings feature. [PR
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/301[#301]]

*** Update UI images in the User Guide [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/217[#217]]

*** Update other general commands found in the application [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/173[#173]]

*** Replace diagrams and update command information in User Guide and Developer Guide [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/217[#217],
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/188[#188]]
** Updated Developer Guide

*** Added into the Developer Guide information regarding the Savings feature. [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/188[#188],
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/191[#191], https://github.com/AY1920S1-CS2103T-F13-2/main/pull/320[#320]]

*** Update User Stories and set standard for User Stories formatting. [PR
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/67[#67]]

*** Update other general commands found in the application [PR https://github.com/AY1920S1-CS2103T-F13-2/main/pull/173[#173]]

** Community:

*** Reviewed the Developer Guide of other teams
*** PRs review (with non-trival review comments) [PR
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/323[#323],
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/305[#305],
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/238[#238],
https://github.com/AY1920S1-CS2103T-F13-2/main/pull/179[#179]]

*** Reviewed the Developer Guide of other teams with my team members [
https://github.com/nus-cs2103-AY1920S1/addressbook-level3/pull/64#pullrequestreview-306988261[Example here]]

== Contributions to the User Guide

This section shows the contributions that I have made to the Savings and Withdrawals feature of the User Guide.
This section shows the additions that I have made to the User Guide to provide information about how
the Savings feature works.

|===
| _I wrote the descriptions and commands for the savings feature (including commands for v2.0).
My description of the `save` command is replicated below
while my full write-ups can be found https://github.com/AY1920S1-CS2103T-F13-2/main/blob/master/docs/UserGuide.adoc#savings[here]._
|===

include::../UserGuide.adoc[tag=savings]

include::../UserGuide.adoc[tag=withdrawals]
|===
| _I also wrote the descriptions for the history command. This is replicated below._
|===

== Contributions to the Developer Guide
include::../UserGuide.adoc[tag=history]

This section shows the additions that I have made to the Savings feature of the Developer Guide.
== Contributions to the Developer Guide

include::../DeveloperGuide.adoc[tag=savings]
This section shows the additions that I have made to the Developer Guide to show the implementation
and design considerations for the Savings feature.

== Contributions to Developer Guide
|===
| _I described the design of the Savings feature and the implementation of commands that allow users
to interact with the Savings feature. My write-up for the `save` command is replicated below while my overview
of the Savings feature can be found
https://github.com/AY1920S1-CS2103T-F13-2/main/blob/master/docs/DeveloperGuide.adoc#savings-feature[here]._

I have made documentation contributions to the Developer Guide regarding the 2 main features I implemented, i.e. Savings-Tracking and Withdrawal-Tracking features. +
This section will only show the contribution that I have made regarding the Savings-Tracking feature of the Developer Guide to adhere to the PPP word limit. +
The documentation regarding the Withdrawal-Tracking feature can be found in our Developer Guide.
|===

include::../DeveloperGuide.adoc[tag=savings]

0 comments on commit 52fd457

Please sign in to comment.