@kth/om-kursen-ladok-client 1.3.11 → 1.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attributVardenConstants.js +1 -0
- package/dist/attributVardenConstants.js.map +1 -1
- package/dist/createApiClient.js +5 -3
- package/dist/createApiClient.js.map +1 -1
- package/dist/mapCourseRound.js +4 -4
- package/dist/mapCourseRound.js.map +1 -1
- package/dist/mapPartOfProgramme.d.ts +1 -1
- package/dist/mapPartOfProgramme.js +5 -3
- package/dist/mapPartOfProgramme.js.map +1 -1
- package/dist/mapProgramTerm.js +2 -1
- package/dist/mapProgramTerm.js.map +1 -1
- package/dist/search/createSearchApi.js +13 -23
- package/dist/search/createSearchApi.js.map +1 -1
- package/dist/search/types.d.ts +4 -0
- package/dist/search/utbildningsTypIdConstants.d.ts +20 -4
- package/dist/search/utbildningsTypIdConstants.js +17 -16
- package/dist/search/utbildningsTypIdConstants.js.map +1 -1
- package/dist/search/utils/educationalTypeUtils.d.ts +11 -0
- package/dist/search/utils/educationalTypeUtils.js +36 -0
- package/dist/search/utils/educationalTypeUtils.js.map +1 -0
- package/dist/search/utils/getAllEntitiesByUseOfContinuation.js +1 -1
- package/dist/search/utils/getLatestCompletedCourseVersions.d.ts +8 -0
- package/dist/search/utils/getLatestCompletedCourseVersions.js +20 -0
- package/dist/search/utils/getLatestCompletedCourseVersions.js.map +1 -0
- package/dist/search/utils/searchUtils.d.ts +12 -6
- package/dist/search/utils/searchUtils.js +80 -38
- package/dist/search/utils/searchUtils.js.map +1 -1
- package/dist/supportApis/createSupportApis.d.ts +16 -0
- package/dist/supportApis/createSupportApis.js +137 -0
- package/dist/supportApis/createSupportApis.js.map +1 -0
- package/dist/types/OmKursenLadokApiClient.d.ts +4 -1
- package/dist/utils/programStrukturUtil.d.ts +3 -2
- package/dist/utils/programStrukturUtil.js +12 -10
- package/dist/utils/programStrukturUtil.js.map +1 -1
- package/dist/utils/programUtil.js +28 -14
- package/dist/utils/programUtil.js.map +1 -1
- package/dist/utils/studyYearUtil.d.ts +4 -3
- package/dist/utils/studyYearUtil.js +30 -14
- package/dist/utils/studyYearUtil.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,25 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.prepareSearchRequestQueryForKursInstans = exports.prepareSearchRequestQueryForKursTillfallen = exports.
|
|
3
|
+
exports.prepareSearchRequestQueryForKursInstans = exports.prepareSearchRequestQueryForKursTillfallen = exports.validateAndCleanSearchParams = void 0;
|
|
4
4
|
const SearchError_1 = require("../SearchError");
|
|
5
5
|
const utils_1 = require("../../utils");
|
|
6
6
|
const ladok_attributvarde_utils_1 = require("@kth/ladok-attributvarde-utils");
|
|
7
7
|
const utbildningsTypIdConstants_1 = require("../utbildningsTypIdConstants");
|
|
8
8
|
const attributVardenConstants_1 = require("../../attributVardenConstants");
|
|
9
|
+
const educationalTypeUtils_1 = require("./educationalTypeUtils");
|
|
10
|
+
const typeChecking_1 = require("../../utils/typeChecking");
|
|
9
11
|
/**
|
|
12
|
+
* Validates and cleans the search parameters for the search API.
|
|
10
13
|
* Throws an error if the searchParams are invalid.
|
|
11
14
|
* @param searchParams
|
|
15
|
+
* @returns
|
|
16
|
+
* @throws SearchError
|
|
17
|
+
* - noRestrictions: if no search parameters are provided
|
|
18
|
+
* - kodEllerBenamning: if kodEllerBenamning is provided but less than 3 characters
|
|
12
19
|
*/
|
|
13
|
-
const
|
|
14
|
-
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
|
|
15
|
-
if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !startPeriod && !
|
|
20
|
+
const validateAndCleanSearchParams = (searchParams) => {
|
|
21
|
+
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva: rawUtbildningsniva, avvecklad, } = searchParams;
|
|
22
|
+
if (!avvecklad && !kodEllerBenamning && !organisation && !sprak && !startPeriod && !rawUtbildningsniva) {
|
|
16
23
|
throw SearchError_1.SearchError.noRestrictions();
|
|
17
24
|
}
|
|
18
25
|
if (kodEllerBenamning && kodEllerBenamning.length < 3) {
|
|
19
26
|
throw SearchError_1.SearchError.kodEllerBenamning();
|
|
20
27
|
}
|
|
28
|
+
const utbildningsniva = rawUtbildningsniva ? cleanUtbildningsnivaParam(rawUtbildningsniva) : undefined;
|
|
29
|
+
return {
|
|
30
|
+
kodEllerBenamning,
|
|
31
|
+
organisation,
|
|
32
|
+
sprak,
|
|
33
|
+
startPeriod,
|
|
34
|
+
utbildningsniva,
|
|
35
|
+
avvecklad,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
exports.validateAndCleanSearchParams = validateAndCleanSearchParams;
|
|
39
|
+
const cleanUtbildningsnivaParam = (utbildningsniva) => {
|
|
40
|
+
const mappedUtbildningsniva = utbildningsniva.map(mapUtbildningsniva);
|
|
41
|
+
return mappedUtbildningsniva.filter(typeChecking_1.isDefined);
|
|
42
|
+
};
|
|
43
|
+
const mapUtbildningsniva = (utbildningsniva) => {
|
|
44
|
+
switch (utbildningsniva) {
|
|
45
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory:
|
|
46
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory;
|
|
47
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Advanced:
|
|
48
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Advanced;
|
|
49
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Basic:
|
|
50
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Basic;
|
|
51
|
+
case ladok_attributvarde_utils_1.EducationalLevelCode.Research:
|
|
52
|
+
return ladok_attributvarde_utils_1.EducationalLevelCode.Research;
|
|
53
|
+
default:
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
21
56
|
};
|
|
22
|
-
exports.validateSearchParams = validateSearchParams;
|
|
23
57
|
const MAX_ANTAL_TRAFFAR = '100';
|
|
24
58
|
// TODO Benni, maybe this does not make things cleaner, observe
|
|
25
59
|
// TODO Benni don't forget this when cleaning up types on query object
|
|
@@ -28,45 +62,53 @@ const DEFAULT_INSTANCE_QUERY_PARAMS = {
|
|
|
28
62
|
instansAttributVarden: 'utbildningstyp',
|
|
29
63
|
antalTraffar: MAX_ANTAL_TRAFFAR,
|
|
30
64
|
};
|
|
31
|
-
const prepareSearchRequestQueryForKursTillfallen = (
|
|
65
|
+
const prepareSearchRequestQueryForKursTillfallen = (searchParams) => {
|
|
32
66
|
const { kodEllerBenamning, organisation, sprak, startPeriod, utbildningsniva, avvecklad } = searchParams;
|
|
33
|
-
const educationalTypes =
|
|
67
|
+
const educationalTypes = getUtbildningsnivaParameterForKursTillfalle(utbildningsniva);
|
|
34
68
|
const filterPeriod = !Boolean(startPeriod);
|
|
35
|
-
const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes
|
|
69
|
+
const requestQuery = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*' }, getStartPeriodOrTerminkodStart(startPeriod)), (educationalTypes && { utbildningsniva: educationalTypes })), (organisation && { organisation })), (sprak && { sprak })), (avvecklad && { avvecklad })), DEFAULT_INSTANCE_QUERY_PARAMS), { utbildningstypid: utbildningsTypIdConstants_1.INSTANCE_UTBILDNINGSTYP_IDS });
|
|
36
70
|
return { requestQuery, filterPeriod }; // TODO Benni this does two things, filterPeriod should probably be split out
|
|
37
71
|
};
|
|
38
72
|
exports.prepareSearchRequestQueryForKursTillfallen = prepareSearchRequestQueryForKursTillfallen;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
exports.prepareSearchRequestQueryForKursInstans = prepareSearchRequestQueryForKursInstans;
|
|
49
|
-
const filterAndMapEducationalTypes = ({ utbildningsniva, utbildningstyper: ladokTypes, }) => {
|
|
50
|
-
if (!utbildningsniva)
|
|
51
|
-
return [];
|
|
52
|
-
const preparatoryTypes = [ladok_attributvarde_utils_1.EDUCATIONAL_TYPE_CODE_FOR_PREPARATORY_LEVEL]; // Hard coded
|
|
53
|
-
const basicTypes = ladokTypes
|
|
54
|
-
.filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Basic)
|
|
55
|
-
.map(x => x.Kod);
|
|
56
|
-
const advancedTypes = ladokTypes
|
|
57
|
-
.filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Advanced)
|
|
58
|
-
.map(x => x.Kod);
|
|
59
|
-
const researchTypes = ladokTypes
|
|
60
|
-
.filter(typ => String(typ.NivaInomStudieordningID) === ladok_attributvarde_utils_1.EducationalLevelCode.Research)
|
|
61
|
-
.map(x => x.Kod);
|
|
62
|
-
const levelMap = new Map([
|
|
63
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Preparatory, preparatoryTypes],
|
|
64
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Basic, basicTypes],
|
|
65
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Advanced, advancedTypes],
|
|
66
|
-
[ladok_attributvarde_utils_1.EducationalLevelCode.Research, researchTypes],
|
|
67
|
-
]);
|
|
68
|
-
return utbildningsniva === null || utbildningsniva === void 0 ? void 0 : utbildningsniva.flatMap(level => levelMap.get(level) || []);
|
|
73
|
+
/**
|
|
74
|
+
* Takes an array of educational levels and returns a comma-separated string of the corresponding utbildningstypKoder.
|
|
75
|
+
* @param educationalLevels
|
|
76
|
+
* @returns
|
|
77
|
+
*/
|
|
78
|
+
const getUtbildningsnivaParameterForKursTillfalle = (educationalLevels) => {
|
|
79
|
+
if (!educationalLevels)
|
|
80
|
+
return undefined;
|
|
81
|
+
return getCommaSeparatedEducationalTypesInFormat('Kod', educationalLevels);
|
|
69
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* Takes an array of educational levels and returns a comma-separated string of the corresponding utbildningstypIDn.
|
|
85
|
+
* @param educationalLevels
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
88
|
+
const getUtbildningsnivaParameterForKursInstans = (educationalLevels) => {
|
|
89
|
+
if (!educationalLevels)
|
|
90
|
+
return (0, educationalTypeUtils_1.getAllVersionUtbildningstyperIDs)().join(',');
|
|
91
|
+
return getCommaSeparatedEducationalTypesInFormat('ID', educationalLevels);
|
|
92
|
+
};
|
|
93
|
+
const getCommaSeparatedEducationalTypesInFormat = (format, educationalLevels) => {
|
|
94
|
+
const selectedEducationalTypes = (0, educationalTypeUtils_1.getVersionUtbildningstyperForEducationalLevels)(educationalLevels);
|
|
95
|
+
const selectedEducationalTypeIdentifiers = selectedEducationalTypes.map(item => item[format]);
|
|
96
|
+
return selectedEducationalTypeIdentifiers.join(',');
|
|
97
|
+
};
|
|
98
|
+
const getOrganisationsFilter = (organisationer, organisation) => {
|
|
99
|
+
var _a, _b;
|
|
100
|
+
if (organisation && (organisation === null || organisation === void 0 ? void 0 : organisation.length) === 1) {
|
|
101
|
+
return ((_b = (_a = organisationer
|
|
102
|
+
.find(org => org.departmentPrefix === organisation)) === null || _a === void 0 ? void 0 : _a.departments.map(department => department.code).join(',')) !== null && _b !== void 0 ? _b : organisation);
|
|
103
|
+
}
|
|
104
|
+
return organisation;
|
|
105
|
+
};
|
|
106
|
+
const prepareSearchRequestQueryForKursInstans = (searchParams, schoolsWithDepartments) => {
|
|
107
|
+
const { kodEllerBenamning, avvecklad, organisation, utbildningsniva } = searchParams;
|
|
108
|
+
const organisationsFilter = getOrganisationsFilter(schoolsWithDepartments, organisation);
|
|
109
|
+
return Object.assign(Object.assign(Object.assign({ kodEllerBenamning: kodEllerBenamning !== null && kodEllerBenamning !== void 0 ? kodEllerBenamning : '*', antalTraffar: MAX_ANTAL_TRAFFAR }, (avvecklad && { avvecklad })), (organisationsFilter && { organisation: organisationsFilter })), { utbildningstypgrundtyp: 'KURS', utbildningstypid: getUtbildningsnivaParameterForKursInstans(utbildningsniva), instansAttributVarden: attributVardenConstants_1.ATTRIBUT_VARDEN_FOR_COURSE_VERSIONS, senasteversion: 'true' });
|
|
110
|
+
};
|
|
111
|
+
exports.prepareSearchRequestQueryForKursInstans = prepareSearchRequestQueryForKursInstans;
|
|
70
112
|
/**
|
|
71
113
|
* If startPeriod is defined, returns it as an object with startPeriod property and comma-separated values.
|
|
72
114
|
* If not, returns an object with terminkodStart property and the default period.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":";;;AACA,gDAA4C;AAE5C,uCAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"searchUtils.js","sourceRoot":"","sources":["../../../src/search/utils/searchUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LadokMellanlagerApiClient } from '@kth/ladok-mellanlager-client';
|
|
2
|
+
import { Language } from '../utils';
|
|
3
|
+
export declare const createSupportApi: (ladokClient: LadokMellanlagerApiClient) => SupportApi;
|
|
4
|
+
export type SupportApi = {
|
|
5
|
+
createDepartmentList: (language: Language, deprecated?: boolean) => Promise<SchoolWithDepartments[]>;
|
|
6
|
+
};
|
|
7
|
+
type DepartmentFlat = {
|
|
8
|
+
name: string;
|
|
9
|
+
code: string;
|
|
10
|
+
};
|
|
11
|
+
export type SchoolWithDepartments = {
|
|
12
|
+
departmentPrefix: string;
|
|
13
|
+
name: string;
|
|
14
|
+
departments: DepartmentFlat[];
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createSupportApi = void 0;
|
|
13
|
+
const createSupportApi = (ladokClient) => {
|
|
14
|
+
return {
|
|
15
|
+
createDepartmentList: (language_1, ...args_1) => __awaiter(void 0, [language_1, ...args_1], void 0, function* (language, deprecated = false) {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
17
|
+
const [organisationskopplingsResponse, organisationsResponse] = yield Promise.all([
|
|
18
|
+
ladokClient.organisationskoppling(),
|
|
19
|
+
ladokClient.organisation(),
|
|
20
|
+
]);
|
|
21
|
+
const organisationer = (_b = (_a = organisationsResponse.data) === null || _a === void 0 ? void 0 : _a.Organisationer) !== null && _b !== void 0 ? _b : [];
|
|
22
|
+
const organisationskopplingar = (_d = (_c = organisationskopplingsResponse.data) === null || _c === void 0 ? void 0 : _c.Organisationskopplingar) !== null && _d !== void 0 ? _d : [];
|
|
23
|
+
const schoolsWithDepartments = extractSchoolsWithDepartments({
|
|
24
|
+
organisationer,
|
|
25
|
+
organisationskopplingar,
|
|
26
|
+
language,
|
|
27
|
+
deprecated,
|
|
28
|
+
});
|
|
29
|
+
return schoolsWithDepartments;
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.createSupportApi = createSupportApi;
|
|
34
|
+
const currentSchoolCodes = ['A', 'C', 'J', 'M', 'S', 'U'];
|
|
35
|
+
const deprecatedSchoolCodes = ['D', 'K', 'H', 'L'];
|
|
36
|
+
const deprecatedOrganisationCodesToInclude = ['DM', 'KD', 'KE', 'KF', 'HA', 'HPN', 'LA', 'LPA'];
|
|
37
|
+
const currentOrganisationCodesToExclude = [
|
|
38
|
+
'AA',
|
|
39
|
+
'AD',
|
|
40
|
+
'ADA',
|
|
41
|
+
'AG',
|
|
42
|
+
'AGA',
|
|
43
|
+
'AI',
|
|
44
|
+
'AIA',
|
|
45
|
+
'AK',
|
|
46
|
+
'AKA',
|
|
47
|
+
'ALA',
|
|
48
|
+
'AM',
|
|
49
|
+
'CA',
|
|
50
|
+
'CBA',
|
|
51
|
+
'CBB',
|
|
52
|
+
'JA',
|
|
53
|
+
'MA',
|
|
54
|
+
'MAD',
|
|
55
|
+
'MAS',
|
|
56
|
+
'MFE',
|
|
57
|
+
'MK',
|
|
58
|
+
'SAC',
|
|
59
|
+
'UTHS',
|
|
60
|
+
'LA',
|
|
61
|
+
]; // TODO This is a list of organisationCodes that has neither current nor cancelled courses. We have to find a better way to do this.
|
|
62
|
+
const getSchoolCodes = (deprecated) => {
|
|
63
|
+
if (deprecated)
|
|
64
|
+
return deprecatedSchoolCodes;
|
|
65
|
+
return currentSchoolCodes;
|
|
66
|
+
};
|
|
67
|
+
const filterDepartments = (departments, deprecated) => {
|
|
68
|
+
if (deprecated) {
|
|
69
|
+
return departments.filter(department => deprecatedOrganisationCodesToInclude.includes(department.code));
|
|
70
|
+
}
|
|
71
|
+
return departments.filter(department => currentOrganisationCodesToExclude.every(code => !department.code.startsWith(code)));
|
|
72
|
+
};
|
|
73
|
+
function extractSchoolsWithDepartments({ organisationer, organisationskopplingar, language, deprecated = false, }) {
|
|
74
|
+
const schoolCodes = getSchoolCodes(deprecated);
|
|
75
|
+
const schoolOrganisations = organisationer.filter(organisation => schoolCodes.includes(organisation.Organisationskod));
|
|
76
|
+
const schoolsWithDepartments = schoolOrganisations.map(school => {
|
|
77
|
+
const departmentHierarchy = getSubDepartments({
|
|
78
|
+
uid: school.Uid,
|
|
79
|
+
organisationskopplingar,
|
|
80
|
+
organisationer,
|
|
81
|
+
language,
|
|
82
|
+
});
|
|
83
|
+
const allDepartments = departmentHierarchy.flatMap(flattenDepartment);
|
|
84
|
+
// This filters out departments like "9A"
|
|
85
|
+
const departments = allDepartments.filter(department => department.code.startsWith(school.Organisationskod));
|
|
86
|
+
departments.sort((a, b) => a.code.localeCompare(b.code));
|
|
87
|
+
const departmentsToShow = filterDepartments(departments, deprecated);
|
|
88
|
+
return {
|
|
89
|
+
departmentPrefix: school.Organisationskod,
|
|
90
|
+
name: getSchoolNameFromLadokOrganisation(school, language),
|
|
91
|
+
departments: departmentsToShow,
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
schoolsWithDepartments.sort((a, b) => a.departmentPrefix.localeCompare(b.departmentPrefix));
|
|
95
|
+
return schoolsWithDepartments;
|
|
96
|
+
}
|
|
97
|
+
const getSubDepartments = ({ uid, organisationskopplingar, organisationer, language, }) => {
|
|
98
|
+
const matchingDepartmentKopplingar = organisationskopplingar.filter(koppling => koppling.OverliggandeRef.Uid === uid);
|
|
99
|
+
const matchingDepartments = matchingDepartmentKopplingar
|
|
100
|
+
.map(koppling => {
|
|
101
|
+
var _a;
|
|
102
|
+
const department = organisationer.find(org => org.Uid === koppling.UnderliggandeRef.Uid);
|
|
103
|
+
if (!department || !isCurrentDepartment(department))
|
|
104
|
+
return null;
|
|
105
|
+
const name = getDepartmentNameFromLadokOrganisation(department, language);
|
|
106
|
+
return {
|
|
107
|
+
name,
|
|
108
|
+
code: (_a = department.Organisationskod) !== null && _a !== void 0 ? _a : '',
|
|
109
|
+
departments: getSubDepartments({ uid: department.Uid, organisationskopplingar, organisationer, language }),
|
|
110
|
+
};
|
|
111
|
+
})
|
|
112
|
+
.filter(department => department !== null);
|
|
113
|
+
return matchingDepartments;
|
|
114
|
+
};
|
|
115
|
+
const isCurrentDepartment = (organisation) => {
|
|
116
|
+
var _a, _b;
|
|
117
|
+
return !((_a = organisation.Giltighetsperiod) === null || _a === void 0 ? void 0 : _a.Slutdatum) || new Date((_b = organisation.Giltighetsperiod) === null || _b === void 0 ? void 0 : _b.Slutdatum) > new Date();
|
|
118
|
+
};
|
|
119
|
+
const getSchoolNameFromLadokOrganisation = (org, language) => {
|
|
120
|
+
var _a;
|
|
121
|
+
let name = (_a = org.Benamning[language].split('/')[1]) !== null && _a !== void 0 ? _a : org.Benamning.sv;
|
|
122
|
+
name = name.replace('Skolan för ', '');
|
|
123
|
+
name = `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
124
|
+
return name;
|
|
125
|
+
};
|
|
126
|
+
const getDepartmentNameFromLadokOrganisation = (org, language) => {
|
|
127
|
+
var _a;
|
|
128
|
+
let name = (_a = org.Benamning[language].split('/')[1]) !== null && _a !== void 0 ? _a : org.Benamning.sv;
|
|
129
|
+
return name;
|
|
130
|
+
};
|
|
131
|
+
const flattenDepartment = ({ name, code, departments }) => {
|
|
132
|
+
if (departments.length === 0) {
|
|
133
|
+
return [{ code, name }];
|
|
134
|
+
}
|
|
135
|
+
return [{ code, name }, ...departments.flatMap(flattenDepartment)];
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=createSupportApis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSupportApis.js","sourceRoot":"","sources":["../../src/supportApis/createSupportApis.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKO,MAAM,gBAAgB,GAAG,CAAC,WAAsC,EAAc,EAAE;IACrF,OAAO;QACL,oBAAoB,EAAE,wBAAuE,EAAE,+DAAlE,QAAQ,EAAE,UAAU,GAAG,KAAK;;YACvD,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChF,WAAW,CAAC,qBAAqB,EAAE;gBACnC,WAAW,CAAC,YAAY,EAAE;aAC3B,CAAC,CAAA;YAEF,MAAM,cAAc,GAAG,MAAA,MAAA,qBAAqB,CAAC,IAAI,0CAAE,cAAc,mCAAI,EAAE,CAAA;YACvE,MAAM,uBAAuB,GAAG,MAAA,MAAA,8BAA8B,CAAC,IAAI,0CAAE,uBAAuB,mCAAI,EAAE,CAAA;YAElG,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;gBAC3D,cAAc;gBACd,uBAAuB;gBACvB,QAAQ;gBACR,UAAU;aACX,CAAC,CAAA;YAEF,OAAO,sBAAsB,CAAA;QAC/B,CAAC,CAAA;KACF,CAAA;AACH,CAAC,CAAA;AArBY,QAAA,gBAAgB,oBAqB5B;AAED,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACzD,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAElD,MAAM,oCAAoC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC/F,MAAM,iCAAiC,GAAG;IACxC,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,MAAM;IACN,IAAI;CACL,CAAA,CAAC,oIAAoI;AAEtI,MAAM,cAAc,GAAG,CAAC,UAAmB,EAAY,EAAE;IACvD,IAAI,UAAU;QAAE,OAAO,qBAAqB,CAAA;IAC5C,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,WAA6B,EAAE,UAAmB,EAAoB,EAAE;IACjG,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,oCAAoC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IACzG,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CACrC,iCAAiC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACnF,CAAA;AACH,CAAC,CAAA;AAED,SAAS,6BAA6B,CAAC,EACrC,cAAc,EACd,uBAAuB,EACvB,QAAQ,EACR,UAAU,GAAG,KAAK,GAMnB;IACC,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAE9C,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEtH,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC9D,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;YAC5C,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,uBAAuB;YACvB,cAAc;YACd,QAAQ;SACT,CAAC,CAAA;QAEF,MAAM,cAAc,GAAqB,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAEvF,yCAAyC;QACzC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAE5G,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAExD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAEpE,OAAO;YACL,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,IAAI,EAAE,kCAAkC,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC1D,WAAW,EAAE,iBAAiB;SAC/B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC3F,OAAO,sBAAsB,CAAA;AAC/B,CAAC;AAoBD,MAAM,iBAAiB,GAAG,CAAC,EACzB,GAAG,EACH,uBAAuB,EACvB,cAAc,EACd,QAAQ,GAMT,EAAgB,EAAE;IACjB,MAAM,4BAA4B,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;IAErH,MAAM,mBAAmB,GAAiB,4BAA4B;SACnE,GAAG,CAAC,QAAQ,CAAC,EAAE;;QACd,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAExF,IAAI,CAAC,UAAU,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QAChE,MAAM,IAAI,GAAG,sCAAsC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACzE,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,MAAA,UAAU,CAAC,gBAAgB,mCAAI,EAAE;YACvC,WAAW,EAAE,iBAAiB,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,uBAAuB,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;SAC3G,CAAA;IACH,CAAC,CAAC;SACD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAA;IAE5C,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,YAA0B,EAAW,EAAE;;IAClE,OAAO,CAAC,CAAA,MAAA,YAAY,CAAC,gBAAgB,0CAAE,SAAS,CAAA,IAAI,IAAI,IAAI,CAAC,MAAA,YAAY,CAAC,gBAAgB,0CAAE,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;AACrH,CAAC,CAAA;AAED,MAAM,kCAAkC,GAAG,CAAC,GAAiB,EAAE,QAAkB,EAAE,EAAE;;IACnF,IAAI,IAAI,GAAG,MAAA,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mCAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAA;IACrE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IACtC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IACxD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,sCAAsC,GAAG,CAAC,GAAiB,EAAE,QAAkB,EAAE,EAAE;;IACvF,IAAI,IAAI,GAAG,MAAA,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mCAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAA;IACrE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAc,EAAoB,EAAE;IACtF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA"}
|
|
@@ -9,6 +9,8 @@ import { ProgramInstans } from '../mapProgramInstans';
|
|
|
9
9
|
import { ProgramTillfalle } from '../mapProgramTillfalle';
|
|
10
10
|
import { SearchApi } from '../search/types';
|
|
11
11
|
import { ProgramCurriculum } from '../utils/programUtil';
|
|
12
|
+
import { ProgramSyllabus } from '../mapProgramSyllabus';
|
|
13
|
+
import { SupportApi } from '../supportApis/createSupportApis';
|
|
12
14
|
export type OmKursenLadokApiClient = {
|
|
13
15
|
getLatestCourseVersion: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
|
|
14
16
|
getLatestCourseVersionIncludingCancelled: (courseCode: string, language: Language) => Promise<(Course & ResponseInfo) | ResponseInfo>;
|
|
@@ -28,9 +30,10 @@ export type OmKursenLadokApiClient = {
|
|
|
28
30
|
}>;
|
|
29
31
|
getUtbildningstilfalleStructure: (utbildningstillfalleUID: string, language: Language) => Promise<any>;
|
|
30
32
|
getCourseSyllabus: (courseCode: string, semester: string, language: Language) => Promise<KursPlan> | undefined;
|
|
31
|
-
getProgramSyllabus: (courseCode: string, semester: string, language: Language) =>
|
|
33
|
+
getProgramSyllabus: (courseCode: string, semester: string, language: Language) => Promise<ProgramSyllabus>;
|
|
32
34
|
getCourseSyllabuses: (courseCode: string, language: Language) => Promise<KursPlan[]> | undefined;
|
|
33
35
|
getAllGradingScales: () => Promise<any>;
|
|
34
36
|
getAllGradingScalesCodes: () => Promise<any>;
|
|
35
37
|
getPeriods: () => Promise<MellanlagringResponse<Period>>;
|
|
38
|
+
Support: SupportApi;
|
|
36
39
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LadokMellanlagerApiClient, Strukturdel } from '@kth/ladok-mellanlager-client';
|
|
1
|
+
import { Fritext, LadokMellanlagerApiClient, Strukturdel } from '@kth/ladok-mellanlager-client';
|
|
2
2
|
import { Language } from './languageUtil';
|
|
3
3
|
import { StructurePartInstance } from '../mapStructureCourses';
|
|
4
4
|
import { StructurePartVersion } from '../mapStructurePartVersions';
|
|
@@ -23,7 +23,7 @@ export declare const handleError: (message: string, error?: any) => {
|
|
|
23
23
|
error: string;
|
|
24
24
|
details: any;
|
|
25
25
|
};
|
|
26
|
-
export declare const fetchStructureByTillfalleUid: (uid: string, ladokClient: LadokMellanlagerApiClient) => Promise<
|
|
26
|
+
export declare const fetchStructureByTillfalleUid: (uid: string, ladokClient: LadokMellanlagerApiClient) => Promise<import("@kth/ladok-mellanlager-client").UtbildningstillfalleStruktur | undefined>;
|
|
27
27
|
export declare const fetchStructureByInstansUid: (uid: string, ladokClient: LadokMellanlagerApiClient) => Promise<Strukturdel[]>;
|
|
28
28
|
export declare const fetchStructurePartInstances: (utbildningstillfalleUIDn: string[], ladokClient: LadokMellanlagerApiClient) => Promise<(import("@kth/ladok-mellanlager-client").UtbildningstillfalleSlim | undefined)[]>;
|
|
29
29
|
export declare const fetchStructurePartsVersions: (utbildningsinstansUIDn: string[], ladokClient: LadokMellanlagerApiClient) => Promise<(import("@kth/ladok-mellanlager-client").UtbildningsinstansSlim | undefined)[]>;
|
|
@@ -33,6 +33,7 @@ type CategorizedStrukturdel = Strukturdel & {
|
|
|
33
33
|
export declare const fetchAndCategorizeStructureParts: (utbildningstillfalleUID: string, language: Language, ladokClient: LadokMellanlagerApiClient) => Promise<{
|
|
34
34
|
structureCourses: ProgramCourse[];
|
|
35
35
|
structureSpecializations: StructurePartInstance[];
|
|
36
|
+
freeTexts: Fritext[];
|
|
36
37
|
}>;
|
|
37
38
|
export declare const fetchProgramStructure: (utbildningstillfalleUID: string, language: Language, ladokClient: LadokMellanlagerApiClient) => Promise<ProgramCurriculumFromStructure[]>;
|
|
38
39
|
export {};
|
|
@@ -20,10 +20,9 @@ const handleError = (message, error) => {
|
|
|
20
20
|
};
|
|
21
21
|
exports.handleError = handleError;
|
|
22
22
|
const fetchStructureByTillfalleUid = (uid, ladokClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
-
var _a;
|
|
24
23
|
try {
|
|
25
24
|
const struktur = yield ladokClient.utbildningstillfalleStruktur(uid);
|
|
26
|
-
return
|
|
25
|
+
return struktur === null || struktur === void 0 ? void 0 : struktur.data;
|
|
27
26
|
}
|
|
28
27
|
catch (error) {
|
|
29
28
|
throw (0, exports.handleError)('Failed to fetch structure', error);
|
|
@@ -197,14 +196,16 @@ function mergeStructurePartInstancesAndVersions(filteredMappedStructurePartsDivi
|
|
|
197
196
|
});
|
|
198
197
|
}
|
|
199
198
|
const fetchAndCategorizeStructureParts = (utbildningstillfalleUID, language, ladokClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
200
|
-
const
|
|
201
|
-
const
|
|
199
|
+
const structureData = yield (0, exports.fetchStructureByTillfalleUid)(utbildningstillfalleUID, ladokClient);
|
|
200
|
+
const { Strukturdelar = [], Fritexter: freeTexts = [] } = structureData || {};
|
|
201
|
+
const categorizedStrukturParts = categorizeStructureParts(Strukturdelar);
|
|
202
202
|
const structurePartsDevidedByType = yield fetchStructurePartsByType(categorizedStrukturParts, language, ladokClient);
|
|
203
203
|
const { filteredMappedStructurePartsDividedByType, specializationListFromStructure } = separateSpecializations(structurePartsDevidedByType);
|
|
204
204
|
const filteredMappedStructurePartInstancesAndVersions = yield mergeStructurePartInstancesAndVersions(filteredMappedStructurePartsDividedByType, ladokClient, language);
|
|
205
205
|
return {
|
|
206
206
|
structureCourses: filteredMappedStructurePartInstancesAndVersions,
|
|
207
207
|
structureSpecializations: specializationListFromStructure,
|
|
208
|
+
freeTexts,
|
|
208
209
|
};
|
|
209
210
|
});
|
|
210
211
|
exports.fetchAndCategorizeStructureParts = fetchAndCategorizeStructureParts;
|
|
@@ -218,12 +219,13 @@ const getMainProgramInstanceData = (uid, language, ladokClient) => __awaiter(voi
|
|
|
218
219
|
const omfattning = programDetails.data.Tillfallesperioder.reduce((sum, period) => sum + period.Omfattningsvarde, 0);
|
|
219
220
|
const startperiod = (0, ladok_attributvarde_utils_1.extractGrunddata)(programDetails.data.Attributvarden, 'utbildning.attribut.startperiod');
|
|
220
221
|
const lengthInStudyYears = Math.ceil(Number(omfattning) / 60);
|
|
221
|
-
const { structureCourses, structureSpecializations } = yield (0, exports.fetchAndCategorizeStructureParts)(uid, language, ladokClient);
|
|
222
|
+
const { structureCourses, structureSpecializations, freeTexts } = yield (0, exports.fetchAndCategorizeStructureParts)(uid, language, ladokClient);
|
|
222
223
|
return {
|
|
223
224
|
startperiod,
|
|
224
225
|
lengthInStudyYears,
|
|
225
226
|
structureCourses,
|
|
226
227
|
structureSpecializations,
|
|
228
|
+
freeTexts,
|
|
227
229
|
};
|
|
228
230
|
});
|
|
229
231
|
const mapSpecializationCurriculums = (specializations, startperiodCode, lengthInStudyYears, language, ladokClient, allPeriods) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -234,11 +236,11 @@ const mapSpecializationCurriculums = (specializations, startperiodCode, lengthIn
|
|
|
234
236
|
.filter(Boolean)
|
|
235
237
|
.map(entity => (0, mapStructurePartVersions_1.mapStructurePartVersions)(entity, language));
|
|
236
238
|
const specializationsCourseListFromStructure = yield Promise.all(tillfalleUids.map((uid) => __awaiter(void 0, void 0, void 0, function* () {
|
|
237
|
-
const { structureCourses } = yield (0, exports.fetchAndCategorizeStructureParts)(uid, language, ladokClient);
|
|
238
|
-
return structureCourses;
|
|
239
|
+
const { structureCourses, freeTexts } = yield (0, exports.fetchAndCategorizeStructureParts)(uid, language, ladokClient);
|
|
240
|
+
return { structureCourses, freeTexts };
|
|
239
241
|
})));
|
|
240
242
|
return mappedSpecializations.map((spec, index) => ({
|
|
241
|
-
studyYears: (0, studyYearUtil_1.generateStudyYearData)(specializationsCourseListFromStructure[index], allPeriods, startperiodCode, lengthInStudyYears),
|
|
243
|
+
studyYears: (0, studyYearUtil_1.generateStudyYearData)(specializationsCourseListFromStructure[index].structureCourses, specializationsCourseListFromStructure[index].freeTexts, allPeriods, startperiodCode, lengthInStudyYears),
|
|
242
244
|
programmeSpecialization: {
|
|
243
245
|
programmeSpecializationCode: spec.kod,
|
|
244
246
|
title: spec.benamning,
|
|
@@ -247,12 +249,12 @@ const mapSpecializationCurriculums = (specializations, startperiodCode, lengthIn
|
|
|
247
249
|
});
|
|
248
250
|
const fetchProgramStructure = (utbildningstillfalleUID, language, ladokClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
249
251
|
try {
|
|
250
|
-
const { startperiod, lengthInStudyYears, structureCourses, structureSpecializations } = yield getMainProgramInstanceData(utbildningstillfalleUID, language, ladokClient);
|
|
252
|
+
const { startperiod, lengthInStudyYears, structureCourses, structureSpecializations, freeTexts } = yield getMainProgramInstanceData(utbildningstillfalleUID, language, ladokClient);
|
|
251
253
|
const periodData = yield ladokClient.period(); // TODO: Use cached values
|
|
252
254
|
if (periodData.type === 'error') {
|
|
253
255
|
throw new Error(`API error: ${periodData.responseInfo.message}`);
|
|
254
256
|
}
|
|
255
|
-
const mainStudyYears = (0, studyYearUtil_1.generateStudyYearData)(structureCourses, periodData.data.Period, startperiod === null || startperiod === void 0 ? void 0 : startperiod.code, lengthInStudyYears);
|
|
257
|
+
const mainStudyYears = (0, studyYearUtil_1.generateStudyYearData)(structureCourses, freeTexts, periodData.data.Period, startperiod === null || startperiod === void 0 ? void 0 : startperiod.code, lengthInStudyYears);
|
|
256
258
|
const specializationCurriculums = yield mapSpecializationCurriculums(structureSpecializations, startperiod === null || startperiod === void 0 ? void 0 : startperiod.code, lengthInStudyYears, language, ladokClient, periodData.data.Period);
|
|
257
259
|
return [{ studyYears: mainStudyYears }, ...specializationCurriculums];
|
|
258
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"programStrukturUtil.js","sourceRoot":"","sources":["../../src/utils/programStrukturUtil.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"programStrukturUtil.js","sourceRoot":"","sources":["../../src/utils/programStrukturUtil.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ const programStrukturUtil_1 = require("./programStrukturUtil");
|
|
|
25
25
|
const courseSyllabusUtil_1 = require("./courseSyllabusUtil");
|
|
26
26
|
const mapProgramSyllabus_1 = require("../mapProgramSyllabus");
|
|
27
27
|
const SEMESTER_FOR_START_READING_STRUCTURES = {
|
|
28
|
-
code: '
|
|
28
|
+
code: 'HT2025', // we will increase 2025 by {lengthInStudyYear} (maximum study year that we have for a program) since there can be ongoing programs until 2025
|
|
29
29
|
year: 2025,
|
|
30
30
|
}; // Based on the following document: https://confluence.sys.kth.se/confluence/pages/viewpage.action?pageId=262933569
|
|
31
31
|
const DATE_FOR_START_READING_SYLLABUSES = '1998-01-01';
|
|
@@ -74,8 +74,18 @@ const hasCourseListMarking = (lokalmarkning) => {
|
|
|
74
74
|
attr.markningsvarde.code === ladok_attributvarde_utils_1.MarkningsvardeCode.Ja)) !== null && _a !== void 0 ? _a : false);
|
|
75
75
|
};
|
|
76
76
|
exports.hasCourseListMarking = hasCourseListMarking;
|
|
77
|
+
const getTerminKodStartForFetchStructures = (programLengthInYears) => {
|
|
78
|
+
/*
|
|
79
|
+
* Calculates the earliest term code (`terminKodStart`) from which to start reading program structures to find activeProgramTerms.
|
|
80
|
+
*
|
|
81
|
+
* Example: If the current semester is HT2025 and the program runs for 3 years,
|
|
82
|
+
* we calculate HT2022 to ensure we capture all ongoing or overlapping program instances.
|
|
83
|
+
*/
|
|
84
|
+
const startYear = SEMESTER_FOR_START_READING_STRUCTURES.year - programLengthInYears + 1;
|
|
85
|
+
return `HT${startYear}`;
|
|
86
|
+
};
|
|
77
87
|
const getProgramTerms = (program, oldestProgram, language, ladokClient) => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
-
var _a, _b, _c;
|
|
88
|
+
var _a, _b, _c, _d;
|
|
79
89
|
const { kod, sistaAntagningstermin } = program;
|
|
80
90
|
const transformedSistaAntagningstermin = sistaAntagningstermin
|
|
81
91
|
? (0, periodUtil_1.transformDigitsInPeriod)(sistaAntagningstermin)
|
|
@@ -95,23 +105,27 @@ const getProgramTerms = (program, oldestProgram, language, ladokClient) => __awa
|
|
|
95
105
|
kodEllerBenamning: kod,
|
|
96
106
|
baraSistaVersion: 'false',
|
|
97
107
|
striktKod: 'true',
|
|
98
|
-
terminKodStart:
|
|
99
|
-
attributVarden: 'status,utbildning.attribut.lokalmarkning',
|
|
108
|
+
terminKodStart: getTerminKodStartForFetchStructures(program.lengthInStudyYears),
|
|
109
|
+
attributVarden: 'status,utbildning.attribut.lokalmarkning,utbildning.attribut.startperiod',
|
|
100
110
|
antalTraffar: '100',
|
|
101
111
|
};
|
|
102
112
|
const responseForStructures = yield ladokClient.sokProgramTillfalleSlim(requestObjectForStructures);
|
|
103
113
|
// 2. searching for structures
|
|
114
|
+
const skipSyllabusesCheck = !!((_a = oldestProgram.giltigFrom) === null || _a === void 0 ? void 0 : _a.startDay) && oldestProgram.giltigFrom.startDay > SEMESTER_FOR_END_READING_SYLLABUSES.date;
|
|
115
|
+
let responseForSyllabuses;
|
|
104
116
|
// here we will sort out invalid syllabuses terms as well, we need syllabuses being valid after the giltigFran data and before sistaAntagningstermin date
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
117
|
+
if (!skipSyllabusesCheck) {
|
|
118
|
+
const requestObjectForSyllabuses = {
|
|
119
|
+
kodEllerBenamning: kod,
|
|
120
|
+
striktKod: 'true',
|
|
121
|
+
tillstand: 'BESLUTAD',
|
|
122
|
+
attributVarden: 'utbildning.lokalt.attribut.29.utgava',
|
|
123
|
+
giltigTill: (_b = lastAdmissionTermData === null || lastAdmissionTermData === void 0 ? void 0 : lastAdmissionTermData.TomDatum) !== null && _b !== void 0 ? _b : SEMESTER_FOR_END_READING_SYLLABUSES.date,
|
|
124
|
+
giltigFran: (_d = (_c = oldestProgram.giltigFrom) === null || _c === void 0 ? void 0 : _c.startDay) !== null && _d !== void 0 ? _d : DATE_FOR_START_READING_SYLLABUSES, // we are not able to add giltigTill without giltigFran so this is added for that purpose only
|
|
125
|
+
antalTraffar: '100',
|
|
126
|
+
};
|
|
127
|
+
responseForSyllabuses = yield ladokClient.sokPlanSlim(requestObjectForSyllabuses);
|
|
128
|
+
}
|
|
115
129
|
// 3. searching for sylabuses
|
|
116
130
|
let programTermsFromStructures = [];
|
|
117
131
|
if (responseForStructures === null || responseForStructures === void 0 ? void 0 : responseForStructures.items) {
|