@startuml
skinparam monochrome true
skinparam packageStyle rectangle
skinparam shadowing false

autonumber

'hide footbox
actor "HUMAN RESOURCES MANAGER\n(HRM)" as HRM
participant ":RegisterCollaboratorUI" as UI
participant ":RegisterCollaboratorController" as CTRL
participant ":Repositories" as RepositorySingleton
participant "jobrepositories\n:jobRepositories" as JobRepository
participant "collaboratorRepository:\ncollaboratorRepository" as CollaboratorRepository
participant "Collaborator:\nCollaborator" as COLLAB

activate HRM

        HRM -> UI : requests to register a collaborator

        activate UI

'            UI --> HRM : requests data (reference, description,  informal \n description, technical description, duration, cost)
            'create CTRL
            UI -> CTRL : createCollaborator()


            activate CTRL

                CTRL -> RepositorySingleton : create()
                activate RepositorySingleton

                    RepositorySingleton --> CTRL: repositories
                deactivate RepositorySingleton

                CTRL -> RepositorySingleton : getJobRepository()
                activate RepositorySingleton

                    RepositorySingleton --> CTRL: RepositorySingleton
                deactivate RepositorySingleton

                CTRL -> JobRepository : getJobTypes()
                activate JobRepository

                    JobRepository --> CTRL : JobTypes
                deactivate JobRepository

                CTRL --> UI : JobTypes
            deactivate CTRL

            UI --> HRM : shows job type list and requests selection
        deactivate UI

    HRM -> UI : selects a job type
    activate UI

        UI --> HRM : requests data (name, birthdate, admission date, address, contact info, ID doc type, ID number)
    deactivate UI

    HRM -> UI : provides requested data
    activate UI





        UI -> CTRL : registerCollaborator(name, birthdate, admissionDate, address, \ncontactInfo, idDocType, idNumber, selectedJobType)
        activate CTRL

            CTRL -> CollaboratorRepository : createCollaborator(name, birthdate, admissionDate, address, \ncontactInfo, idDocType, idNumber, selectedJobType, employee)
            activate CollaboratorRepository

                CollaboratorRepository -> COLLAB : create(name, birthdate, admissionDate, address, \ncontactInfo, idDocType, idNumber, selectedJobType, employee)


                    COLLAB --> CollaboratorRepository: collaborator


                CollaboratorRepository -> CollaboratorRepository : add(collaborator)
                CollaboratorRepository -> CollaboratorRepository : validate(collaborator)

CollaboratorRepository --> CTRL : collaborator
deactivate CollaboratorRepository
CTRL --> UI:collaborator



            deactivate CTRL
            UI --> HRM: displays operation success
    deactivate UI

deactivate HRM

@enduml