Skip to content

Commit 0f51162

Browse files
Few fixes for broken frontend pages
1 parent b0ebd47 commit 0f51162

File tree

7 files changed

+53
-29
lines changed

7 files changed

+53
-29
lines changed

backend/src/components/assessments/assessments.js

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
'use strict';
2-
const { logApiError, getAccessToken, getData, putData, postData, getCreateOrUpdateUserValue, getDataWithParams, handleExceptionResponse} = require('../utils');
2+
const {
3+
logApiError,
4+
getAccessToken,
5+
getData,
6+
putData,
7+
postData,
8+
getCreateOrUpdateUserValue,
9+
getDataWithParams,
10+
handleExceptionResponse
11+
} = require('../utils');
312
const HttpStatus = require('http-status-codes');
413
const config = require('../../config');
514
const cacheService = require('../cache-service');
6-
const { createMoreFiltersSearchCriteria } = require('./studentFilters');
15+
const {createMoreFiltersSearchCriteria} = require('./studentFilters');
716
const moment = require('moment');
817
const {DateTimeFormatter, LocalDate, LocalDateTime} = require('@js-joda/core');
918
const {FILTER_OPERATION, VALUE_TYPE, CONDITION} = require('../../util/constants');
@@ -95,7 +104,7 @@ async function getAssessmentStudentsPaginated(req, res) {
95104
};
96105

97106
const token = getAccessToken(req);
98-
let data = await getDataWithParams(token,`${config.get('assessments:assessmentStudentsURL')}/paginated`, params);
107+
let data = await getDataWithParams(token, `${config.get('assessments:assessmentStudentsURL')}/paginated`, params);
99108

100109
if (req?.query?.returnKey) {
101110
let result = data?.content.map((student) => student[req?.query?.returnKey]);
@@ -115,7 +124,7 @@ async function getAssessmentStudentsPaginated(req, res) {
115124
}
116125
}
117126

