From 39940ed3c68a17e154b152a498e9b9ff328557d7 Mon Sep 17 00:00:00 2001 From: eltfshr Date: Sat, 4 May 2024 14:43:27 +0000 Subject: [PATCH 1/3] feat: include program year in student outcomes --- entity/course_portfolio.go | 2 ++ usecase/course_portfolio.go | 2 ++ 2 files changed, 4 insertions(+) diff --git a/entity/course_portfolio.go b/entity/course_portfolio.go index 3993765..6da0ef7 100644 --- a/entity/course_portfolio.go +++ b/entity/course_portfolio.go @@ -217,6 +217,7 @@ type StudentPloData struct { ProgramLearningOutcomeId string `json:"programLearningOutcomeId"` Code string `json:"code"` DescriptionThai string `json:"descriptionThai"` + ProgramYear int `json:"programYear"` Courses []StudentCourseData `json:"courses"` } @@ -238,6 +239,7 @@ type StudentPlosGorm struct { ProgramLearningOutcomeId string `gorm:"column:plo_id"` ProgramLearningOutcomeCode string `gorm:"column:plo_code"` DescriptionThai string + ProgramYear int CourseId string CourseCode string CourseName string diff --git a/usecase/course_portfolio.go b/usecase/course_portfolio.go index 4cf425b..bb3815c 100644 --- a/usecase/course_portfolio.go +++ b/usecase/course_portfolio.go @@ -596,6 +596,7 @@ func (u coursePortfolioUseCase) GetOutcomesByStudentId(studentId string) ([]enti ProgramLearningOutcomeId: record.ProgramLearningOutcomeId, Code: record.ProgramLearningOutcomeCode, DescriptionThai: record.DescriptionThai, + ProgramYear: record.ProgramYear, }) } else { isExist := false @@ -610,6 +611,7 @@ func (u coursePortfolioUseCase) GetOutcomesByStudentId(studentId string) ([]enti ProgramLearningOutcomeId: record.ProgramLearningOutcomeId, Code: record.ProgramLearningOutcomeCode, DescriptionThai: record.DescriptionThai, + ProgramYear: record.ProgramYear, }) } } From 6657466aa17d32ea427dd685e3ea7c87708f7e1d Mon Sep 17 00:00:00 2001 From: eltfshr Date: Sat, 4 May 2024 14:43:42 +0000 Subject: [PATCH 2/3] feat: ignore withdrawn student from outcomes --- repository/course_portfolio.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/repository/course_portfolio.go b/repository/course_portfolio.go index f3adea0..dbc82c2 100644 --- a/repository/course_portfolio.go +++ b/repository/course_portfolio.go @@ -105,6 +105,7 @@ func (r coursePortfolioRepositoryGorm) evaluateTabeeOutcomes(courseId string, se ), clos AS ( SELECT + target_course.id AS course_id, course_learning_outcome.id, expected_passing_assignment_percentage, program_outcome_id @@ -119,16 +120,19 @@ func (r coursePortfolioRepositoryGorm) evaluateTabeeOutcomes(courseId string, se assignment.expected_score_percentage, clos.expected_passing_assignment_percentage, clos.id AS c_id, - assignment.id AS a_id + assignment.id AS a_id, + course_id FROM clos JOIN clo_assignment AS ca ON ca.course_learning_outcome_id = clos.id JOIN assignment ON ca.assignment_id = assignment.id WHERE assignment.is_included_in_clo IS True ), scores AS ( - SELECT * + SELECT assignments.*, score.* FROM assignments JOIN score ON score.assignment_id = a_id + JOIN enrollment ON enrollment.course_id = assignments.course_id AND enrollment.student_id = score.student_id + WHERE status != 'WITHDRAW' ), student_passing_assignment AS ( SELECT @@ -433,9 +437,11 @@ func (r coursePortfolioRepositoryGorm) evaluateOutcomesAllCourses(selector Tabee WHERE assignment.is_included_in_clo IS True ), scores AS ( - SELECT * + SELECT assignments.*, score.* FROM assignments JOIN score ON score.assignment_id = a_id + JOIN enrollment ON enrollment.course_id = assignments.course_id AND enrollment.student_id = score.student_id + WHERE status != 'WITHDRAW' ), student_passing_assignment AS ( SELECT @@ -787,10 +793,11 @@ func (r coursePortfolioRepositoryGorm) evaluateOutcomesByStudentId(studentId str WHERE assignment.is_included_in_clo IS True ), scores AS ( - SELECT * + SELECT assignments.*, score.* FROM assignments JOIN score ON score.assignment_id = a_id - WHERE student_id = ? + JOIN enrollment ON enrollment.course_id = assignments.course_id AND enrollment.student_id = score.student_id + WHERE status != 'WITHDRAW' ), student_passing_assignment AS ( SELECT From 2242e7167fb680ea5534200e794358d2ce6a5361 Mon Sep 17 00:00:00 2001 From: eltfshr Date: Sat, 4 May 2024 14:48:21 +0000 Subject: [PATCH 3/3] fix: add student id back to query --- repository/course_portfolio.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/course_portfolio.go b/repository/course_portfolio.go index dbc82c2..5a04984 100644 --- a/repository/course_portfolio.go +++ b/repository/course_portfolio.go @@ -797,7 +797,7 @@ func (r coursePortfolioRepositoryGorm) evaluateOutcomesByStudentId(studentId str FROM assignments JOIN score ON score.assignment_id = a_id JOIN enrollment ON enrollment.course_id = assignments.course_id AND enrollment.student_id = score.student_id - WHERE status != 'WITHDRAW' + WHERE status != 'WITHDRAW' AND score.student_id = ? ), student_passing_assignment AS ( SELECT