@startuml
!include style.puml
skinparam ArrowFontStyle plain

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
participant ":AddOrderCommandParser" as AddOrderCommandParser LOGIC_COLOR
participant "a:AddOrderCommand" as AddOrderCommand LOGIC_COLOR
participant "r:CommandResult" as CommandResult LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant "m:Model" as Model MODEL_COLOR
end box

[-> LogicManager : execute("order p/87438807")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("order p/87438807")
activate AddressBookParser

create AddOrderCommandParser
AddressBookParser -> AddOrderCommandParser
activate AddOrderCommandParser

AddOrderCommandParser --> AddressBookParser
deactivate AddOrderCommandParser

AddressBookParser -> AddOrderCommandParser : parse("p/87438807")
activate AddOrderCommandParser

create AddOrderCommand
AddOrderCommandParser -> AddOrderCommand
activate AddOrderCommand

AddOrderCommand --> AddOrderCommandParser :
deactivate AddOrderCommand

AddOrderCommandParser --> AddressBookParser : a
deactivate AddOrderCommandParser
'Hidden arrow to position the destroy marker below the end of the activation bar.
AddOrderCommandParser -[hidden]-> AddressBookParser
destroy AddOrderCommandParser

AddressBookParser --> LogicManager : a
deactivate AddressBookParser

LogicManager -> AddOrderCommand : execute(m)
activate AddOrderCommand

AddOrderCommand -> Model : findPersonByPhoneNumber("87438807")
activate Model
Model --> AddOrderCommand : person
deactivate Model

AddOrderCommand -> Model : addOrder(order, person)
activate Model
Model --> AddOrderCommand
deactivate Model

create CommandResult
AddOrderCommand -> CommandResult
activate CommandResult

CommandResult --> AddOrderCommand
deactivate CommandResult

AddOrderCommand --> LogicManager : r
deactivate AddOrderCommand

[<--LogicManager
deactivate LogicManager
@endumlml