118-
async function postAssessmentStudent(req, res){
127+
async function postAssessmentStudent(req, res) {
119128
try {
120129
const payload = {
121130
...req.body,
@@ -133,9 +142,9 @@ async function postAssessmentStudent(req, res){
133142
}
134143

135144
async function getAssessmentStudentByID(req, res) {
136-
try {
145+
try {
137146
const token = getAccessToken(req);
138-
let assessmentStudent = getAssessmentStudent(req.params.assessmentStudentID, res, token, req.session?.correlationID);
147+
let assessmentStudent = await getAssessmentStudent(req.params.assessmentStudentID, res, token, req.session?.correlationID);
139148
return res.status(200).json(includeAssessmentStudentProps(assessmentStudent));
140149
} catch (e) {
141150
if (e?.status === 404) {
@@ -159,21 +168,21 @@ async function removeAssessmentStudents(req, res) {
159168
}
160169

161170
function includeAssessmentStudentProps(assessmentStudent) {
162-
if(assessmentStudent) {
171+
if (assessmentStudent) {
163172
let school = cacheService.getSchoolBySchoolID(assessmentStudent.schoolOfRecordSchoolID);
164173
let assessmentCenter = cacheService.getSchoolBySchoolID(assessmentStudent.assessmentCenterID);
165174

166-
if(school) {
175+
if (school) {
167176
assessmentStudent.schoolName_desc = getSchoolName(school);
168177
}
169-
170-
if(assessmentCenter) {
178+
179+
if (assessmentCenter) {
171180
assessmentStudent.assessmentCenterName_desc = getSchoolName(assessmentCenter);
172-
}
181+
}
173182

174183
assessmentStudent.assessmentTypeName_desc = assessmentStudent.assessmentTypeCode;
175184
assessmentStudent.provincialSpecialCaseName_desc = assessmentStudent.provincialSpecialCaseCode ? cacheService.getSpecialCaseTypeLabelByCode(assessmentStudent.provincialSpecialCaseCode) : null;
176-
assessmentStudent.sessionName_desc = moment(assessmentStudent.courseMonth, 'MM').format('MMMM') +' '+assessmentStudent.courseYear;
185+
assessmentStudent.sessionName_desc = moment(assessmentStudent.courseMonth, 'MM').format('MMMM') + ' ' + assessmentStudent.courseYear;
177186
}
178187
return assessmentStudent;
179188
}
@@ -187,7 +196,7 @@ async function updateAssessmentStudentByID(req, res) {
187196
try {
188197
const token = getAccessToken(req);
189198
const payload = req.body;
190-
payload.updateUser = getCreateOrUpdateUserValue(req);
199+
payload.updateUser = getCreateOrUpdateUserValue(req);
191200
payload.updateDate = null;
192201
payload.createDate = null;
193202
const result = await putData(token, payload, `${config.get('assessments:assessmentStudentsURL')}/${req.params.assessmentStudentID}`, getCreateOrUpdateUserValue(req));
@@ -250,7 +259,7 @@ function getSchoolName(school) {
250259
return school.mincode + ' - ' + school.schoolName;
251260
}
252261

253-
function getAssessmentSpecialCases(req, res) {
262+
function getAssessmentSpecialCases(req, res) {
254263
try {
255264
const codes = cacheService.getAllAssessmentSpecialCases();
256265
return res.status(HttpStatus.OK).json(Object.fromEntries(codes));

backend/src/validations/assessments.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
const { object, string, boolean, number, array } = require('yup');
22
const { baseRequestSchema } = require('./base');
33

4+
45
const putStudentAssessmentSchema = object({
56
body: object({
67
assessmentStudentID: string().nonNullable(),
78
sessionID:string().nonNullable(),
89
schoolOfRecordSchoolID: string().nonNullable(),
9-
assessmentCenterID: string().nonNullable(),
1010
assessmentID:string().nonNullable(),
1111
assessmentTypeCode: string().nonNullable(),
1212
studentID: string().nonNullable(),
1313
pen: string().max(9).nonNullable(),
14-
localID: string().max(12).nonNullable(),
14+
localID: string().max(12).nullable().optional(),
1515
givenName: string().max(25).nonNullable(),
1616
surname: string().max(25).nonNullable(),
1717
localCourseID: string().max(20).nullable().optional(),
@@ -20,6 +20,14 @@ const putStudentAssessmentSchema = object({
2020
provincialSpecialCaseCode: string().max(1).nullable().optional(),
2121
courseStatusCode: string().max(1).nullable().optional(),
2222
numberOfAttempts: number().nullable().optional(),
23+
schoolAtWriteSchoolID: string().nullable().optional(),
24+
assessmentCenterSchoolID: string().nullable().optional(),
25+
assessmentFormID: string().nullable().optional(),
26+
adaptedAssessmentCode: string().nullable().optional(),
27+
irtScore: number().nullable().optional(),
28+
localAssessmentID: string().nullable().optional(),
29+
markingSession: string().nullable().optional(),
30+
downloadDate: string().nullable().optional(),
2331
courseMonth: number().optional(),
2432
courseYear: number().optional(),
2533
assessmentStudentValidationIssues: array().of(object({
@@ -42,18 +50,25 @@ const postAssessmentStudentSchema = object({
4250
body: object({
4351
sessionID:string().nonNullable(),
4452
schoolOfRecordSchoolID: string().nonNullable(),
45-
assessmentCenterID: string().nonNullable(),
4653
assessmentID:string().nonNullable(),
4754
assessmentTypeCode: string().nonNullable(),
4855
studentID: string().nullable().optional(),
4956
assessmentStudentID: string().nullable().optional(),
5057
courseStatusCode: string().nullable().optional(),
5158
numberOfAttempts: string().nullable().optional(),
5259
pen: string().max(9).nonNullable(),
53-
localID: string().max(12).nonNullable(),
60+
localID: string().max(12).nullable().optional(),
5461
givenName: string().max(25).nonNullable(),
5562
surname: string().max(25).nonNullable(),
5663
isElectronicExam: boolean().nullable().optional(),
64+
schoolAtWriteSchoolID: string().nullable().optional(),
65+
assessmentCenterSchoolID: string().nullable().optional(),
66+
assessmentFormID: string().nullable().optional(),
67+
adaptedAssessmentCode: string().nullable().optional(),
68+
irtScore: number().nullable().optional(),
69+
localAssessmentID: string().nullable().optional(),
70+
markingSession: string().nullable().optional(),
71+
downloadDate: string().nullable().optional(),
5772
proficiencyScore: number().nullable().optional(),
5873
localCourseID: string().max(20).nullable().optional(),
5974
provincialSpecialCaseCode: string().max(1).nullable().optional(),

frontend/src/components/assessments/registrations/StudentRegistrations.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@
2727
text="Add Registration"
2828
prepend-icon="mdi-plus"
2929
class="mr-1 mb-1"
30-
variant="outlined"
3130
@click="openCreateStudentRegDialog"
3231
/>
3332
<v-btn
3433
id="removeStudentReg"
3534
color="#003366"
3635
text="Remove Registration"
37-
prepend-icon="mdi-minus"
36+
variant="outlined"
37+
prepend-icon="mdi-trash-can-outline"
3838
class="mr-1 mb-1"
3939
:disabled="selectedAssessmentStudents.length <= 0"
4040
@click="removeStudents"
@@ -244,7 +244,7 @@ export default {
244244
}
245245
},
246246
getAssessmentStudents() {
247-
this.loading = true;
247+
this.isLoading = true;
248248
let sort = {assessmentStudentID: 'ASC',};
249249
let assessmentSearchParams = cloneDeep(this.filterSearchParams);
250250
if (! this.sessionID) {
@@ -279,7 +279,7 @@ export default {
279279
if (!confirmation) {
280280
return;
281281
}
282-
this.loading = true;
282+
this.isLoading = true;
283283
let payload = this.selectedAssessmentStudents.map(sas => sas.assessmentStudentID);
284284
ApiService.apiAxios.post(`${ApiRoutes.assessments.ASSESSMENT_REGISTRATIONS}/${this.userInfo.activeInstituteType.toLowerCase()}/students/remove`, payload)
285285
.then(() => {
@@ -290,7 +290,7 @@ export default {
290290
console.error(error);
291291
setFailureAlert(error?.response?.data?.message ? error?.response?.data?.message : 'An error occurred while trying to remove the registrations. Please try again later.');
292292
}).finally(() => {
293-
this.loading = false;
293+
this.isLoading = false;
294294
});
295295
},
296296
applyFilters($event) {

frontend/src/components/assessments/registrations/StudentRegistrationsCustomTable.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
{{ props.item['surname'] }}, {{ props.item['givenName'] }}
6969
</span>
7070
<span v-else-if="props.item[column.key]">{{ props.item[column.key] }}</span>
71+
<span v-else-if="column.key === 'select'"></span>
7172
<span v-else>-</span>
7273
</td>
7374
</tr>

frontend/src/components/assessments/registrations/forms/AddStudentRegistration.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@
6161
variant="underlined"
6262
:maxlength="25"
6363
density="compact"
64-
:rules="[rules.required(), rules.number()]"
6564
/>
6665
</v-col>
6766
</v-row>
@@ -137,7 +136,7 @@
137136
<v-col>
138137
<v-autocomplete
139138
id="AssessmentCenter"
140-
v-model="newStudentDetail.assessmentCenterID"
139+
v-model="newStudentDetail.assessmentCenterSchoolID"
141140
variant="underlined"
142141
:items="assessmentCenterSearchNames"
143142
label="Assessment Center"
@@ -279,7 +278,7 @@ export default {
279278
newStudentDetail: {
280279
assessmentID: null,
281280
schoolOfRecordSchoolID: null,
282-
assessmentCenterID: null,
281+
assessmentCenterSchoolID: null,
283282
givenName: null,
284283
surname: null,
285284
pen: null,

frontend/src/components/assessments/registrations/forms/EditStudentRegistration.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
/>
106106
<v-autocomplete
107107
id="AssessmentCenter"
108-
v-model="assessmentStudentDetail.assessmentCenterID"
108+
v-model="assessmentStudentDetail.assessmentCenterSchoolID"
109109
variant="underlined"
110110
:items="assessmentCenterSearchNames"
111111
label="Assessment Center"

frontend/src/router.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ const router = createRouter({
378378
},
379379
},
380380
{
381-
path: '/assessment-sessions/details',
381+
path: '/assessment-sessions/district/details',
382382
name: 'district-assessment-session-detail',
383383
component: AssessmentSessionDetail,
384384
props: true,
@@ -389,7 +389,7 @@ const router = createRouter({
389389
},
390390
},
391391
{
392-
path: '/assessment-sessions/details',
392+
path: '/assessment-sessions/school/details',
393393
name: 'school-assessment-session-detail',
394394
component: AssessmentSessionDetail,
395395
props: true,

0 commit comments

Comments
 (0)