@startuml
title Class Diagram US01

class HRM {
    - name: String
    - id: String
}

class Job {
    - name: String
}

class Skill {
    - name: String
    - description: String
    - category: String
}

class Vehicle {
    - vehicleID: String
    - brand: String
    - model: String
    - type: String
    - tareWeight: Double
    - grossWeight: Double
    - currentKms: Double
    - registerDate: Date
    - acquisitionDate: Date
    - maintenanceFrequency: Integer
}

class Employee {
    - name: String
    - position: String
    - email: String
}

class Team {
    - name: String
    - numberOfCollaborators: Integer
    - skills: List<Skill>
}

class VehicleCheckUp {
    - currentKms: Double
    - vehicleID: String
    - checkUpDate: Date
}

class Collaborator {
    - name: String
    - birthdate: Date
    - zipCode: String
    - street: String
    - email: String
    - mobileNumber: String
    - IDNumber: String
}

class Task {
    - deadline: Date
    - skill: Skill
}

class TaskState {
    - state: String
}

class OrganizationRole {
    - roleName: String
}

class FM {
    - name: String
    - email: String
    - number: String
}

class Agenda {
    - tasks: List<Task>
}

HRM "1" -- "1..*" Job : register
HRM "1" -- "1..*" Skill : manage
Job "0..*" -- "1..*" Skill : requires
Employee "0..*" -- "1..*" Job : assignedTo
Employee "0..*" -- "0..*" Skill : possesses
Team "0..*" -- "0..*" Employee : contains
Vehicle "0..*" -- "0..1" Employee : assignedTo
Vehicle "0..*" -- "0..1" VehicleCheckUp : has
Agenda "1" -- "*" Task : has
Task "1" -- "1" TaskState : has
Team "1" -- "*" Task : carriesOut
Collaborator "*" -- "1" Team : madeOf
Collaborator "*" -- "1" OrganizationRole : plays
HRM "1" -- "*" Team : generates
FM "1" -- "*" VehicleCheckUp : registers
HRM "1" -- "1..*" Task : owns
Task "1" -- "1..*" Collaborator : assignedTo
FM "1" -- "*" VehicleCheckUp : registers

@enduml
