Service Layer medium complexity backend
0
Dependencies
0
Dependents
2
Entities
0
Integrations

Description

Encapsulates all business logic for career workshop lifecycle management including creation, scheduling, participant management, and status transitions. Acts as the intermediary between UI screens and the data layer, enforcing coordination rules and validating workshop configurations. Handles notification triggers for workshop events.

Feature: Career Workshops

workshop-service

Sources & reasoning

Lines 100 and 358 place Career Workshops (Mentorordning/karriereverksted) as a Blindeforbundet-specific feature explicitly listed under Fase 3 (Growth & Engagement). Line 471 confirms it as a named feature in the mentor-program area. Fase 3 is the third development phase, mapping to v1.1 by ordinal convention.

  • docs/source/likeperson.md · line 100
    **Mentorordning (karriereverksted):** Eget notatverktøy, to-do-lister og deltakerlister for gruppeveiledning over to dager.
  • docs/source/likeperson.md · line 358
    Mentorordning / Career Workshops (Blindeforbundet)
  • docs/source/likeperson.md · line 471
    | mentor-program | Mentor Program | Career Workshops, Workshop Notes, Workshop Participant Lists, Workshop To-Do Lists |

Responsibilities

  • Validate and process workshop creation and update requests
  • Manage participant enrollment, withdrawal, and attendance state transitions
  • Enforce business rules such as capacity limits and scheduling conflicts
  • Trigger notifications on workshop creation, updates, and reminders
  • Coordinate with WorkshopRepository for persistence and retrieval

Interfaces

createWorkshop(payload: CreateWorkshopPayload): Promise<Workshop>
updateWorkshop(workshopId: string, updates: Partial<Workshop>): Promise<Workshop>
enrollParticipant(workshopId: string, userId: string): Promise<void>
removeParticipant(workshopId: string, userId: string): Promise<void>
getWorkshopsByUser(userId: string, role: UserRole): Promise<Workshop[]>
updateAttendanceStatus(workshopId: string, userId: string, status: AttendanceStatus): Promise<void>

Related Data Entities (2)

Data entities managed by this component