@startuml
skinparam titleBorderRoundCorner 10
skinparam titleBorderThickness 3
skinparam titleBorderColor indianred
skinparam titleBackgroundColor ivory
skinparam FontName quicksand

skinparam actor {
  BorderColor indianred
  }

skinparam sequence {
  LifeLineBackgroundColor indianred
  ParticipantBackgroundColor ivory
}

skinparam roundcorner 10

skinparam component {
  arrowThickness 1
  ArrowFontName Verdana
  ArrowColor indianred
  ArrowFontColor darkslategrey
}

title US631 \n As a Regular User, I want to get the first hottest day (higher maximum temperature) in the house area in a given period. \n - Success Case -

autonumber

actor User

User -> ":MainUI": Start program
activate ":MainUI"

":MainUI" --> User: Show option menu
User -> ":MainUI": Select House Monitoring opt
":MainUI" -> ":HouseMonitoringUI": option7(house)
deactivate ":MainUI"
activate ":HouseMonitoringUI"
":HouseMonitoringUI" --> User: Show option menu
User -> ":HouseMonitoringUI": Select opt
":HouseMonitoringUI" -> ":HouseMonitoringUI": runUS631(house)

ref over ":HouseMonitoringUI"
get input start
and end date
end ref

":HouseMonitoringUI" -> ":HouseMonitoringUI": updateUS631(house, date, date)
ref over ":HouseMonitoringUI"
Get closest sensor
to house area
end ref

":HouseMonitoringUI" -> ":HouseMonitoringController": getFirstHottestDayInPeriod\n (House, Date, Date)
deactivate ":HouseMonitoringUI"
activate ":HouseMonitoringController"
":HouseMonitoringController" -> ":Sensor": getFirstHottestDayInGivenPeriod\n (Date, Date)

activate ":Sensor"

":Sensor" -> ":ReadingList": getFirstHottestDayInGivenPeriod\n (Date, Date)
activate ":ReadingList"

":ReadingList"->":ReadingList": getDaysWithReadingsBetweenDates(Date, Date)
":ReadingList"->":ReadingList": getMaxValue(List<Date>)
":ReadingList"->":ReadingList": getFirstDayForGivenTemperature(Double, List<Date>)
":ReadingList" --> ":Sensor": return date
deactivate ":ReadingList"
":Sensor" --> ":HouseMonitoringController": return date
deactivate ":Sensor"
deactivate ":HouseMonitoringController"
activate ":HouseMonitoringUI"
":HouseMonitoringController" --> ":HouseMonitoringUI": return date
deactivate ":HouseMonitoringController"
activate ":HouseMonitoringUI"

":HouseMonitoringUI" -> ":HouseMonitoringUI": build result string

":HouseMonitoringUI" --> User: Show result string
deactivate ":HouseMonitoringUI"

deactivate ":MainUI"

@enduml