@startuml
!include style.puml
skinparam ArrowFontStyle plain

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":BookKeeperParser" as BookKeeperParser LOGIC_COLOR
participant ":DeleteOrderCommandParser" as DeleteOrderCommandParser LOGIC_COLOR
participant "d:DeleteOrderCommand" as DeleteOrderCommand 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("deleteOrder 1")
activate LogicManager

LogicManager -> BookKeeperParser : parseCommand("deleteOrder 1")
activate BookKeeperParser

create DeleteOrderCommandParser
BookKeeperParser -> DeleteOrderCommandParser : DeleteOrderCommandParser()
activate DeleteOrderCommandParser

DeleteOrderCommandParser --> BookKeeperParser
deactivate DeleteOrderCommandParser

BookKeeperParser -> DeleteOrderCommandParser : parse("1")
activate DeleteOrderCommandParser

create DeleteOrderCommand
DeleteOrderCommandParser -> DeleteOrderCommand : DeleteOrderCommand(1)
activate DeleteOrderCommand

DeleteOrderCommand --> DeleteOrderCommandParser :
deactivate DeleteOrderCommand

DeleteOrderCommandParser --> BookKeeperParser : d
deactivate DeleteOrderCommandParser
'Hidden arrow to position the destroy marker below the end of the activation bar.
DeleteOrderCommandParser -[hidden]-> BookKeeperParser
destroy DeleteOrderCommandParser

BookKeeperParser --> LogicManager : d
deactivate BookKeeperParser

LogicManager -> DeleteOrderCommand : execute(m)
activate DeleteOrderCommand

DeleteOrderCommand -> Model : getFilteredOrderList()
activate Model
Model --> DeleteOrderCommand
deactivate Model

DeleteOrderCommand -> Model : getFilteredClientList()
activate Model
Model --> DeleteOrderCommand
deactivate Model

DeleteOrderCommand -> Model : setClient(c)
activate Model
Model --> DeleteOrderCommand
deactivate Model

DeleteOrderCommand -> Model : deleteOrder(1)
activate Model
Model --> DeleteOrderCommand
deactivate Model

create CommandResult
DeleteOrderCommand -> CommandResult : CommandResult(message)
activate CommandResult

CommandResult --> DeleteOrderCommand
deactivate CommandResult

DeleteOrderCommand --> LogicManager : r
deactivate DeleteOrderCommand

[<--LogicManager
deactivate LogicManager
@enduml
