@startuml
'skinparam monochrome true
skinparam packageStyle rectangle
skinparam shadowing false
skinparam linetype polyline
'skinparam linetype orto

skinparam classAttributeIconSize 0

'left to right direction

class ApplicationSession
{
    + static getInstance()
    + getCurrentSession()
}

class UserSession
{
    + getUserEmail()
}

class HRM {
    - name
    - email
    - phoneNumber
}

class Skills {
    - String name
    - String description

    + RegisterSkills(name, description)
}



class SkillsRepository {
    + getSkillsByName(name)
}


class Repositories {
    - Repositories()
    + getInstance() : Repositories
    + getSkillsRepository()
}

class RegisterSkillsController {
    + RegisterSkillsController(skillsRepository)
    + getSkills()
    + registerSkills(name, description)
    - getSkillsByName(name)
    - getEmployeeFromSession()
}

note right of RegisterSkillsController
    - userEmail is obtained
    from the user session
end note

note bottom of SkillsRepository
    - used for displaying
    the skills list
end note

class RegisterSkillsUI {
}

Repositories -> Repositories : instance
ApplicationSession -> ApplicationSession : instance

RegisterSkillsUI .> RegisterSkillsController

RegisterSkillsController .> Repositories : repositories

Repositories -> "1" SkillsRepository

RegisterSkillsController ..> Skills
RegisterSkillsController ..> SkillsRepository : SkillsRepository

ApplicationSession --> "1" UserSession : userSession

RegisterSkillsController ..> ApplicationSession
RegisterSkillsController ..> UserSession
SkillsRepository "1" --> "*" Skills : stores
Skills --> HRM : createdBy


@enduml