@startuml
title History Diagram

actor User
participant "History (fxml)"
participant HistoryController
participant HistoryFacade
participant SessionFacade
participant HistoryManagement
participant AbstractFactoryDAO
participant FactoryDAOMySQL
participant HistoryDAOMySQL
participant Connection
participant Statement
database DB


"History (fxml)"-->User: Display home view

activate "History (fxml)"
activate User
activate DB


User->"History (fxml)": Click "History" in the nav bar

"History (fxml)"->HistoryController: handleOffersFromHistory(actionEvent : ActionEvent)

activate HistoryController

HistoryController->HistoryFacade:viewAllOffersFromHistory()

deactivate HistoryController

activate HistoryFacade

HistoryFacade->AbstractFactoryDAO:getInstance()
activate AbstractFactoryDAO

AbstractFactoryDAO--> HistoryFacade : FactoryDAOMySQL
deactivate AbstractFactoryDAO

HistoryFacade -> FactoryDAOMySQL:getHistoryDAO()

activate FactoryDAOMySQL

FactoryDAOMySQL->HistoryDAOMySQL **:Create(connection)

activate HistoryDAOMySQL
FactoryDAOMySQL-->HistoryFacade:HistoryDAOMySQL

deactivate FactoryDAOMySQL

HistoryFacade->SessionFacade: getUser()
activate SessionFacade
SessionFacade-->HistoryFacade: return user
deactivate SessionFacade

HistoryFacade->HistoryDAOMySQL:getAllOffersFromHistory(userId : int)
HistoryDAOMySQL->Connection: prepareStatement()
activate Connection

Connection-->Statement **: Create

activate Statement

Connection-->HistoryDAOMySQL: Statement

deactivate Connection

HistoryDAOMySQL->Statement:executeQuery()

Statement->DB: SQL Query

DB->Statement:Result

Statement-->HistoryDAOMySQL: ResultSet

deactivate Statement

HistoryDAOMySQL-->HistoryFacade: return Offer[]
alt Offer[]==null
    HistoryFacade-->HistoryFacade: NoHistoryException raised
else
    HistoryFacade-->HistoryController : return Offer[]
    activate HistoryController
end


deactivate HistoryFacade

HistoryController-->"History (fxml)": Display all history offers or view with "No results"

deactivate HistoryController

"History (fxml)"-->User: Display corresponding View

deactivate DB
deactivate HistoryManagement
deactivate User

@enduml