Git Product home page Git Product logo

comp354-project's People

Watchers

James Cloos avatar Kadeem Caines avatar Hrachya Hakobyan avatar Abed avatar

Forkers

rennxd

comp354-project's Issues

Delete/Update User Account

The user should have the opportunity to delete/deactivate his/her account from the Update User Details page.

  1. Suggested approach
  • A delete/deactivate button in the Update User Details page
  • Create a new API in the UserService, of the form void deleteUser(User) to the interface and implementation. This call would also use an AccountService to delete all Accounts of the user. The API call should handle user authorization and authentication, i.e. whether the user to be deleted is the user currently logged-in and whether there is a user currently logged-in.
  • Create a new API in the UserService, of the form User updateUser(User) to the interface and implementation. Should handle authorization and authentication, same as above.
  • Handle back-end validation of the User fields, throw appropriate ValidationException-s with ValidationErrors
  • Re-authenticate the user before deleting the account by showing a pop-up and requiring the password. Use the AuthenticationService.
  • Once the user is deleted, the app should show the login page.
  1. Tests
  • Delete a user while not logged-in
  • Delete a user different from the logged-in user
  • Deleting a non-existent user
  • Deleting a user while the Account(s) fail to be deleted
  • Deleting bank accounts while the user fails to be deleted
  • Update a user that does not exist
  • Update a user while not logged-in
  • Update a user different from the logged-in user
  • Update the username should not be allowed
  • Invalid first name, last name, email, etc...
  1. Acceptance criteria
  • The service tests pass
  • Manual GUI testing
  • Appropriate exception and error names

Start application main code

Program the foundations of the application so that the other coders can start working on the project also

Use Case 10: Filter transactions by date range

The list of transactions is displayed in AccountDetailsController and AllTransactionsController.

Use two DatePicker to select a date range, then filter the list of transactions by their date property. The date is an Integer unix timestamp in seconds. You would have to convert the LocalDate object received from the DatePicker-s to seconds. This post might help.

add a 'account id' column to 'view all transactions'

Note that since 'all transactions' and 'acount details' both use the same tableview and model. Hence, a new model must be created since it would be useless to show bank account ids on the 'account detail' view.

Update User Account UI

The user should have the opportunity to view the user account details and be able to update them.

  1. Suggested approach
  • A button on the main page that would open up a new scene with user account details.
  • A new UpdateUserController class.
  • The ability to change the first name, last name, email, phone number, password. Changing the password should require confirmation. Also, add front-end validation.
  • A Save button on the Update User page.
  • A delete/deactivate user button.
  1. Acceptance criteria
  • Manual GUI testing

Use Case 11: Search transactions by category

The Transaction model is located in service.account package.

The list of transactions is displayed in two view controllers: AccountDetailsController and AllTransactionsController. Both controllers have a member transactionTableViewController which they populate with a list of transactions.

You need to add a JFXTextField to both controllers and use the value of the text field to filter out the transactions by their category. You can simply use the startsWith() method of the String class to achieve that. Also, make sure to cast both Strings (i.e. the search text from the text field and the category of each transaction) to lowercase before calling the function.

This post shows how to listen to textfield changes

reconsider exception design

exceptions aren't properly implemented, some are poorly designed, many are poorly used in our services, errors aren't properly built. alert helper should also have some integration with our errors.

Use Case 12: Generate Statement

Use the tableData list of TransactionDisplayModels from TransactionTableController to write it to a csv file.
The location of the file is not important at this point, just write it somewhere in the resources directory.

Create a separate class that accepts a list(or observable list) and a file name/path and creates a CSV file with the contents.

Example given by oracle (ctrl+f for writeExcel() function):
https://community.oracle.com/thread/2397100

Delete User Bank Account

The system should allow deletion of Account-s (not RemoteAccount-s) and all their associated Transactions(not RemoteTransactions).

  1. Suggested approach
  • Add a new API to the AccountService to accomplish that void deleteAccount(Account account). This call would also delete all the associated Transactions.
  • Add a new API to the UserService void deleteBankAccount(Account) that is used by the view controller to delete the user's bank account. It must handle authorization and authentication of the user. Use SessionManager to handle authentication, and check ID-s to verify the account belongs to the user.
  • Add delete functionality to the AccountListController or table view controller.
  1. Tests
  • AccountService
    • Deleting non-existent accounts.
    • Deleting the account while one or more Transactions fail to be deleted
    • Deleting one or more transactions while the account fails to be deleted
  • UserService
    • Deleting an account while the user is not logged-in
    • Deleting an account that does not belong to the logged-in user
  1. Acceptance critera
  • All tests pass.
  • Manual GUI testing

Test validators

Add unit tests to validator classes found in com.github.comp354project.service.validators

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.