Skip to content

[BE-56] Meeting room add-on resource booking (AV equipment, projectors) #1294

Description

@yusuftomilola

Overview

Members booking a meeting room cannot request AV equipment (projectors, screens, video conferencing units, whiteboards) as part of the booking. Resource add-ons unlock an additional revenue stream and improve the booking experience for professional meetings.

Context

  • Booking entity: backend/src/bookings/entities/booking.entity.ts
  • CreateBookingProvider: backend/src/bookings/providers/create-booking.provider.ts
  • PricingService: backend/src/bookings/pricing/pricing.service.ts

Tasks

  • Create Resource entity: id, name (e.g. Projector), description (nullable), priceKoboPerSession (int, 0 = free), quantity (int, default 1), isAvailable (bool), applicableWorkspaceTypes (JSONB array — e.g. ["MEETING_ROOM"], null = all types), createdAt, updatedAt
  • GET /resources — list available resources (authenticated)
  • POST /resources — create resource (admin only)
  • PATCH /resources/:id — update resource (admin only)
  • DELETE /resources/:id — soft-delete resource (admin only)
  • Add resourceIds (JSONB integer array) to Booking entity; add resourcesTotalKobo (int, default 0)
  • Update CreateBookingProvider: accept optional resourceIds[] in booking DTO; validate each resource exists and is available; add resource costs to total
  • GET /bookings/:id/resources — list resources on a specific booking
  • POST /resources/check-availability — given a list of resource IDs and a date range, returns availability status for each (for frontend to display before booking)

Files to Modify / Create

  • New: backend/src/resources/ (module, entity, controller, service)
  • backend/src/bookings/entities/booking.entity.ts
  • backend/src/bookings/providers/create-booking.provider.ts
  • backend/src/bookings/dto/create-booking.dto.ts
  • backend/src/app.module.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions