@startuml PlatformUM

''' Aplication class diagram that provides travel services'''

class User {
    - username: string
    - email: string
    - password: string
    - telephone: number
    - isAdmin: boolean
    - reservations: Reservation[]
    + logIn(): void
    + logOut(): void
    + registerUser(): void
    + validateUser(): void
    + showProfile(): void
    + showReservation(): void
}

' Add data of the vehicle
class Vehicle {
    - name : string
    - type: string 'bus, traffic, etc'
    - seats: number
}

' *Add data of the company
class Company {
    - name: string
    - vehicles: Vehicle[]
}

class Destination {
    - origin: City
    - destination: City
    - date: Datetime
    - travelDuration: number
    - distance: number
}

class Trip {
    - destination: Destination
    - reservations: Reservation[]
    - company: Company
    + makeReservation(): void
    + calculatePrice(): number
    + checkSeats(): number
}

class Reservation {
    - user: User
    - trip: Trip
    - status: string
    - date: Datetime
    - price: number
    - passengers: Passenger[]
}

class City {
    - name: string
    - state: string
}

class Passenger {
    - fullName: string
    - dateBirth: Date
    - nid: number
    - gender: string
    - reservation: Reservation
    - seatNumber: number
}

City -r-> Destination
Destination -r-> Trip
Passenger --r--> Reservation
Passenger -u-> Trip
Reservation -d-> Trip
Reservation -d-> User
Vehicle -u-> Company
Company -u-> Trip
 
@enduml
