@startuml
!include https://raw.githubusercontent.com/xzynos/tp/branch-Webpage/docs/diagrams/Styles.puml

skinparam sequenceReferenceBackgroundColor #ffffff

Participant "consoleInterface:ConsoleInterface" as consoleInterface USER_INTERFACE_COLOR_1
Participant "expenseManager:ExpenseManager" as expenseManager DATA_COLOR_1
Participant "currencyManager:CurrencyManager" as currencyManager DATA_COLOR_1
Participant "<<class>>\nLocalStorage" as LocalStorage STORAGE_COLOR_1


activate consoleInterface USER_INTERFACE_COLOR_1

opt consoleCommand instanceof ConsoleCommandConvertCurrency
    consoleInterface -[USER_INTERFACE_COLOR_1]> consoleInterface : \lrunCommandConvertCurrency(\n\tconsoleCommand:ConsoleCommandConvertCurrency\n)
    activate consoleInterface USER_INTERFACE_COLOR_1

    consoleInterface -[USER_INTERFACE_COLOR_1]> expenseManager : getExpense(expenseIndex:int)
    activate expenseManager DATA_COLOR_1

    expenseManager --[DATA_COLOR_1]> consoleInterface : expense:Expense
    deactivate expenseManager

    consoleInterface -[USER_INTERFACE_COLOR_1]> currencyManager : hasCurrency(currency:String)
    activate currencyManager DATA_COLOR_1

    currencyManager --[DATA_COLOR_1]> consoleInterface
    deactivate currencyManager

    consoleInterface -[USER_INTERFACE_COLOR_1]> currencyManager : changeCurrency(expense:Expense, currency:String, rate:BigDecimal)
    activate currencyManager DATA_COLOR_1

    currencyManager -[DATA_COLOR_1]> currencyManager : \lexchangeCurrency(\n\texpense:Expense, \n\tcurrency:String, \n\trate:BigDecimal\n)
    activate currencyManager DATA_COLOR_1

    currencyManager -[DATA_COLOR_1]> currencyManager : newAmount:BigDecimal
    deactivate currencyManager

    currencyManager --[DATA_COLOR_1]> consoleInterface
    deactivate currencyManager

    ref over consoleInterface: Print Expense

    consoleInterface -[USER_INTERFACE_COLOR_1]> expenseManager : save()
    activate expenseManager DATA_COLOR_1

    expenseManager -[DATA_COLOR_1]> LocalStorage : \lsaveToFile(\n\texpenses:ArrayList<Expense>\n)
    activate LocalStorage STORAGE_COLOR_1

    LocalStorage --[STORAGE_COLOR_1]> expenseManager
    deactivate LocalStorage

    expenseManager --[DATA_COLOR_1]> consoleInterface
    deactivate expenseManager

    consoleInterface --[USER_INTERFACE_COLOR_1]> consoleInterface
    deactivate consoleInterface
end

deactivate consoleInterface
@enduml
