Skip to content

Latest commit

 

History

History
58 lines (38 loc) · 4.9 KB

mechome.adoc

File metadata and controls

58 lines (38 loc) · 4.9 KB

Cho Ming En - Project Portfolio

PROJECT: MINDEF Duty Planner


Overview

MINDEF Duty Planner is a platform to assist military units in the SAF in the assignment of daily duties amongst the servicemen. The application is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). The software is designed to automate the process of fairly assigning duties to available servicemen for an entire month. It also enables servicemen to conveniently indicate the days they are unavailable for duty. It seeks to fairly distribute duties by taking into account the varying importance of each duty (e.g. Sunday duties are worth more than weekday duties).

Summary of contributions

  • Major enhancement: Added the ability to request swapping of duties (using the 'swap' command), respond to swap requests (using the 'acceptSwap' command), view paired swaps (using the 'viewSwaps' command) and approve or reject swap requests (using the 'approveSwap' or 'rejectSwap' command).

    • What it does: allows a user who is a particular person in the personnel database to request for a swap of his duty with another person’s duty. Both duties have to be in the next month.

    • Justification: This feature is very useful for a serviceman who is suddenly unavailable to perform guard duty due to ad hoc reasons. He can broadcast his swap request onto the app in the large panel on the bottom right and other servicemen can view his request and respond if they are willing and able to swap with him. After that, an admin user will approve or reject the swap.

    • Highlights: This functionality is very convenient for the users because it requires no verbal communication at all and the process is completely streamlined to be performed on the app. Physical or verbal communication is only necessary if there are disputes. This enhancement involves changes in logic (commands), UI (browser panel), storage (storing of requests) and model (structure of requests). Implementing this feature required understanding how and when saving to a json file happens so as to trigger the save event when needed. It was also difficult to convert the browser panel from an object that displays web pages to a text object, having no prior experience in GUI.

    • Credits: Valavan for the idea of swap requests and my team for helping me to develop the idea

  • Minor enhancement: Converted the Person class to one suitable for the duty planner. This means removing the email and address fields (which are classes in themselves) and adding in Company, Section, Rank and NRIC. This was very time-consuming, especially with having to adapt all the tests involving Person objects with no exception. We could theoretically have done away with the individual classes for each field but I decided to preserve the existing structure to reduce complications after analysis of the trade-offs.

  • Minor enhancement: Morphed the browser panel to display the list of open swap requests (i.e swap requests that are awaiting response) instead of a website.

  • Code contributed: [Code]

  • Other contributions:

    • Project management:

      • Curated Issues Tracker

    • Enhancements to existing features:

      • Renamed the internal address book class to personnel database to reflect our product differentiation: #33, #70, #71

      • Added and edited tests for existing features (example: JsonAdaptedPersonTest.java, see #34, #70, #71)

    • Documentation:

      • Edited the User Guide to reflect our product: #33, #71

    • Community:

      • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3, 4)

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.