Skip to content

feat: Maintenance module, Leads/CRM module, and interactive floor plan seat map#1253

Open
BigBen-7 wants to merge 1 commit into
DistinctCodes:mainfrom
BigBen-7:feature/bigben-7-issues-1186-1187-1188-1189
Open

feat: Maintenance module, Leads/CRM module, and interactive floor plan seat map#1253
BigBen-7 wants to merge 1 commit into
DistinctCodes:mainfrom
BigBen-7:feature/bigben-7-issues-1186-1187-1188-1189

Conversation

@BigBen-7

Copy link
Copy Markdown
Contributor

Summary

This PR implements four features assigned to BigBen-7:

[BE-19] Maintenance / Issue Reporting: Backend (#1187)

  • New MaintenanceRequest entity with category (EQUIPMENT/FACILITY/SAFETY/OTHER), description, imageUrl, status (OPEN/IN_PROGRESS/RESOLVED), resolvedAt, and resolvedByStaffId fields
  • POST /maintenance — member submits a request
  • GET /maintenance/mine — member views their own requests (paginated)
  • GET /maintenance — admin/staff views all requests (filterable by status, category, workspaceId)
  • PATCH /maintenance/:id/status — admin updates status
  • GET /maintenance/:id — detail view
  • MaintenanceModule registered in AppModule

[FE-18] Maintenance / Issue Reporting: Frontend (#1188)

  • /maintenance page listing member's own submissions with category badge, status badge, and submission date
  • Report an Issue modal with category dropdown and description textarea
  • useSubmitMaintenanceRequest and useGetMyMaintenanceRequests React Query hooks
  • /maintenance link added to DashboardSidebar under Help

[BE-20] Leads / CRM Module: Backend (#1189)

  • New Lead entity with name, email, phone, company, source (CONTACT_FORM/REFERRAL/WALK_IN/OTHER), status (NEW/CONTACTED/QUALIFIED/CONVERTED/LOST), notes, assignedToStaffId, convertedAt fields with soft-delete support
  • GET /leads — paginated, filterable by status, source, assignedToStaffId (admin/staff)
  • GET /leads/:id — single lead detail
  • PATCH /leads/:id — update status, notes, assigned staff
  • POST /leads/:id/convert — marks lead as CONVERTED and sets convertedAt
  • DELETE /leads/:id — soft-delete (admin only)
  • createFromContactForm() helper for ContactModule integration
  • LeadsModule registered in AppModule

[FE-17] Interactive Floor Plan / Seat Map (#1186)

  • New /spaces/map page rendering an SVG-based floor plan from GET /floor-plan/active
  • Each workspace zone is a clickable rectangle coloured by availability: green (available), amber (<25% remaining), red (full)
  • Clicking a zone navigates to /bookings/new?workspaceId=
  • "Floor plan coming soon" placeholder when no floor plan is published
  • Mobile-friendly with pinch-to-zoom (SVG touch-action)
  • Map View toggle button added to the /workspaces listing page
  • New FloorPlanCanvas component in frontend/components/floor-plan/

Closes #1187
Closes #1188
Closes #1189
Closes #1186

…e (BE-20), add interactive floor plan seat map (FE-17)

Closes DistinctCodes#1187
Closes DistinctCodes#1188
Closes DistinctCodes#1189
Closes DistinctCodes#1186

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 27, 2026

Copy link
Copy Markdown

@BigBen-7 is attempting to deploy a commit to the naijabuz's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Jun 27, 2026

Copy link
Copy Markdown

@BigBen-7 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant