@startuml Manage Booking (GET)

header Sample Job Fair Sequence Diagram
footer Page %page% of %lastpage%
title "Get All Bookings (GET)"

participant "Client" as client
participant "<<javaScript>>\n:server" as server
participant "<<router>>\n:bookings" as routerBooking
participant "<<middleware>>\n:auth" as authMiddleware
participant "<<controllers>>\n:bookings" as controllersBookings
participant "<<model>>\n:Booking" as modelBooking
database "<<MongoDB>>\n:bookings" as BookingsDatabase

client->server ++:req.get('/bookings')
server->routerBooking ++:app.use('/bookings',bookings)
routerBooking -> authMiddleware ++: protect()
routerBooking <- authMiddleware --: next()
routerBooking -> controllersBookings ++:getBookings
alt admin and route is '/bookings'
        controllersBookings -> modelBooking ++:find()
        modelBooking -> BookingsDatabase ++: BookingSchema
        BookingsDatabase --> modelBooking --: booking
        controllersBookings <-- modelBooking --: booking
else admin and route is '/companies/companyID/bookings'
        controllersBookings -> modelBooking ++:find(req.params.companyID)
        modelBooking -> BookingsDatabase ++: BookingSchema
        BookingsDatabase --> modelBooking --: booking
        controllersBookings <-- modelBooking --: booking
else user
    controllersBookings -> modelBooking ++:find(req.user.id)
    modelBooking -> BookingsDatabase ++: BookingSchema
    BookingsDatabase --> modelBooking --: booking
    controllersBookings <-- modelBooking --: booking
end
controllersBookings->client --:response


@enduml
