@startuml
skinparam monochrome true
skinparam packageStyle rectangle
skinparam shadowing false

autonumber

'hide footbox
actor VehicleFleetManager as VFM
participant ":RegisterVehicleUI" as UI
participant ":RegisterVehicleController" as CTRL

activate VFM

VFM -> UI : asks to to register a vehicle

activate UI

UI -> CTRL** : create
UI --> VFM : requests data (license plate)

deactivate UI

VFM -> UI : types requested data

activate UI

UI -> CTRL : submitVehiclePlate()

ref over CTRL
             Submit Vehicle Plate

         end ref

         activate CTRL

alt vehicle exists (true)

    CTRL --> UI : display exception "Vehicle already exists"

    deactivate CTRL

    UI --> VFM : displays operation insuccess


else vehicle not exists (false)

    UI --> VFM : validate vehicle plate and requests confirmation

    deactivate UI

    VFM -> UI : confirms data

    activate UI

    UI -> CTRL : getBrandList()

ref over CTRL
             Get Brand List

         end ref

         activate CTRL
    CTRL --> UI : brandList

    deactivate CTRL

    UI --> VFM : requests brand

    deactivate UI

    VFM -> UI : selects brand

    activate UI

    UI -> CTRL: getModelList()

ref over CTRL
             Get Model List

         end ref

         activate CTRL

    CTRL --> UI: modelList

    deactivate CTRL

    UI --> VFM : requests model

    deactivate UI

    VFM -> UI : selects model

    activate UI

    UI -> CTRL: getTypelList()

ref over CTRL
             Get type List

         end ref

         activate CTRL

    CTRL --> UI: typeList

    deactivate CTRL

    UI --> VFM : requests type

    deactivate UI

    VFM -> UI : selects type

    activate UI

    UI --> VFM : requests typed data (number of seats, number of doors,\n tare, gross weight, current km, register date, acquisition date, \n check- up frequency (in Kms))

    deactivate UI

    VFM -> UI : types data

    activate UI

    UI --> VFM : shows selected and typed data and request confirmation

    deactivate UI

    VFM -> UI : confirmation and submission of data

    activate UI

    UI -> CTRL : registerVehicle(brand, model, type, license Plate,\nnumber of seats, number of doors, tare, gross weight,\ncurrent km, register date, acquisition date, \n check- up frequency (in Kms))

    ref over CTRL
                 Register Vehicle

             end ref

             activate CTRL

    CTRL --> UI: operation success

    deactivate CTRL

    UI --> VFM: display operation success

end

deactivate UI
deactivate VFM

@enduml
