-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommandPatternUndoOnlineShopExample.cs
More file actions
39 lines (28 loc) · 1.26 KB
/
CommandPatternUndoOnlineShopExample.cs
File metadata and controls
39 lines (28 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using GofConsoleApp.Examples.Behavioral.CommandPattern.OnlineShopComponents;
using GofConsoleApp.Examples.ExecutionHelpers;
using static GofConsoleApp.Examples.Behavioral.CommandPattern.OnlineShopComponents.EnumProductOperationOptions;
namespace GofConsoleApp.Examples.Behavioral.CommandPattern;
internal class CommandPatternUndoOnlineShopExample : BaseExample
{
protected override bool Execute()
{
EnumYesNo shopping;
var onlineShop = new OnlineShopAsInvoker(Logger); // Invoker
do
{
var inputOption = AcceptInputEnum(Invalid, "order process", Invalid);
if (inputOption == Invalid)
return Logger.LogAndReturnFalse($"Quitting program due to input: {inputOption}.");
var inputProduct = AcceptInputString("product name");
if (inputOption == Purchase)
onlineShop.PurchaseProduct(inputProduct);
else
onlineShop.ReturnProduct(inputProduct);
shopping = AcceptInputYesNo("input to continue shopping");
} while (shopping == EnumYesNo.Yes);
Logger.Log("---- ORDER SUMMARY ----");
var orderCount = onlineShop.CheckOut();
Logger.Log($"Total transactions: {orderCount}");
return true;
}
}