diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8b06e985aa..fb94957b3c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -80,7 +80,7 @@ The following class diagram illustrates the relationship between the respective ![Add_order Execution](images/sequence/AddOrderCommand_execute.png) -Figure 1: Execution of add_order command +Figure 2: Execution of add_order command API: [AddOrderCommand.java]({repoURL}src/main/java/seedu/cafectrl/command/ListMenuCommand.java) @@ -100,6 +100,47 @@ After verifying that the order has been completed, the cost of the order is adde The total sum of orders in the `orderList` object is retrieved using `orderList.getTotalCost()`. This is then passed into Ui using `ui.showTotalCost()` to display a message to the user with the total order cost. +### Next Day +A `next_day` command can be used advance the current day. + +The following class diagram illustrates the relationship between the respective classes involved in the creation and execution of a next_day command. +![Next_Day Execution](images/class/NextDayCommandClass.png) + +![Next_Day Execution](images/sequence/NextDayCommand_execute.png) + +Figure 3: Execution of next_day command + +API: [NextDayCommand.java]({repoURL}src/main/java/seedu/cafectrl/command/ListMenuCommand.java) + +When the `execute()` method of NextDayCommand is invoked in Main, the day in the program is advanced by 1 day, by running `currentDate.nextDay()`. + +The next day data is retrieved from the `CurrentDate` object using `currentDate.getCurrentDay()`. +This next day data is compared with the days accounted for in the `Sales` object, retrieved using `sales.getDaysAccounted()`. + +If the next day is more than the number of days accounted in sales, this means that there is no `orderList` prepared for the coming day. +A new `OrderList` object is created using `new OrderList()`, and added into the `Sales` object by running `sales.addOrderList()`. +Following this, the day has been accounted and this is updated through `sales.nextDay()`. + +To end off the command, `ui.showNextDay()` is run to display a message to the user a prepared message for advancing the day. +The user is also shown the advanced day number. + +### Previous Day +A `previous_day` command can be used to recede the current day. + +The following class diagram illustrates the relationship between the respective classes involved in the creation and execution of a next_day command. +![Previous_Day Execution](images/class/PreviousDayCommandClass.png) + +![Previous_Day Execution](images/sequence/PreviousDayCommand_execute.png) + +Figure 4: Execution of previous_day command + +API: [PreviousDayCommand.java]({repoURL}src/main/java/seedu/cafectrl/command/ListMenuCommand.java) + +When the `execute()` method of PreviousDayCommand is invoked in Main, the day in the program is receded by 1 day, by running `currentDate.previousDay()`. + +To end off the command, `ui.showPreviousDay()` is run to display a message to the user a prepared message for receding the day. +The user is also shown the receded day number. + ### List Ingredients ![List Ingredient Execution](images/sequence/ListIngredientCommand_execute.png) diff --git a/docs/diagrams/class/AddOrderCommandClass.puml b/docs/diagrams/class/AddOrderCommandClass.puml index 35ab6ac23e..528ac37412 100644 --- a/docs/diagrams/class/AddOrderCommandClass.puml +++ b/docs/diagrams/class/AddOrderCommandClass.puml @@ -1,6 +1,8 @@ @startuml 'https://plantuml.com/class-diagram +title Class Diagram of CafeCtrl `add_order` Command + CafeCtrl "1" --> "1" UI CafeCtrl "1" --> "1" Parser CafeCtrl "1" --> "1" Sales @@ -10,12 +12,15 @@ CafeCtrl "1" o-- "*" Command Command <|- AddOrderCommand Parser "1" --> "*" AddOrderCommand -Parser --> CurrentDate +Parser ..> CurrentDate +Parser ..> Sales AddOrderCommand --> OrderList AddOrderCommand "1" --> "1" Chef AddOrderCommand --> Pantry -OrderList "1" --> "*" Order +AddOrderCommand ..> Order +OrderList --> "*" Order Sales --> "1...*" OrderList +Chef ..> Pantry class CafeCtrl { - setup() @@ -28,7 +33,7 @@ class Command { } class UI { -{static} - scanner : Scanner +- scanner : Scanner + receiveUserInput() : String + showToUser() : void + showChefMessage() : void @@ -36,15 +41,18 @@ class UI { } class AddOrderCommand { -# orderList : OrderList -# ui : Ui # pantry : Pantry +# orderList : OrderList +# menu : Menu +- ui : Ui +- order : Order + execute() : void } class Parser { {static} + parseCommand(menu : Menu, userInput : String, ui : Ui, pantry : Pantry, sales : Sales, currentDate : CurrentDate) : Command {static} - prepareOrder(menu : Menu, arguments : String, ui : Ui, pantry : Pantry, sales : Sales, currentDate : CurrentDate) : Command +{static} - setOrderList(currentDate : CurrentDate, sales : Sales) } class OrderList { @@ -80,12 +88,13 @@ class Pantry { - pantryStock : ArrayList - menuItems : ArrayList - ui : Ui -+ decreaseIngredientsStock(dishIngredient : ArrayList) : void ++ isDishCooked( :ArrayList) : boolean ++ calculateDishAvailability(menu : Menu) : void } class Sales { - orderLists : ArrayList -- daysAccounted : int ++ getOrderList(index : int) : OrderList } class CurrentDate { diff --git a/docs/diagrams/class/ListMenuCommandClass.puml b/docs/diagrams/class/ListMenuCommandClass.puml index d210958d9d..3f754f506f 100644 --- a/docs/diagrams/class/ListMenuCommandClass.puml +++ b/docs/diagrams/class/ListMenuCommandClass.puml @@ -12,7 +12,7 @@ CafeCtrl "1" o-- "*" Command Command <|- ListMenuCommand Parser "1" --> "*" ListMenuCommand ListMenuCommand --> Menu -Menu --> "*" Dish +Menu -- "*" Dish class CafeCtrl { - setup() @@ -25,7 +25,7 @@ class Command { } class UI { -{static} - scanner : Scanner +- scanner : Scanner + receiveUserInput() : String + showMenuTop() : void + showMenuBottom() : void @@ -34,8 +34,8 @@ class UI { } class ListMenuCommand { -# menu : Menu -# ui : Ui +- menu : Menu +- ui : Ui + execute() : void + printEmptyMenu(ui : Ui) : void + printFullMenu(menu : Menu, ui : Ui) diff --git a/docs/diagrams/class/NextDayCommandClass.puml b/docs/diagrams/class/NextDayCommandClass.puml index 152b36b36b..8cc39df7fb 100644 --- a/docs/diagrams/class/NextDayCommandClass.puml +++ b/docs/diagrams/class/NextDayCommandClass.puml @@ -1,6 +1,8 @@ @startuml 'https://plantuml.com/class-diagram +title Class Diagram of CafeCtrl `next_day` Command + CafeCtrl "1" --> "1" UI CafeCtrl "1" --> "1" Parser CafeCtrl "1" --> "1" Sales @@ -9,7 +11,7 @@ CafeCtrl "1" o-- "*" Command Command <|- NextDayCommand Parser "1" --> "*" NextDayCommand -NextDayCommand --> OrderList +NextDayCommand ..> OrderList : Creates > NextDayCommand --> CurrentDate NextDayCommand --> Sales Sales --> "1...*" OrderList @@ -25,7 +27,7 @@ class Command { } class UI { -{static} - scanner : Scanner +- scanner : Scanner + receiveUserInput() : String + showToUser() : void + printLine() : void diff --git a/docs/diagrams/class/PreviousDayCommandClass.puml b/docs/diagrams/class/PreviousDayCommandClass.puml index 356e6e89dd..78287a6dba 100644 --- a/docs/diagrams/class/PreviousDayCommandClass.puml +++ b/docs/diagrams/class/PreviousDayCommandClass.puml @@ -1,7 +1,9 @@ @startuml 'https://plantuml.com/class-diagram -CafeCtrl "1" --> "1" UI +title Class Diagram of CafeCtrl `previous_day` Command + +CafeCtrl "1" --> "1" Ui CafeCtrl "1" --> "1" Parser CafeCtrl "1" --> "1" CurrentDate CafeCtrl "1" o-- "*" Command @@ -21,8 +23,8 @@ class Command { } -class UI { -{static} - scanner : Scanner +class Ui { +- scanner : Scanner + receiveUserInput() : String + showToUser() : void + printLine() : void diff --git a/docs/diagrams/sequence/AddOrderCommand_execute.puml b/docs/diagrams/sequence/AddOrderCommand_execute.puml index afd66a8c2a..71cf13001f 100644 --- a/docs/diagrams/sequence/AddOrderCommand_execute.puml +++ b/docs/diagrams/sequence/AddOrderCommand_execute.puml @@ -22,16 +22,22 @@ autonumber return ":Chef" -> ":Order" : getIngredientList() activate ":Order" - return ingredientList : ArrayList - ":Chef" -> ":Pantry" : decreaseIngredientsStock(ingredientList : ArrayList) + return :ArrayList + ":Chef" -> ":Pantry" : isDishCooked(:ArrayList) activate ":Pantry" - return - ":Chef" -> ":Order" : setComplete() + return isComplete : boolean + ":Chef" -> ":Order" : setComplete(isComplete : boolean) activate ":Order" return end - ":Chef" -> ":Ui" : showToUser(args : String) + ":Chef" -> ":Ui" : showOrderStatus(args : String) activate ":Ui" + ":Ui" -> ":Ui" : showToUser(args : String) + activate ":Ui" + return + return + ":Chef" -> ":Pantry" : calculateDishAvailability(menu : Menu) + activate ":Pantry" return return opt order.getIsComplete() @@ -39,14 +45,5 @@ autonumber activate ":OrderList" return end - ":AddOrderCommand" -> ":OrderList" : getTotalCost() - activate ":OrderList" - return totalOrderListCost : float - ":AddOrderCommand" -> ":Ui" : showTotalCost(totalOrderListCost) - activate ":Ui" - ":Ui" -> ":Ui" : showToUser(args : String) - activate ":Ui" - return - return return @enduml \ No newline at end of file diff --git a/docs/images/class/AddOrderCommandClass.png b/docs/images/class/AddOrderCommandClass.png index 80169bb30a..924dca2ed5 100644 Binary files a/docs/images/class/AddOrderCommandClass.png and b/docs/images/class/AddOrderCommandClass.png differ diff --git a/docs/images/class/ListMenuCommandClass.png b/docs/images/class/ListMenuCommandClass.png index 6ade77f0c3..8073ec6f3a 100644 Binary files a/docs/images/class/ListMenuCommandClass.png and b/docs/images/class/ListMenuCommandClass.png differ diff --git a/docs/images/class/NextDayCommandClass.png b/docs/images/class/NextDayCommandClass.png index 6e8cbc95f0..e4422a4e48 100644 Binary files a/docs/images/class/NextDayCommandClass.png and b/docs/images/class/NextDayCommandClass.png differ diff --git a/docs/images/class/PreviousDayCommand.png b/docs/images/class/PreviousDayCommand.png deleted file mode 100644 index 7f0ce6e79b..0000000000 Binary files a/docs/images/class/PreviousDayCommand.png and /dev/null differ diff --git a/docs/images/class/PreviousDayCommandClass.png b/docs/images/class/PreviousDayCommandClass.png new file mode 100644 index 0000000000..14f91293f2 Binary files /dev/null and b/docs/images/class/PreviousDayCommandClass.png differ diff --git a/docs/images/sequence/AddOrderCommand_execute.png b/docs/images/sequence/AddOrderCommand_execute.png index c5034f7fe7..91196ab29c 100644 Binary files a/docs/images/sequence/AddOrderCommand_execute.png and b/docs/images/sequence/AddOrderCommand_execute.png differ diff --git a/src/main/java/seedu/cafectrl/command/AddOrderCommand.java b/src/main/java/seedu/cafectrl/command/AddOrderCommand.java index 5c90f0b6cc..285862ab52 100644 --- a/src/main/java/seedu/cafectrl/command/AddOrderCommand.java +++ b/src/main/java/seedu/cafectrl/command/AddOrderCommand.java @@ -16,12 +16,12 @@ public class AddOrderCommand extends Command { + "Example: " + COMMAND_WORD + "name/chicken rice qty/2"; - protected Ui ui; protected Pantry pantry; protected OrderList orderList; protected Menu menu; + private final Ui ui; + private final Order order; - Order order; public AddOrderCommand(Order order, Ui ui, Pantry pantry, OrderList orderList, Menu menu) { this.order = order; this.ui = ui; diff --git a/src/main/java/seedu/cafectrl/command/ListMenuCommand.java b/src/main/java/seedu/cafectrl/command/ListMenuCommand.java index 202480a524..f3e29810c3 100644 --- a/src/main/java/seedu/cafectrl/command/ListMenuCommand.java +++ b/src/main/java/seedu/cafectrl/command/ListMenuCommand.java @@ -15,8 +15,8 @@ public class ListMenuCommand extends Command { + COMMAND_WORD; private static final DecimalFormat dollarValue = new DecimalFormat("0.00"); - protected Menu menu; - protected Ui ui; + private final Menu menu; + private final Ui ui; /** * Constructor for the ListMenuCommand