@startuml
skinparam packageStyle rectangle
skinparam shadowing false
skinparam linetype polyline
skinparam classAttributeIconSize 0

class Date {
    - Integer day
    - Integer month
    - Integer year
    + Date(day, month, year)
}

class Collaborator {
    - String name
    - Date birthDate
    - Date admissionDate
    - Integer phoneNumber
    - String email
    + Collaborator(name, birthDate, admissionDate, phoneNumber, email, city, street,\n citizenCardNumber, taxpayerNumber, passportNumber, zipCodeNumber, locality)
}

class Adress {
    - String city
    - String street
    + Adress(city, street)
}

class ZipCode {
    - Integer zipCodeNumber
    - String locality
    + ZipCode(zipCodeNumber, locality)
}

class IdDocType {
    - Integer citizenCardNumber
    - Integer taxpayerNumber
    - String passportNumber
    + IdDocType(citizenCardNumber, taxpayerNumber, passportNumber)
}


class Job {
    - String jobName
    + Job(jobName)
}


class CollaboratorRepository {
    -addCollaborator(collaborator)
    -validateCollaborator(collaborator)
    + createCollaborator(name, birthDate, admissionDate, phoneNumber, email, city, street,\n citizenCardNumber, taxpayerNumber, passportNumber, zipCodeNumber, locality, job)

}

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

class CreateCollaboratorController {
    + CreateCollaboratorController(collaboratorRepository, jobRepository)
    + createCollaborator(name, birthDate, admissionDate, phoneNumber, email, city, street,\n citizenCardNumber, taxpayerNumber, passportNumber, zipCodeNumber, locality, job)
    + getJobList()
    + getJobName(job)
}

class CreateCollaboratorUI {
}

CreateCollaboratorUI .> CreateCollaboratorController

CreateCollaboratorController ..> Repositories : repositories
CreateCollaboratorController .> CollaboratorRepository : CollaboratorRepository
CreateCollaboratorController ..> Collaborator
Repositories -> Repositories : instance
Repositories -> "1" CollaboratorRepository

CollaboratorRepository -> "*" Collaborator

Collaborator "1" --o "1" Adress : lives on
Collaborator "1" --* "1" Job : has
Collaborator "1" --* "1" IdDocType : has
Adress "1" --o "1" ZipCode :is associated to

Collaborator "*" --* "1" Date : registers dates through


@enduml