Introduction

This page serves to document my contributions to the project ezFoodie under NUS module CS2103T in AY21/22 semester 1.

Project: ezFoodie

ezFoodie is a desktop application that helps restaurants keep track of their ever-growing list of members. Restaurant managers and staffs can easily view and update member status (e.g. personal information, tier, reservation, transaction, etc.) to manage and analyze members. Restaurant managers and staffs interact with ezFoodie using a Command Line Interface (CLI), and has a Graphical User Interface (GUI) created with JavaFX.

It is written in Java, and has about 35 kLoC, of which I contributed about 10 kLoC.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • New Model: Created the Account model to support implementing login and logout features as a manager. #74
    • What it does: stores the Account information for the manager to login.
    • Justification: This model is essential, since some advanced features such as delete and sort are required the manager permission. It is a bridge between the staff and manager.
    • Highlights: This enhancement requires understanding on how hash works. The implementation was challenging as the Account information need to be hashed when it is storing in the file for the purpose of high security.
  • New Feature: Added the ability to login as a manager #74
    • What it does: allows the manager to login as a manager.
    • Justification: The staff and manager should not have the full permission to control the application. Some advanced features such as delete and sort should only be accessed by manager.
  • New Feature: Added the ability to logout as a manager #72
    • What it does: allows the manager to logout as a manager.
    • Justification: The manager should be able to logout the application to prevent the staff from operating the advanced features such as delete and sort that it should only be accessed by manager.
  • New Feature: Added the ability to edit Transaction by Transaction ID #75, #112
    • What it does: allows the staff and manager to edit Transaction by Transaction ID.
    • Justification: The staff and manager should be able to correct any accidental mistakes conveniently when he/she adds some incorrect Transaction records.
    • Highlights: This enhancement requires understanding on how polymorphism works and implement it so that the application will use Object-oriented programming (OOP) sufficiently. The implementation was challenging as the EditCommand need to be abstracted, and inherit EditCommand by EditCommandPrefixParser, and further inherit EditCommandPrefixParser by EditTransactionCommand. Similarly, the EditCommandParser also need to be abstracted, and inherit it with EditTransactionCommandParser.
  • New Feature: Added the ability to edit Reservation by Reservation ID #114
    • What it does: allows the staff and manager to edit Reservation by Reservation ID.
    • Justification: The staff and manager should be able to correct any accidental mistakes conveniently when he/she adds some incorrect Reservation records.
    • Highlights: This enhancement requires understanding on how polymorphism works and implement it so that the application will use Object-oriented programming (OOP) sufficiently. The implementation was challenging as the EditCommand need to be abstracted, and inherit EditCommand by EditCommandPrefixParser, and further inherit EditCommandPrefixParser by EditReservationCommand. Similarly, the EditCommandParser also need to be abstracted, and inherit it with EditReservationCommandParser.
  • New Feature: Added the ability to delete Member by Member ID #77
    • What it does: allows the manager to delete Member by Member ID.
    • Justification: This feature is essential, since the Transaction and Reservation is based on each member, it is necessary to use Member ID to identify the Member so that his/her Transaction and Reservation can be identified properly as well (Currently the application is using Member ID + Transaction ID to retrieve the Transaction, so is Reservation).
  • New Feature: Added the ability to delete Transaction by Transaction ID #101
    • What it does: allows the manager to delete Transaction by Transaction ID
    • Justification: This feature is essential, since each Transaction has its own ID, and the application is not able to list all the Transactions, it is impossible to delete Transaction by Index. Therefore, the Transaction ID is the only attribute to identify the Transaction.
    • Highlights: This enhancement requires understanding on how polymorphism works and implement it so that the application will use Object-oriented programming (OOP) sufficiently. The implementation was challenging as the DeleteCommand need to be abstracted, and inherit DeleteCommand by DeleteCommandPrefixParser, and further inherit DeleteCommandPrefixParser by DeleteTransactionCommand. Similarly, the DeleteCommandParser also need to be abstracted, and inherit it with DeleteTransactionCommandParser.
  • New Feature: Added the ability to sort Member by Credit #79
    • What it does: allows the manager to sort Member by Credit.
    • Justification: This feature improves the product significantly because the manager can formulate promotional strategies by analyzing the member data like how many credit the member has earned.
    • Highlights: This enhancement requires understanding on how javafx.collections package works. The implementation was challenging as it requires combining and synchronizing the object of the FilteredList and the SortedList so that data will not be messed up when the find or sort feature is called.
  • New Feature: Added the ability to retrieve history commands #113
    • What it does: allows the staff and manager to retrieve previous commands using up/down keys.
    • Justification: This feature improves the product significantly because the staff and manager can execute the similar commands much faster without retyping.
  • New Feature: Added the ability to escape summary, show and help window #194
    • What it does: allows the staff and manager to escape summary, show or help window using esc key.
    • Justification: This feature is helpful to improve the use efficiency because the staff and manager do not need to use the mouse to exit the window.
  • New Feature: Updated a neater and better UI for the show feature #194
    • What it does: allows the staff and manager to view the member details more clearly.
    • Justification: This feature improves the product significantly because the manager will be very easy to view the member details, such as transactions and reservations records.
  • Enhancements to existing models:
    • Updated the AddressBook to the ezFoodie #45
    • Updated the Person model to the Member model #48
    • Added the ID for the Member model so that the staff and manager can do operations based on the Member ID #51
    • Added the ID for the Transaction model so that the staff and manager can do operations based on the Transaction ID #100
    • Added the Timestamp for the Member model and Transaction model so that the application can record down the registration Timestamp of the Member and the payment Timestamp of the Transaction #59
    • Added the Credit for the Member model so that the application can record down the Credit that the Member has earned. #79
    • Added the Tier for the Member model so that the application can show the Tier of the Member based on his/her Credit. #81
  • Enhancements to existing features:
    • Updated the add feature so that it can supoort add member ID #55
    • Updated the list feature so that it can supoort list -mem instead of list #78
    • Updated the find feature so that it can supoort find Member by Member ID, Name, Phone, Email and Registration Date #64
  • Project management:
  • Documentation:
    • index:
      • Fixed hyperlink bugs #89
    • README:
      • Updated formats #42
    • User Guide:
      • Added documentation for the features find and sort #89
      • Updated formats and fixed bugs #40, #41
      • Updated formats for all commands #116
    • Developer Guide:
      • Updated Product scope, User stories, Use cases, Non-Functional Requirements, Glossary #24
      • Added documentation for the features find and sort #89
      • Updated all diagrams and descriptions including sequence diagram, class diagram, activity diagram, etc.
      • Updated User stories and Use cases #204
      • Added Appendix 3: Effort and Appendix 4: Limitations and Future improvements #207
    • About Us:
      • Updated formats #43
  • Community: