Skip to content

Training Sessions (الجلسات التدريبية)

Scheduled instances of training programs with location, trainer, capacity, and status management.

Attributes

FieldTypeDescription
idintegerPrimary key
training_program_idintegerProgram FK
session_datedateSession date
start_timetimeStart time
end_timetimeEnd time
locationstringLocation (nullable)
trainerstringTrainer name (nullable)
max_participantsintegerMaximum capacity (nullable)
statusenumscheduled, in_progress, completed, cancelled
notestextNotes (nullable)

Status Workflow

API Endpoints

MethodURLDescription
GET/api/hr/training-sessionsList sessions
POST/api/hr/training-sessionsCreate session
GET/api/hr/training-sessions/{id}Show session with enrollments
PUT/api/hr/training-sessions/{id}Update session
POST/api/hr/training-sessions/{id}/statusChange status

Examples

bash
curl -X POST "https://moon-erp.elbaset.com/api/hr/training-sessions" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "training_program_id": 1,
    "session_date": "2026-03-15",
    "start_time": "09:00",
    "end_time": "17:00",
    "location": "Training Room A",
    "trainer": "Ahmed Hassan",
    "max_participants": 20
  }'

# Update status
curl -X POST "https://moon-erp.elbaset.com/api/hr/training-sessions/1/status" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "status": "completed" }'
dart
final response = await dio.post('/api/hr/training-sessions', data: {
  'training_program_id': 1,
  'session_date': '2026-03-15',
  'start_time': '09:00',
  'end_time': '17:00',
  'location': 'Training Room A',
  'max_participants': 20,
});

Business Rules

  • Show endpoint eager-loads enrollments with employee data
  • Cannot exceed max_participants when enrolling employees
  • Cancelling a session updates all enrollments to cancelled

Moon ERP API Documentation