@if (!ShowForm) {
| Code | Programme Title | Domain | Type | Delivery | Complexity | Hrs | Seats | Refresher | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ prog.ProgrammeCode }} | {{ prog.ProgrammeTitle }} @if (prog.ProgrammeVersionNo) { {{ prog.ProgrammeVersionNo }} } | {{ prog.DomainName || '—' }} | {{ getProgrammeTypeLabel(prog.ProgrammeType) }} | {{ getDeliveryLabel(prog.DeliveryMode) }} | {{ getComplexityLabel(prog.ComplexityLevel) }} | {{ prog.DurationHours || '—' }} | @if (prog.MinCapacity || prog.MaxCapacity) { {{ prog.MinCapacity }}–{{ prog.MaxCapacity }} } @else { — } | {{ +prog.IsRefresher === 0 ? 'No' : 'Yes' }} | {{ prog.IsActive === 1 ? 'Active' : 'Inactive' }} | |
| No programmes found. | ||||||||||
Session Code/Title are required — every programme needs at least one session to save, so this import creates one basic session per row. Domain is matched by name against the Training Domain master automatically — no need to look up a numeric id.
@if (bulkLookupsLoading()) {Expected columns:
| # | @for (col of bulkColumns; track col.key) {{{ col.label }} | }Status |
|---|---|---|
| {{ row._rowNum }} | @for (col of bulkColumns; track col.key) {{{ row[col.key] }} | }
{{ row._status }}
@if (row._errors.length) { {{ row._errors.join(', ') }} }
@if (row._message) { {{ row._message }} }
|